Jump to content

[SOLVED] Parse error: syntax error, unexpected '<' in...


Recommended Posts

Hi to all!

 

After installing a couple of hacks on my vBulletin board yesterday, the following error appeared in the members list page of the forum.

 

Parse error: syntax error, unexpected '<' in /home/needa/public_html/memberlist.php(831) : eval()'d code on line 14

 

http://www.afeastoffumetti.org/memberlist.php

 

The error doesn't appear to be causing any problems on my board, although I haven't checked every function. 

 

I opened the above file and line 14 reads:

 

error_reporting(E_ALL & ~E_NOTICE);

 

I can't see anything wrong with that, but then I'm a PHP beginner, so my "expertise" at spotting errors in code is extremely limited.  Also, I know that PHP can sometimes identify the wrong line of code when pointing out errors, so line 14 might not contain the offending code.  At any rate, here is the code.

 

<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.6.8 - Licence Number VBFCF52109
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000-2007 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'memberlist');

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
'user',
'search',
'cprofilefield',
'reputationlevel',
);

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array(
);

// pre-cache templates used by specific actions
$actiontemplates = array(
'none' => array(
	'memberlist',
	'memberlist_letter',
	'memberlist_results_header',
	'memberlist_resultsbit',
	'memberlist_resultsbit_field',

	'im_aim',
	'im_icq',
	'im_msn',
	'im_yahoo',
	'im_skype',

	'forumdisplay_sortarrow',
	'postbit_reputation',
),
'search' => array(
	'memberlist_search',
	'memberlist_search_radio',
	'memberlist_search_select',
	'memberlist_search_select_multiple',
	'memberlist_search_select',
	'memberlist_search_textbox',
	'memberlist_search_optional_input',

	'userfield_select_option',
	'userfield_radio_option',
	'userfield_checkbox_option',
)
);

$actiontemplates['getall'] =& $actiontemplates['none'];

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once(DIR . '/includes/functions_misc.php');
require_once(DIR . '/includes/class_postbit.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

// enabled check
if (!$vbulletin->options['enablememberlist'])
{
eval(standard_error(fetch_error('nomemberlist')));
}

// permissions check
if (!($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']))
{
print_no_permission();
}

// default action
if (empty($_REQUEST['do']))
{
$_REQUEST['do'] = 'getall';
}

($hook = vBulletinHook::fetch_hook('memberlist_start')) ? eval($hook) : false;

$perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT);
$sortfield = $vbulletin->input->clean_gpc('r', 'sortfield', TYPE_STR);
$sortorder = $vbulletin->input->clean_gpc('r', 'sortorder', TYPE_STR);
$usergroupid = $vbulletin->input->clean_gpc('r', 'usergroupid', TYPE_UINT);
$ltr = $vbulletin->input->clean_gpc('r', 'ltr', TYPE_NOHTML);
$pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT);

$vbulletin->input->clean_array_gpc('r', array(
'ausername'      => TYPE_STR,
'homepage'       => TYPE_STR,
'email'          => TYPE_STR,
'icq'            => TYPE_NOHTML,
'aim'            => TYPE_STR,
'yahoo'          => TYPE_STR,
'msn'            => TYPE_STR,
'skype'          => TYPE_STR,
'joindateafter'  => TYPE_STR,
'joindatebefore' => TYPE_STR,
'lastpostafter'  => TYPE_STR,
'lastpostbefore' => TYPE_STR,
'postslower'     => TYPE_UINT,
'postsupper'     => TYPE_UINT,
'userfield'      => TYPE_NOCLEAN,
));

// set defaults and sensible values

if ($sortfield == '')
{
$sortfield = 'username';
}
if ($sortorder == '')
{
$sortorder = 'asc';
}

// which fields to display?
$show['homepagecol'] = bitwise($vbulletin->options['memberlistfields'], 1);
$show['searchcol'] = bitwise($vbulletin->options['memberlistfields'], 2);
$show['datejoinedcol'] = bitwise($vbulletin->options['memberlistfields'], 4);
$show['postscol'] = bitwise($vbulletin->options['memberlistfields'], ;
$show['usertitlecol'] = bitwise($vbulletin->options['memberlistfields'], 16);
$show['lastvisitcol'] = bitwise($vbulletin->options['memberlistfields'], 32);
$show['reputationcol'] = iif(bitwise($vbulletin->options['memberlistfields'], 64) AND $vbulletin->options['reputationenable'], 1, 0);
$show['avatarcol'] = iif(bitwise($vbulletin->options['memberlistfields'], 128) AND $vbulletin->options['avatarenabled'], 1, 0);
$show['birthdaycol'] = bitwise($vbulletin->options['memberlistfields'], 256);
$show['agecol'] = bitwise($vbulletin->options['memberlistfields'], 512);
$show['emailcol'] = (bitwise($vbulletin->options['memberlistfields'], 1024) AND ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canemailmember'] OR ($vbulletin->options['enablepms'] AND $vbulletin->userinfo['permissions']['pmquota'])));
$show['customfields'] = bitwise($vbulletin->options['memberlistfields'], 2048);
$show['imicons'] = bitwise($vbulletin->options['memberlistfields'], 4096);
$show['profilepiccol'] = iif(bitwise($vbulletin->options['memberlistfields'], 8192) AND $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseeprofilepic'], 1, 0);
$show['advancedlink'] = false;

// work out total columns
$totalcols = $show['emailcol'] + $show['homepagecol'] + $show['searchcol'] + $show['datejoinedcol'] + $show['postscol'] + $show['lastvisitcol'] + $show['reputationcol'] + $show['avatarcol'] + $show['birthdaycol'] + $show['agecol'] + $show['profilepiccol'] + $show['imicons'];

// build forum jump
construct_forum_jump();

// #############################################################################
// show results
if ($_REQUEST['do'] == 'getall')
{

// start search timer
$searchstart = microtime();

$show['advancedlink'] = iif (!$usergroupid AND $vbulletin->options['usememberlistadvsearch'], true, false);

// get conditions
$condition = '1=1';
if ($vbulletin->GPC['ausername'])
{
	$condition  .=  " AND username LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['ausername'])) . "%' ";
}

if ($vbulletin->options['usememberlistadvsearch'])
{
	if ($vbulletin->GPC['email'])
	{
		$condition .= " AND email LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['email'])) . "%' ";
	}
	if ($vbulletin->GPC['homepage'])
	{
		$condition .= " AND homepage LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['homepage'])) . "%' ";
	}
	if ($vbulletin->GPC['icq'])
	{
		$condition .= " AND icq LIKE '%" . $db->escape_string_like($vbulletin->GPC['icq']) . "%' ";
	}
	if ($vbulletin->GPC['aim'])
	{
		$condition .= " AND REPLACE(aim, ' ', '') LIKE '%" . $db->escape_string_like(htmlspecialchars_uni(str_replace(' ', '', $vbulletin->GPC['aim']))) . "%' ";
	}
	if ($vbulletin->GPC['yahoo'])
	{
		$condition .= " AND yahoo LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['yahoo'])) . "%' ";
	}
	if ($vbulletin->GPC['msn'])
	{
		$condition .= " AND msn LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['msn'])) . "%' ";
	}
	if ($vbulletin->GPC['skype'])
	{
		$condition .= " AND skype LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($vbulletin->GPC['skype'])) . "%' ";
	}
	if ($vbulletin->GPC['joindateafter'])
	{
		$condition .= " AND joindate > UNIX_TIMESTAMP('" . $db->escape_string(strtolower($vbulletin->GPC['joindateafter'])) . "')";
	}
	if ($vbulletin->GPC['joindatebefore'])
	{
		$condition .= " AND joindate < UNIX_TIMESTAMP('" . $db->escape_string(strtolower($vbulletin->GPC['joindatebefore'])) . "')";
	}
	if ($vbulletin->GPC['lastpostafter'])
	{
		$condition .= " AND lastpost > UNIX_TIMESTAMP('" . $db->escape_string(strtolower($vbulletin->GPC['lastpostafter'])) . "')";
	}
	if ($vbulletin->GPC['lastpostbefore'])
	{
		$condition .= " AND lastpost < UNIX_TIMESTAMP('" . $db->escape_string(strtolower($vbulletin->GPC['lastpostbefore'])) . "')";
	}
	if ($vbulletin->GPC['postslower'])
	{
		$condition .= " AND posts >= " . $vbulletin->GPC['postslower'];
	}
	if ($vbulletin->GPC['postsupper'])
	{
		$condition .= " AND posts < " . $vbulletin->GPC['postsupper'];
	}
}

// Process Custom Fields..
$userfields = '';
$profilefields = $db->query_read_slave("
	SELECT profilefieldid, type, data, optional, memberlist, searchable
	FROM " . TABLE_PREFIX . "profilefield
	WHERE form = 0 "
		. iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), "	AND hidden = 0") . "
	ORDER BY displayorder
");

$urladd = '';
$profileinfo = array();
while ($profilefield = $db->fetch_array($profilefields))
{
	$varname = "field$profilefield[profilefieldid]";
	$optionalvar = $varname . '_opt';
	$profilefield['title'] = $vbphrase[$varname . '_title'];

	if ($profilefield['memberlist'])
	{
		$profilefield['varname'] = $varname;
		if ($profilefield['type'] == 'checkbox' OR $profilefield['type'] == 'select_multiple')
		{
				$profilefield['data'] = unserialize($profilefield['data']);
		}
		$profileinfo[] = $profilefield;
	}

	// Break if this field is not searchable or if the advanced search is disabled
	if (!$profilefield['searchable'] OR !$vbulletin->options['usememberlistadvsearch'])
	{
		continue;
	}

	$value =& $vbulletin->input->clean_gpc('r', $varname, TYPE_NOCLEAN);
	if ($value === null)
	{
		$value = $vbulletin->GPC['userfield']["$varname"];
	}
	$optvalue =& $vbulletin->input->clean_gpc('r', $optionalvar, TYPE_STR);

	$bitwise = 0;
	$sql = '';
	$url = '';

	if (($profilefield['type'] == 'input' OR $profilefield['type'] == 'textarea') AND $value != '')
	{
		$condition .= " AND $varname LIKE '%" . $db->escape_string_like(htmlspecialchars_uni(trim($value))) . "%' ";
		$urladd .= "&$varname=" . urlencode($value);
	}
	else if ($profilefield['type'] == 'radio' OR $profilefield['type'] == 'select')
	{
		if ($optvalue != '' AND $profilefield['optional'])
		{
			$sql = " AND $varname LIKE '%" . $db->escape_string_like(htmlspecialchars_uni($optvalue)) . "%' ";
			$url = "&$varname=" . urlencode($optvalue);
		}
		else if ($value !== '')
		{
			$data = unserialize($profilefield['data']);

			foreach ($data AS $key => $val)
			{
				$key++;
				if ($key == $value)
				{
					$val = trim($val);
					$sql = " AND $varname LIKE '" . $db->escape_string_like($val) . '\' ';
					$url = "&$varname=" . intval($value);
					break;
				}
			}
		}
		else
		{
			continue;
		}

		$condition .= $sql;
		$urladd .= $url;
	}
	else if (($profilefield['type'] == 'checkbox' OR $profilefield['type'] == 'select_multiple') AND is_array($value) AND !empty($value))
	{
		foreach ($value AS $key => $val)
		{
			$condition .= " AND $varname & ". pow(2, $val - 1) . ' ';
			$urladd .= "&$varname" . '[' . urlencode($key) . ']=' . urlencode($val);
		}
	}
}

if ($ltr != '')
{
	if ($ltr == '#')
	{
		$condition = "username NOT REGEXP(\"^[a-zA-Z]\")";
	}
	else
	{
		$ltr = chr(intval(ord($ltr)));
		$condition = 'username LIKE("' . $db->escape_string_like($ltr) . '%")';
	}
}

$show['usergroup'] = iif($usergroupid , true, false);

// Limit to a specific group for usergroup leaders
if ($usergroupid)
{
	// check permission to do authorizations in this group
	if (!$leadergroup = $db->query_first_slave("
		SELECT usergroupleader.usergroupleaderid, usergroup.title
		FROM " . TABLE_PREFIX . "usergroupleader AS usergroupleader
		LEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON (usergroupleader.usergroupid = usergroup.usergroupid)
		WHERE usergroupleader.userid = " . $vbulletin->userinfo['userid'] . "
			AND usergroupleader.usergroupid = $usergroupid
	"))
	{
		print_no_permission();
	}
	$leadergroup['mtitle'] = $vbulletin->usergroupcache["$usergroupid"]['opentag'] . $leadergroup['title'] . $vbulletin->usergroupcache["$usergroupid"]['closetag'];
	$condition .= " AND (FIND_IN_SET('$usergroupid', membergroupids) OR user.usergroupid = $usergroupid)";
	$usergrouplink = "&usergroupid=$usergroupid";
}
else if ($vbulletin->options['memberlistposts'])
{
	$condition .= ' AND posts >= ' . $vbulletin->options['memberlistposts'];
}

$sortorder = strtolower($sortorder);

// specify this if the primary sort will have a lot of tie values (ie, reputation)
$secondarysortsql = '';
switch ($sortfield)
{
	case 'username':
		$sqlsort = 'user.username';
		break;
	case 'joindate':
		$sqlsort = 'user.joindate';
		break;
	case 'posts':
		$sqlsort = 'user.posts';
		break;
	case 'lastvisit':
		$sqlsort = 'lastvisittime';
		break;
	case 'reputation':
		$sqlsort = iif($show['reputationcol'], 'reputationscore', 'user.username');
		$secondarysortsql = ', user.username';
		break;
	case 'age':
		if ($show['agecol'])
		{
			$sqlsort = 'agesort';
			$secondarysortsql = ', user.username';
		}
		else
		{
			$sqlsort = 'user.username';
		}
		break;
	default:
		$sqlsort = 'user.username';
		$sortfield = 'username';
}

if ($sortorder != 'asc')
{
	$sortorder = 'desc';
	$oppositesort = 'asc';
}
else
{ // $sortorder = 'ASC'
	$oppositesort = 'desc';
}

// Seems quicker to grab the ids rather than doing a JOIN
$ids = -1;
$idarray = array(-1);
$hiderepids = -1;
$hidereparray = array();

foreach ($vbulletin->usergroupcache AS $ugroupid => $usergroup)
{
	if ($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['showmemberlist'])
	{
		$ids .= ",$ugroupid";
		$idarray[] = $ugroupid;
	}
	else if ($usergroupid)
	{
		$ids .= ",$ugroupid";
		$idarray[] = $ugroupid;
	}

	if ($usergroup['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canhiderep'])
	{
		$hiderepids .= ",$ugroupid";
		$hidereparray[] = $ugroupid;
	}
}
$selectedletter =& $ltr;

// build letter selector
// start with non-alpha characters
$currentletter = '#';
$linkletter = urlencode('#');
$show['selectedletter'] = $selectedletter == '#' ? true : false;
eval('$letterbits = "' . fetch_template('memberlist_letter') . '";');
// now do alpha-characters
for ($i=65; $i < 91; $i++)
{
	$currentletter = chr($i);
	$linkletter =& $currentletter;
	$show['selectedletter'] = $selectedletter == $currentletter ? true : false;
	eval('$letterbits .= "' . fetch_template('memberlist_letter') . '";');
}

$hook_query_joins = $hook_query_where = '';
($hook = vBulletinHook::fetch_hook('memberlist_query_userscount')) ? eval($hook) : false;

$userscount = $db->query_first_slave("
	SELECT COUNT(*) AS users
	FROM " . TABLE_PREFIX . "user AS user
	LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield USING (userid)
	$hook_query_joins
	WHERE $condition
		AND (user.usergroupid IN ($ids)" . (defined('MEMBERLIST_INCLUDE_SECONDARY') ? (" OR FIND_IN_SET(" . implode(', user.membergroupids) OR FIND_IN_SET(', $idarray) . ", user.membergroupids)") : '') . ")
		$hook_query_where
");
$totalusers = $userscount['users'];

if (!$totalusers)
{
	eval(standard_error(fetch_error('searchnoresults', $displayCommon)));
}

// set defaults
sanitize_pageresults($totalusers, $pagenumber, $perpage, 100, $vbulletin->options['memberlistperpage']);

$sortaddon = ($vbulletin->GPC['postslower']) ? 'postslower=' . $vbulletin->GPC['postslower'] . '&' : '';
$sortaddon .= ($vbulletin->GPC['postsupper']) ? 'postsupper=' . $vbulletin->GPC['postsupper'] . '&' : '';
$sortaddon .= ($vbulletin->GPC['ausername'] != '') ? 'ausername=' . urlencode($vbulletin->GPC['ausername']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['homepage'] != '') ? 'homepage=' . urlencode($vbulletin->GPC['homepage']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['icq'] != '') ? 'icq=' . urlencode($vbulletin->GPC['icq']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['aim'] != '') ? 'aim=' . urlencode($vbulletin->GPC['aim']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['yahoo'] != '') ? 'yahoo=' . urlencode($vbulletin->GPC['yahoo']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['msn'] != '') ? 'msn=' . urlencode($vbulletin->GPC['msn']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['skype'] != '') ? 'skype=' . urlencode($vbulletin->GPC['skype']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['joindateafter'] != '') ? 'joindateafter=' . urlencode($vbulletin->GPC['joindateafter']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['joindatebefore'] != '') ? 'joindatebefore=' . urlencode($vbulletin->GPC['joindatebefore']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['lastpostafter'] != '') ? 'lastpostafter=' . urlencode($vbulletin->GPC['lastpostafter']) . '&' : '';
$sortaddon .= ($vbulletin->GPC['lastpostbefore'] != '') ? 'lastpostbefore=' . urlencode($vbulletin->GPC['lastpostbefore']) . '&' : '';
$sortaddon .= ($ltr != '') ? 'ltr=' . urlencode($ltr) . '&' : '';
$sortaddon .= ($usergroupid) ? 'usergroupid=' . $usergroupid . '&' : '';
$sortaddon .= ($urladd != '') ? $urladd : '';

$sortaddon = preg_replace('#&$#s', '', $sortaddon);

$sorturl = 'memberlist.php?' . $vbulletin->session->vars['sessionurl'] . $sortaddon;


eval('$sortarrow[' . $sortfield . '] = "' . fetch_template('forumdisplay_sortarrow') . '";');

$memberlistbit = '';
$limitlower = ($pagenumber - 1) * $perpage + 1;
$limitupper = ($pagenumber) * $perpage;
$counter = 0;

if ($limitupper > $totalusers)
{
	$limitupper = $totalusers;
	if ($limitlower > $totalusers)
	{
		$limitlower = $totalusers - $perpage;
	}
}
if ($limitlower <= 0)
{
	$limitlower = 1;
}

if ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden'])
{
	$lastvisitcond = " , lastactivity AS lastvisittime ";
}
else
{
	$lastvisitcond = " , IF((options & " . $vbulletin->bf_misc_useroptions['invisible'] . " AND user.userid <> " . $vbulletin->userinfo['userid'] . "), 1, lastactivity) AS lastvisittime ";
}

if ($show['reputationcol'])
{
	$repcondition = ",IF((NOT(options & " . $vbulletin->bf_misc_useroptions['showreputation']. ") AND (user.usergroupid IN ($hiderepids)";

	if (!empty($hidereparray))
	{
		foreach($hidereparray AS $value)
		{
			$repcondition .= " OR FIND_IN_SET('$value', membergroupids)";
		}
	}
	$repcondition .= ")), 0, reputation) AS reputationscore";
}

if ($show['agecol'])
{
	$agecondition = ', IF(YEAR(user.birthday_search) > 0 AND user.showbirthday IN (1,2) AND user.birthday_search < CURDATE(), user.birthday_search, \'0000-00-00\') AS agesort';
}
else
{
	$agecondition = '';
}

// we're not actually checking the age, but the birth date
// so this is makes asc/desc do what you think for age
if ($sqlsort == 'agesort')
{
	$sortorder = ($sortorder == 'desc' ? 'asc' : 'desc');
}

$hook_query_fields = $hook_query_joins = $hook_query_where = '';
($hook = vBulletinHook::fetch_hook('memberlist_fetch')) ? eval($hook) : false;

$users = $db->query_read_slave("
	SELECT user.*,usertextfield.*,userfield.*, user.userid, options,
		IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
	$repcondition
	" . iif($show['avatarcol'], ',avatar.avatarpath,NOT ISNULL(customavatar.userid) AS hascustomavatar,customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight') ."
	" . iif($show['profilepiccol'], ',customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight') . "
	$lastvisitcond
	$agecondition
	" . iif($usergroupid, ", NOT ISNULL(usergroupleader.usergroupid) AS isleader") . "
	$hook_query_fields
	FROM " . TABLE_PREFIX . "user AS user
	LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON(usertextfield.userid=user.userid)
	LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid=user.userid)
	" . iif($show['reputationcol'], "LEFT JOIN " . TABLE_PREFIX . "reputationlevel AS reputationlevel ON(user.reputationlevelid=reputationlevel.reputationlevelid) ") . "
	" . iif($show['avatarcol'], "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)") . "
	" . iif($show['profilepiccol'], "LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid) ") . "
	" . iif($usergroupid, "LEFT JOIN " . TABLE_PREFIX . "usergroupleader AS usergroupleader ON (user.userid = usergroupleader.userid AND usergroupleader.usergroupid=$usergroupid) ") . "
	$hook_query_joins
	WHERE $condition
		AND (user.usergroupid IN ($ids)" . (defined('MEMBERLIST_INCLUDE_SECONDARY') ? (" OR FIND_IN_SET(" . implode(', user.membergroupids) OR FIND_IN_SET(', $idarray) . ", user.membergroupids)") : '') . ")
		$hook_query_where
	ORDER BY $sqlsort $sortorder $secondarysortsql
	LIMIT " . ($limitlower - 1) . ", $perpage
");

$counter = 0;
$memberlistbits = '';
$today_year = vbdate('Y', TIMENOW, false, false);
$today_month = vbdate('n', TIMENOW, false, false);
$today_day = vbdate('j', TIMENOW, false, false);

// initialize counters
$itemcount = ($pagenumber - 1) * $perpage;
$first = $itemcount + 1;

while ($userinfo = $db->fetch_array($users) AND $counter++ < $perpage)
{
	$userinfo = array_merge($userinfo , convert_bits_to_array($userinfo['options'] , $vbulletin->bf_misc_useroptions));
	$userinfo = array_merge($userinfo , convert_bits_to_array($userinfo['adminoptions'] , $vbulletin->bf_misc_adminoptions));
	cache_permissions($userinfo, false);

	// format posts number
	$userinfo['posts'] = vb_number_format($userinfo['posts']);
	if ($userinfo['usertitle'] == '')
	{
		$userinfo['usertitle'] = ' ';
	}

	fetch_musername($userinfo);
	$userinfo['datejoined'] = vbdate($vbulletin->options['dateformat'], $userinfo['joindate'], true);

	if ($userinfo['lastvisittime'] == 1)
	{
		$userinfo['lastvisit'] = $vbphrase['n_a'];
	}
	else
	{
		$userinfo['lastvisit'] = vbdate($vbulletin->options['dateformat'], $userinfo['lastvisittime'], true);
	}

	if ($userinfo['lastpost'])
	{
		$show['searchlink'] = true;
	}
	else
	{
		$show['searchlink'] = false;
	}
	if ($userinfo['showemail'] AND $vbulletin->options['displayemails'] AND (!$vbulletin->options['secureemail'] OR ($vbulletin->options['secureemail'] AND $vbulletin->options['enableemail'])) AND $vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canemailmember'])
	{
		$show['emaillink'] = true;
	}
	else
	{
		$show['emaillink'] = false;
	}

	construct_im_icons($userinfo, true);

	if ($userinfo['homepage'] != '' AND $userinfo['homepage'] != 'http://')
	{
		$show['homepagelink'] = true;
	}
	else
	{
		$show['homepagelink'] = false;
	}
	if ($vbulletin->options['enablepms'] AND $vbulletin->userinfo['permissions']['pmquota'] AND ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']
 					OR ($userinfo['receivepm'] AND $userinfo['permissions']['pmquota']
 						AND (!$userinfo['receivepmbuddies'] OR can_moderate() OR strpos(" $userinfo[buddylist] ", ' ' . $vbulletin->userinfo['userid'] . ' ') !== false))
 				))
 	{
		$show['pmlink'] = true;
	}
	else
	{
		$show['pmlink'] = false;
	}
	if ($show['birthdaycol'] OR $show['agecol'])
	{
		if (empty($userinfo['birthday']) OR !$userinfo['showbirthday'])
		{
			$userinfo['birthday'] = ' ';
		}
		else
		{
			$bday = explode('-', $userinfo['birthday']);
			if (date('Y') > $bday[2] AND $bday[2] > 1901 AND $bday[2] != '0000' AND ($userinfo['showbirthday'] == 1 OR $userinfo['showbirthday'] == 2))
			{
				$birthdayformat = mktimefix($vbulletin->options['calformat1'], $bday[2]);
				if ($bday[2] >= 1970)
				{
					$yearpass = $bday[2];
				}
				else
				{
					// day of the week patterns repeat every 28 years, so
					// find the first year >= 1970 that has this pattern
					$yearpass = $bday[2] + 28 * ceil((1970 - $bday[2]) / 28);
				}

				if ($userinfo['showbirthday'] == 2)
				{
					$userinfo['birthday'] = vbdate($birthdayformat, mktime(0, 0, 0, $bday[0], $bday[1], $yearpass), false, true, false);
				}
				else
				{
					$userinfo['birthday'] = ' ';
				}

				if ($today_year > $bday[2] AND $bday[2] != '0000')
				{
					$userinfo['age'] = $today_year - $bday[2];
					if ($bday[0] > $today_month)
					{
						$userinfo['age']--;
					}
					else if ($bday[0] == $today_month AND $today_day < $bday[1])
					{
						$userinfo['age']--;
					}
				}
				else
				{
					$userinfo['age'] = ' ';
				}
			}
			else if ($userinfo['showbirthday'] >= 2)
			{
				// lets send a valid year as some PHP3 don't like year to be 0
				$userinfo['birthday'] = vbdate($vbulletin->options['calformat2'], mktime(0, 0, 0, intval($bday[0]), intval($bday[1]), 1992), false, true, false);
			}

			if ($userinfo['birthday'] == '' AND $userinfo['showbirthday'] == 2)
			{ // This should not be blank but win32 has a bug in regards to mktime and dates < 1970
				if ($bday[2] == '0000')
				{
					$userinfo['birthday'] = "$bday[0]-$bday[1]";
				}
				else
				{
					$userinfo['birthday'] = "$bday[0]-$bday[1]-$bday[2]";
				}
			}
		}
	}

	if ($show['reputationcol'])
	{
		$checkperms = cache_permissions($userinfo, false);
		fetch_reputation_image($userinfo, $checkperms);
	}
	if ($show['profilepiccol'] AND $userinfo['profilepic'] AND ($userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canprofilepic'] OR $userinfo['adminprofilepic']))
	{
		if ($vbulletin->options['usefileavatar'])
		{
			$userinfo['profilepicurl'] = $vbulletin->options['profilepicurl'] . '/profilepic' . $userinfo['userid'] . '_' . $userinfo['profilepicrevision'] . '.gif';
		}
		else
		{
			$userinfo['profilepicurl'] = 'image.php?' . $vbulletin->session->vars['sessionurl'] . 'u=' . $userinfo['userid'] . "&dateline=$userinfo[profilepicdateline]&type=profile";
		}
		$userinfo['profilepic'] = "<img src=\"" . $userinfo['profilepicurl'] . "\" alt=\"\" title=\"" . construct_phrase($vbphrase['xs_picture'], $userinfo['username']) . "\" border=\"0\"";
		$userinfo['profilepic'] .= ($userinfo['ppwidth'] AND $userinfo['ppheight']) ? " width=\"$userinfo[ppwidth]\" height=\"$userinfo[ppheight]\" " : '';
		$userinfo['profilepic'] .= "/>";
	}
	else
	{
		$userinfo['profilepic'] = ' ';
	}

	if ($show['avatarcol'])
	{
		$avwidth = '';
		$avheight = '';
		if ($userinfo['avatarid'])
		{
			$avatarurl = $userinfo['avatarpath'];
		}
		else
		{
			if ($userinfo['hascustomavatar'] AND $vbulletin->options['avatarenabled'] AND ($userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canuseavatar'] OR $userinfo['adminavatar']))
			{
				if ($vbulletin->options['usefileavatar'])
				{
					$avatarurl = $vbulletin->options['avatarurl'] . "/avatar$userinfo[userid]_$userinfo[avatarrevision].gif";
				}
				else
				{
					$avatarurl = 'image.php?' . $vbulletin->session->vars['sessionurl'] . "u=$userinfo[userid]&dateline=$userinfo[avatardateline]";
				}
				if ($userinfo['avheight'] AND $userinfo['avwidth'])
				{
					$avheight = "height=\"$userinfo[avheight]\"";
					$avwidth = "width=\"$userinfo[avwidth]\"";
				}
			}
			else
			{
				$avatarurl = '';
			}
		}
		if ($avatarurl == '')
		{
			$show['avatar'] = false;
		}
		else
		{
			$show['avatar'] = true;
		}
	}

	$bgclass = iif(($totalcols % 2) == 1, 'alt2', 'alt1');

	$customfields = '';

	if ($show['customfields'] AND !empty($profileinfo))
	{
		foreach ($profileinfo AS $index => $value)
		{
			if ($userinfo["$value[varname]"] != '')
			{
				if ($value['type'] == 'checkbox' OR $value['type'] == 'select_multiple')
				{
					unset($customfield);
					foreach ($value['data'] AS $key => $val)
					{
						if ($userinfo["$value[varname]"] & pow(2, $key))
						{
							$customfield .= iif($customfield, ', ') . $val;
						}
					}
				}
				else
				{
					$customfield = $userinfo["$value[varname]"];
				}
			}
			else
			{
				$customfield = ' ';
			}

			exec_switch_bg();
			eval('$customfields .= "' . fetch_template('memberlist_resultsbit_field') . '";');
		}
	}

	$show['hideleader'] = iif ($userinfo['isleader'] OR $userinfo['usergroupid'] == $usergroupid, true, false);

	$bgclass = 'alt1';
	$itemcount++;

	($hook = vBulletinHook::fetch_hook('memberlist_bit')) ? eval($hook) : false;

	eval('$memberlistbits .= "' . fetch_template('memberlist_resultsbit') . '";');
}  // end while

$last = $itemcount;

if ($sqlsort == 'agesort')
{
	$sortorder = ($sortorder == 'desc' ? 'asc' : 'desc');
}

$pagenav = construct_page_nav($pagenumber, $perpage, $totalusers, 'memberlist.php?' . $vbulletin->session->vars['sessionurl'] . 'do=getall', ''
	. (!empty($vbulletin->GPC['perpage']) ? "&pp=$perpage" : "")
	. (!empty($sortorder) ? "&order=$sortorder" : "")
	. (!empty($sortfield) ? "&sort=$sortfield" : "")
	. (!empty($sortaddon) ? "&$sortaddon" : "")
);

unset($customfieldsheader);
if ($show['customfields'] AND is_array($profileinfo))
{
	foreach ($profileinfo AS $index => $customfield)
	{
		$totalcols++;
		$customfield = $customfield['title'];
		eval('$customfieldsheader .= "' . fetch_template('memberlist_results_header') . '";');
	}
}
// build navbar
$navbits = array('' => $vbphrase['members_list']);

$searchtime = vb_number_format(fetch_microtime_difference($searchstart), 2);
$totalcols += !empty($usergroupid) ? 2 : 1;
$templatename = 'memberlist';
}

// #############################################################################
// advanced search
if ($_REQUEST['do'] == 'search')
{
if (!$vbulletin->options['usememberlistadvsearch'])
{
	eval(standard_error(fetch_error('nomemberlistsearch')));
}

$bgclass = 'alt1';
// get extra profile fields
$profilefields = $db->query_read_slave("
	SELECT *
	FROM " . TABLE_PREFIX . "profilefield
	WHERE searchable = 1
		AND form = 0
		" . iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), " AND hidden = 0") . "
	ORDER BY displayorder
");

$customfields = '';
while ($profilefield = $db->fetch_array($profilefields))
{
	$profilefieldname = "field$profilefield[profilefieldid]";
	$optionalname = $profilefieldname . '_opt';
	exec_switch_bg();
	$optional = '';
	$optionalfield = '';
	$profilefield['title'] = $vbphrase[$profilefieldname . '_title'];

	if ($profilefield['type'] == 'input' OR $profilefield['type'] == 'textarea')
	{
		$vbulletin->userinfo["$profilefieldname"] = '';
		eval('$customfields .= "' . fetch_template('memberlist_search_textbox') . '";');
	}
	else if ($profilefield['type'] == 'select')
	{
		$profilefield['def'] = 0;
		$data = unserialize($profilefield['data']);
		$selectbits = '';
		$selected = '';
		foreach ($data AS $key => $val)
		{
			$key++;
			eval('$selectbits .= "' . fetch_template('userfield_select_option') . '";');
		}
		if ($profilefield['optional'])
		{
			eval('$optionalfield = "' . fetch_template('memberlist_search_optional_input') . '";');
		}
		$selected = 'selected="selected"';
		eval('$customfields .= "' . fetch_template('memberlist_search_select') . '";');
	}
	else if ($profilefield['type'] == 'radio')
	{
		$data = unserialize($profilefield['data']);
		$radiobits = '';
		$checked = '';
		foreach ($data AS $key => $val)
		{
			$key++;
			eval('$radiobits .= "' . fetch_template('userfield_radio_option') . '";');
		}
		if ($profilefield['optional'])
		{
			eval('$optionalfield = "' . fetch_template('memberlist_search_optional_input') . '";');
		}
		eval('$customfields .= "' . fetch_template('memberlist_search_radio') . '";');
	}
	else if ($profilefield['type'] == 'checkbox')
	{
		$data = unserialize($profilefield['data']);
		$radiobits = '';
		$perline = 0;
		$checked = '';
		foreach ($data AS $key => $val)
		{
			$key++;
			eval('$radiobits .= "' . fetch_template('userfield_checkbox_option') . '";');
			$perline++;
			if ($profilefield['def'] > 0 AND $perline >= $profilefield['def'])
			{
				$radiobits .= '<br />';
				$perline = 0;
			}
		}
		eval('$customfields .= "' . fetch_template('memberlist_search_radio') . '";');
	}
	else if ($profilefield['type'] == 'select_multiple')
	{
		$data = unserialize($profilefield['data']);
		$selected = '';
		$selectbits = '';
		foreach ($data AS $key => $val)
		{
			$key++;
			eval('$selectbits .= "' . fetch_template('userfield_select_option') . '";');
		}
		eval('$customfields .= "' . fetch_template('memberlist_search_select_multiple') . '";');
	}
}

// build navbar
$navbits = array(
	'memberlist.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['members_list'],
	'' => $vbphrase['advanced_search']
);

$templatename = 'memberlist_search';
}

// now spit out the HTML, assuming we got this far with no errors or redirects.

($hook = vBulletinHook::fetch_hook('memberlist_complete')) ? eval($hook) : false;

if ($templatename != '')
{
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template($templatename) . '");');
}


/*======================================================================*\
|| ####################################################################
|| # Downloaded: 01:21, Sat Sep 15th 2007
|| # CVS: $RCSfile$ - $Revision: 17682 $
|| ####################################################################
\*======================================================================*/
?>

 

 

Many thanks in advance to anybody who can steer me in the right direction.

Many thanks for your prompt reply, jitesh.  I made that change.  Now I get the following errors.

 

Notice: Undefined index: HTTPS in /home/needa/public_html/includes/class_core.php on line 1591

 

Notice: Undefined index: HTTPS in /home/needa/public_html/includes/class_core.php on line 1591

 

Notice: Undefined index: HTTP_REFERER in /home/needa/public_html/includes/class_core.php on line 1618

 

 

 

Unable to add cookies, header already sent.

File: /home/needa/public_html/includes/class_core.php

Line: 1591

 

http://www.afeastoffumetti.org/memberlist.php

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.