public static function create_array($ids) { global $vbulletin; $set = $vbulletin->db->query_read_slave(" SELECT announcementid, startdate, title, announcement.views, forumid, user.username, user.userid, user.usertitle, user.customtitle, user.usergroupid, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid FROM " . TABLE_PREFIX . "announcement AS announcement LEFT JOIN " . TABLE_PREFIX . "user AS user USING (userid) WHERE announcementid IN (" . implode(',', array_map('intval', $ids)) . ") "); $items = array(); while ($record = $vbulletin->db->fetch_array($set)) { fetch_musername($record); $record['title'] = fetch_censored_text($record['title']); $record['postdate'] = vbdate($vbulletin->options['dateformat'], $record['startdate']); $record['statusicon'] = 'new'; $record['views'] = vb_number_format($record['views']); $record['forumtitle'] = $vbulletin->forumcache["$record[forumid]"]['title']; $show['forumtitle'] = ($record['forumid'] == -1) ? false : true; $announcement = new vBForum_Search_Result_Announcement(); $announcement->record = $record; $items[$record['announcementid']] = $announcement; } return $items; }
function cache_moderators($userid = null) { global $vbulletin, $imodcache, $mod; $imodcache = array(); $mod = array(); $forummoderators = $vbulletin->db->query_read_slave("\n\t\tSELECT moderator.*, user.username,\n\t\tIF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid\n\t\tFROM " . TABLE_PREFIX . "moderator AS moderator\n\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)\n\t\t" . ($userid != null ? "WHERE moderator.userid = " . intval($userid) : "") . "\n\t"); while ($moderator = $vbulletin->db->fetch_array($forummoderators)) { fetch_musername($moderator); $imodcache["{$moderator['forumid']}"]["{$moderator['userid']}"] = $moderator; $mod["{$moderator['userid']}"] = 1; } $vbulletin->db->free_result($forummoderators); }
function process_showgroups_userinfo($user) { global $vbulletin, $permissions, $stylevar, $show; $user = array_merge($user, convert_bits_to_array($user['options'], $vbulletin->bf_misc_useroptions)); $user = array_merge($user, convert_bits_to_array($user['adminoptions'], $vbulletin->bf_misc_adminoptions)); cache_permissions($user, false); fetch_online_status($user, true); if (!$user['invisible'] or $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden']) { $user['lastonline'] = vbdate($vbulletin->options['dateformat'], $user['lastactivity'], 1); } else { $user['lastonline'] = ' '; } fetch_musername($user); return $user; }
function process_showgroups_userinfo($user) { global $vbulletin, $permissions, $stylevar, $show; $post =& $user; $datecut = TIMENOW - $vbulletin->options['cookietimeout']; require_once DIR . '/includes/functions_bigthree.php'; fetch_online_status($user, true); if (!$user['invisible'] or $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden']) { $user['lastonline'] = vbdate($vbulletin->options['dateformat'], $user['lastactivity'], 1); } else { $user['lastonline'] = ' '; } fetch_musername($user); return $user; }
/** * Prepare any data needed for the output * * @param string The id of the block * @param array Options specific to the block */ function prepare_output($id = '', $options = array()) { global $show, $vbphrase; // don't include yourself in the visit count if ($this->profile->userinfo['userid'] != $this->registry->userinfo['userid']) { // profile visits $this->registry->db->query_write(" UPDATE " . TABLE_PREFIX . "user SET profilevisits = profilevisits + 1 WHERE userid = " . $this->profile->userinfo['userid'] ); $this->profile->userinfo['profilevisits']++; // reflect this view } $this->profile->prepare('profilevisits'); // We shouldn't show as a profile visitor if ($this->registry->userinfo['userid'] AND $this->profile->userinfo['userid'] != $this->registry->userinfo['userid']) { $this->registry->db->query_write(" REPLACE INTO " . TABLE_PREFIX . "profilevisitor (userid, visitorid, dateline, visible) VALUES ( " . $this->profile->userinfo['userid'] . ", ". $this->registry->userinfo['userid'] . ", " . TIMENOW . ", " . ($this->registry->userinfo['options'] & $this->registry->bf_misc_useroptions['invisible'] ? 0 : 1) . " ) "); } // ensure this setting makes sense if ($options['profilemaxvisitors'] < 2) { $options['profilemaxvisitors'] = 2; } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('member_profileblock_recentvisitors_query')) ? eval($hook) : false; $visitors_db = $this->registry->db->query_read_slave(" SELECT user.userid, user.username, user.usergroupid, user.displaygroupid, profilevisitor.visible, user.infractiongroupid $hook_query_fields FROM " . TABLE_PREFIX . "profilevisitor AS profilevisitor INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = profilevisitor.visitorid) $hook_query_joins WHERE profilevisitor.userid = " . $this->profile->userinfo['userid'] . " " . (!($this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canseehidden']) ? " AND (visible = 1 OR profilevisitor.visitorid = " . $this->registry->userinfo['userid'] . ")" : "") . " $hook_query_where ORDER BY profilevisitor.dateline DESC LIMIT $options[profilemaxvisitors] "); $visitors = array(); while ($user = $this->registry->db->fetch_array($visitors_db)) { $visitors["$user[username]"] = $user; } uksort($visitors, 'strnatcasecmp'); if (!is_array($buddylist)) { if ($this->registry->userinfo['buddylist'] = trim($this->registry->userinfo['buddylist'])) { $buddylist = preg_split('/\s+/', $this->registry->userinfo['buddylist'], -1, PREG_SPLIT_NO_EMPTY); } else { $buddylist = array(); } } $visitorbits = ''; foreach ($visitors AS $user) { fetch_musername($user); $user['invisiblemark'] = !$user['visible'] ? '*' : ''; $user['buddymark'] = in_array($user['userid'], $buddylist) ? '+' : ''; $templater = vB_Template::create('memberinfo_visitorbit'); $templater->register('user', $user); $visitorbits .= $templater->render(); } $this->block_data['visitorbits'] = $visitorbits; $this->block_data['visitorcount'] = vb_number_format($this->registry->db->num_rows($visitors_db)); }
function cache_events($range) { global $vbulletin, $calendarinfo, $vbphrase, $serveroffset; $numdays = date('j', mktime(0, 0, 0, $range['nextmonth'] + 1, 1, $range['nextyear']) - 1); $beginday = gmmktime(0, 0, 0, $range['frommonth'], 1, $range['fromyear']) + -12 * 3600; $endday = gmmktime(24, 0, 0, $range['nextmonth'], $numdays, $range['nextyear']) + 12 * 3600; $event = array(); $eventids = array(); if ($calendarinfo['showholidays']) { // Holidays show across all calendars that a user has access to. $holidays = $vbulletin->db->query_read_slave("\n\t\t\tSELECT *\n\t\t\tFROM " . TABLE_PREFIX . "holiday\n\t\t"); if ($vbulletin->db->num_rows($holidays)) { while ($ev = $vbulletin->db->fetch_array($holidays)) { $ev['visible'] = 1; $ev['title'] =& $vbphrase['holiday' . $ev['holidayid'] . '_title']; $ev['event'] =& $vbphrase['holiday' . $ev['holidayid'] . '_desc']; $ev['preview'] = strip_quotes($ev['event']); $ev['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($ev['preview'], 300), false, true)); if ($ev['recurring'] == 6) { $event['holiday1']["{$ev['recuroption']}"][] = $ev; } else { $ev['dateline_from'] = $beginday; $ev['dateline_to'] = $endday; $offset = $vbulletin->userinfo['timezoneoffset'] ? $vbulletin->userinfo['tzoffset'] : $vbulletin->userinfo['timezoneoffset']; $ev['dateline_from_user'] = $ev['dateline_from'] + $offset * 3600; $ev['dateline_to_user'] = $ev['dateline_to'] + $offset * 3600; $recuroption = substr($ev['recuroption'], 2); $event['holiday2']["{$recuroption}"][] = $ev; } } } } $events = $vbulletin->db->query_read_slave("\n\t\tSELECT event.*,\n\t\tuser.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid,\n\t\tIF(dateline_to = 0, 1, 0) AS singleday\n\t\t" . iif($vbulletin->userinfo['userid'], ", subscribeevent.eventid AS subscribed") . "\n\t\tFROM " . TABLE_PREFIX . "event AS event\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = event.userid)\n\t\t" . iif($vbulletin->userinfo['userid'], "LEFT JOIN " . TABLE_PREFIX . "subscribeevent AS subscribeevent ON (subscribeevent.eventid = event.eventid AND subscribeevent.userid = " . $vbulletin->userinfo['userid'] . ")") . "\n\t\tWHERE calendarid = {$calendarinfo['calendarid']} AND\n\t\t\t((dateline_to >= {$beginday} AND dateline_from < {$endday}) OR (dateline_to = 0 AND dateline_from >= {$beginday} AND dateline_from <= {$endday} ))\tAND\n\t\t\tvisible = 1\n\t\tORDER BY dateline_from\n\t"); // Cache Events if ($vbulletin->db->num_rows($events)) { while ($ev = $vbulletin->db->fetch_array($events)) { if ($ev['userid'] != $vbulletin->userinfo['userid'] and !($vbulletin->userinfo['calendarpermissions']["{$calendarinfo['calendarid']}"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'])) { continue; } $ev['preview'] = strip_quotes($ev['event']); $ev['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($ev['preview'], 300), false, true)); $offset = $ev['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset']; $ev['dateline_from_user'] = $ev['dateline_from'] + $offset * 3600; $ev['dateline_to_user'] = $ev['dateline_to'] + $offset * 3600; fetch_musername($ev); if (!$ev['recurring']) { if ($ev['singleday']) { $event['singleday']["{$ev['dateline_from']}"][] = $ev; } else { $found = false; $date = explode('-', gmdate('n-j-Y', $ev['dateline_from_user'])); $beginday = gmmktime(0, 0, 0, $date[0], $date[1], $date[2]); while ($beginday <= $ev['dateline_to_user']) { if (!$found) { $event['ranged']["{$beginday}"][] = $ev; $count = count($event['ranged']["{$beginday}"]) - 1; $tempevent =& $event['ranged']["{$beginday}"]["{$count}"]; $found = true; } else { // if event ends at the start of the day, don't display it for that day if ($ev['dateline_to_user'] != $beginday) { $event['ranged']["{$beginday}"][] =& $tempevent; } } $beginday += 86400; } } } else { $event['recurring'][] = $ev; } } } return $event; }
$wrt['trtotal'] = 0; while ($threadreader = $vbulletin->db->fetch_array($readlist)) { if (intval($threadreader['userid'])) { $wrt['trtotal'] += 1; $threadreader['markinv'] = ''; $threadreader[visible] = true; if ($threadreader['options'] & $vbulletin->bf_misc_useroptions['invisible']) { $threadreader['visible'] = false; if ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden'] or $threadreader['userid'] == $vbulletin->userinfo['userid']) { $threadreader['markinv'] = '*'; $threadreader['visible'] = true; } } if ($threadreader['visible']) { $count += 1; fetch_musername($threadreader); $threadreader['wrdate'] = $vbphrase['wrt_readtime'] . ' '; $threadreader['comma'] = $vbphrase['comma_space']; $threadreader['wrdate'] .= vbdate($vbulletin->options['dateformat'], $threadreader['dateline']) . ', '; $threadreader['wrdate'] .= vbdate($vbulletin->options['timeformat'], $threadreader['dateline']); $wrtlist[$count] = $threadreader; } } } if ($count) { $wrtlist[$count]['comma'] = ''; } ($hook = vBulletinHook::fetch_hook('showthread_whoread_list')) ? eval($hook) : false; } else { $readers = $vbulletin->db->query_first_slave("\n\t\tSELECT COUNT(userid) AS whoread\n\t\t\tFROM " . TABLE_PREFIX . "contentread as whoread\n\t\t\tWHERE whoread.readtype = 'view'\n\t\t\tAND whoread.contentid = {$threadid}\n\t\t\tAND whoread.contenttypeid = {$contenttypeid}\n\t\t\tAND whoread.dateline > {$cutoff}\n\t\t"); ($hook = vBulletinHook::fetch_hook('showthread_whoread_nonames')) ? eval($hook) : false;
$customfieldssql = array(); while ($custom = $db->fetch_array($customcalfields)) { $customfieldssql[] = $custom; } } $show['canmoveevent'] = can_moderate_calendar($calendarinfo['calendarid'], 'canmoveevents'); $show['candeleteevent'] = can_moderate_calendar($calendarinfo['calendarid'], 'candeleteevents'); require_once DIR . '/includes/functions_misc.php'; // mainly for fetch_timezone require_once DIR . '/includes/functions_user.php'; // to fetch user avatar foreach ($eventarray as $index => $eventinfo) { $eventinfo = fetch_event_date_time($eventinfo); $holidayid = $eventinfo['holidayid']; $customfields = ''; fetch_musername($eventinfo); if (!$holidayid) { unset($holidayid); $eventfields = unserialize($eventinfo['customfields']); $bgclass = 'alt2'; $show['customfields'] = false; foreach ($customfieldssql as $index => $value) { $description = $value['description']; $value['options'] = unserialize($value['options']); exec_switch_bg(); $selectbits = ''; $customoption = ''; $customtitle = $value['title']; if (is_array($value['options'])) { foreach ($value['options'] as $key => $val) { if ($val == $eventfields["{$value['calendarcustomfieldid']}"]) {
$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']) { $userinfo['lastvisit'] = $vbphrase['n_a']; } else { $userinfo['lastvisit'] = vbdate($vbulletin->options['dateformat'], $userinfo['lastvisittime'], true); } if ($userinfo['lastpost']) { $show['searchlink'] = true; }
$url = ''; } $threadcolspan = 7; $announcecolspan = 6; if ($show['inlinemod']) { $threadcolspan++; $announcecolspan++; } if (!$show['threadicons']) { $threadcolspan--; $announcecolspan--; } if (!empty($search['announceids']) and $vbulletin->GPC['pagenumber'] == 1) { $announcements = $db->query_read_slave("\n\t\t\tSELECT announcementid, startdate, title, announcement.views, forumid,\n\t\t\t\tuser.username, user.userid, user.usertitle, user.customtitle, user.usergroupid,\n\t\t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "announcement AS announcement\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user USING (userid)\n\t\t\tWHERE announcementid IN ({$search['announceids']})\n\t\t\tORDER BY startdate DESC\n\t\t"); while ($announcement = $db->fetch_array($announcements)) { fetch_musername($announcement); $announcement['title'] = fetch_censored_text($announcement['title']); $announcement['postdate'] = vbdate($vbulletin->options['dateformat'], $announcement['startdate']); $announcement['statusicon'] = 'new'; $announcement['views'] = vb_number_format($announcement['views']); $announcementidlink = "&a={$announcement['announcementid']}"; $announcement['forumtitle'] = $vbulletin->forumcache["{$announcement['forumid']}"]['title']; $show['forumtitle'] = $announcement['forumid'] == -1 ? false : true; eval('$announcebits .= "' . fetch_template('threadbit_announcement') . '";'); } } // get highlight words if (!empty($display['highlight'])) { $highlightwords = '&highlight=' . urlencode(implode(' ', $display['highlight'])); } else { $highlightwords = '';
$get_new_posts[fullthreadtitle] = strip_tags($get_new_posts[title]); if ($trimthreadtitle > 0) { $get_new_posts[titletrimmed] = fetch_trimmed_title($get_new_posts[fullthreadtitle], $trimthreadtitle); } else { $get_new_posts[titletrimmed] = $get_new_posts[fullthreadtitle]; } if ($get_new_posts[lastpost] > $vbulletin->userinfo['lastvisit']) { $get_new_posts[newpost] = true; } $get_new_posts[fullusername] = strip_tags($get_new_posts[username]); if ($trimusername > 0) { $get_new_posts[username] = fetch_trimmed_title($get_new_posts[fullusername], $trimusername); } else { $get_new_posts[username] = $get_new_posts[fullusername]; } $get_new_posts[musername] = fetch_musername($get_new_posts); $get_new_posts_forumtitle = strip_tags($vbulletin->forumcache["{$get_new_posts['forumid']}"]['title_clean']); $get_new_posts[fullforumtitle] = strip_tags($get_new_posts_forumtitle); if ($vbulletin->options['vietvbbtopstats_bold_remove']) { $get_new_posts[musername] = str_replace($vietvbb_afs_bpar, "", $get_new_posts[musername]); } $get_new_postdate = vbdate($vbulletin->options['vietvbbtopstats_date_format'], $get_new_posts[lastpost]); $get_new_posttime = vbdate($vbulletin->options['vietvbbtopstats_time_format'], $get_new_posts[lastpost]); $get_new_startdate = vbdate($vbulletin->options['vietvbbtopstats_date_format'], $get_new_posts[dateline]); $get_new_starttime = vbdate($vbulletin->options['vietvbbtopstats_time_format'], $get_new_posts[dateline]); eval('$vietvbbtopstats_top .= "' . $vbulletin->templatecache['vietvbb_topstats_latest_posts'] . '";'); } if (!$vietvbbtopstats_top) { $vietvbbtopstats_top = 'No Result'; } print_output($vietvbbtopstats_top);
$blog['lastentrytime'] = vbdate($vbulletin->options['timeformat'], $blog['lastblog']); $lastentrycats = explode(',', $blog['categories']); $lastcommentcats = explode(',', $blog['categories_lastcomment']); $show['lastentry'] = array_intersect($vbulletin->userinfo['blogcategorypermissions']['cantview'], $lastentrycats) ? false : true; $show['lastcomment'] = array_intersect($vbulletin->userinfo['blogcategorypermissions']['cantview'], $lastcommentcats) ? false : true; if ($blogtype == 'all') { $blog['entrytitle'] = fetch_trimmed_title($blog['lastblogtitle'], 20); if ($blog['title']) { $blog['title'] = fetch_trimmed_title($blog['title'], 50); } $templater = vB_Template::create('blog_blog_row'); $templater->register('blog', $blog); $templater->register('thread', $thread); $blogbits .= $templater->render(); } else { fetch_musername($blog); fetch_avatar_html($blog); $blog['onlinestatus'] = 0; $blog['commentexcerpt'] = htmlspecialchars_uni(fetch_trimmed_title($blog['pagetext'], 50)); // now decide if we can see the user or not if ($blog['lastactivity'] > TIMENOW - $vbulletin->options['cookietimeout'] and $blog['lastvisit'] != $blog['lastactivity']) { if ($blog['invisible']) { if ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden'] or $blog['userid'] == $vbulletin->userinfo['userid']) { // user is online and invisible BUT bbuser can see them $blog['onlinestatus'] = 2; } } else { // user is online and visible $blog['onlinestatus'] = 1; } }
/** * Builds the applicable notice HTML * * @return string Applicable notice HTML */ protected function build_notices() { global $vbulletin, $vbphrase, $show; $notices = ''; if (!defined('NONOTICES') and !empty($vbulletin->noticecache) and is_array($vbulletin->noticecache)) { $return_link = $vbulletin->scriptpath; require_once DIR . '/includes/functions_notice.php'; if ($vbulletin->userinfo['userid'] == 0) { $vbulletin->userinfo['musername'] = fetch_musername($vbulletin->userinfo); } foreach (fetch_relevant_notice_ids() as $_noticeid) { $show['notices'] = true; if ($vbulletin->noticecache["{$_noticeid}"]["dismissible"] == 1 and $vbulletin->userinfo['userid']) { // only show the dismiss link for registered users; guest who wants to dismiss? Register please. $show['dismiss_link'] = true; } else { $show['dismiss_link'] = false; } $notice_html = str_replace(array('{musername}', '{username}', '{userid}', '{sessionurl}', '{sessionurl_q}'), array($vbulletin->userinfo['musername'], $vbulletin->userinfo['username'], $vbulletin->userinfo['userid'], vB::getCurrentSession()->get('sessionurl'), vB::getCurrentSession()->get('sessionurl_q')), $vbphrase["notice_{$_noticeid}_html"]); // Legacy Hook 'notices_noticebit' Removed // $templater = vB_Template::create('navbar_noticebit'); $templater->register('notice_html', $notice_html); $templater->register('_noticeid', $_noticeid); $notices .= $templater->render(); } } return $notices; }
/** * Converts are blog ids to titles for Who's Online * * @return void */ function blog_online_ids_titles() { global $blogids, $blogtextids, $blogtrackbackids, $bloguserids, $vbulletin; global $wol_blog, $wol_blogtext, $wol_blogtrackback, $wol_bloguser, $wol_user; if ($blogtrackbackids) { $blograckbackidquery = $vbulletin->db->query_read_slave(" SELECT blogid, blogtrackbackid FROM " . TABLE_PREFIX . "blog_trackback WHERE blogtrackbackid IN (0$blogtrackbackids) "); while ($blogtrackbackidqueryr = $vbulletin->db->fetch_array($blogtrackbackidquery)) { $blogids .= ',' . $blogtrackbackidqueryr['blogid']; $wol_blogtrackback["$blogtrackbackidqueryr[blogtrackbackid]"] = $blogtrackbackidqueryr['blogid']; } } if ($blogtextids) { $blogtextidquery = $vbulletin->db->query_read_slave(" SELECT blogid, blogtextid, title FROM " . TABLE_PREFIX . "blog_text WHERE blogtextid IN (0$blogtextids) "); while ($blogtextidqueryr = $vbulletin->db->fetch_array($blogtextidquery)) { $blogids .= ',' . $blogtextidqueryr['blogid']; $wol_blogtext["$blogtextidqueryr[blogtextid]"]['blogid'] = $blogtextidqueryr['blogid']; $wol_blogtext["$blogtextidqueryr[blogtextid]"]['title'] = $blogtextidqueryr['title']; } } if ($blogids) { $blogresults = $vbulletin->db->query_read_slave(" SELECT blog.title, blogid, blog.userid, state, blog.options FROM " . TABLE_PREFIX . "blog AS blog LEFT JOIN " . TABLE_PREFIX . "blog_user AS blog_user ON (blog_user.bloguserid = blog.userid) WHERE blogid IN (0$blogids) "); while ($blogresult = $vbulletin->db->fetch_array($blogresults)) { $wol_blog["$blogresult[blogid]"]['title'] = $blogresult['title']; $wol_blog["$blogresult[blogid]"]['userid'] = $blogresult['userid']; $wol_blog["$blogresult[blogid]"]['state'] = $blogresult['state']; $wol_blog["$blogresult[blogid]"]['private'] = ($blogresult['options'] & $vbulletin->bf_misc_vbblogoptions['private']); $bloguserids .= ",$blogresult[userid]"; } } if ($bloguserids) { $fields = $joins = ''; if ($vbulletin->userinfo['userid']) { $fields = ", ignored.relationid AS ignoreid, buddy.relationid AS buddyid"; $joins = " LEFT JOIN " . TABLE_PREFIX . "userlist AS ignored ON (ignored.userid = bu.bloguserid AND ignored.relationid = " . $vbulletin->userinfo['userid'] . " AND ignored.type = 'ignore') LEFT JOIN " . TABLE_PREFIX . "userlist AS buddy ON (buddy.userid = bu.bloguserid AND buddy.relationid = " . $vbulletin->userinfo['userid'] . " AND buddy.type = 'buddy') "; } $userresults = $vbulletin->db->query_read_slave(" SELECT bu.title, bu.bloguserid, bu.options_member, bu.options_guest, bu.options_buddy, bu.options_ignore, bu.memberids, bu.memberblogids, user.userid, user.username, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, user.infractiongroupid, user.usergroupid, user.membergroupids $fields FROM " . TABLE_PREFIX . "blog_user AS bu LEFT JOIN " . TABLE_PREFIX . "user AS user ON (bu.bloguserid = user.userid) $joins WHERE bu.bloguserid IN (0$bloguserids) "); while ($userresult = $vbulletin->db->fetch_array($userresults)) { cache_permissions($userresult, false); fetch_musername($userresult); $wol_user["$userresult[userid]"] = $userresult['musername']; $member = ($userresult['options_member'] & $vbulletin->bf_misc_vbblogsocnetoptions['canviewmyblog'] ? 1 : 0); $guest = ($userresult['options_guest'] & $vbulletin->bf_misc_vbblogsocnetoptions['canviewmyblog'] ? 1 : 0); $buddy = ($userresult['options_buddy'] & $vbulletin->bf_misc_vbblogsocnetoptions['canviewmyblog'] ? 1 : 0); $ignore = ($userresult['options_ignore'] & $vbulletin->bf_misc_vbblogsocnetoptions['canviewmyblog'] ? 1 : 0); $wol_bloguser["$userresult[bloguserid]"]['title'] = $userresult['title']; $wol_bloguser["$userresult[bloguserid]"]['canviewmyblog'] = ( ( !$userresult['buddyid'] OR $buddy ) AND ( !$userresult['ignoreid'] OR $ignore ) AND ( ( $member AND $vbulletin->userinfo['userid'] ) OR ( $guest AND !$vbulletin->userinfo['userid'] ) ) OR ( $ignore AND $userresult['ignoreid'] ) OR ( $buddy AND $userresult['buddyid'] ) OR $userresult['userid'] == $vbulletin->userinfo['userid'] OR can_moderate_blog() OR is_member_of_blog($vbulletin->userinfo, $userresult) ) ? true : false; } } }
function do_stats() { global $vbulletin, $db; $activeusers = ''; if (($vbulletin->options['displayloggedin'] == 1 or $vbulletin->options['displayloggedin'] == 2 or $vbulletin->options['displayloggedin'] > 2 and $vbulletin->userinfo['userid']) and !$show['search_engine']) { $datecut = TIMENOW - $vbulletin->options['cookietimeout']; $numbervisible = 0; $numberregistered = 0; $numberguest = 0; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser_query')) ? eval($hook) : false; $forumusers = $db->query_read_slave("\n\t SELECT\n\t user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid, user.lastvisit,\n\t session.userid, session.inforum, session.lastactivity, session.badlocation,\n\t IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n\t {$hook_query_fields}\n\t FROM " . TABLE_PREFIX . "session AS session\n\t LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)\n\t {$hook_query_joins}\n\t WHERE session.lastactivity > {$datecut}\n\t {$hook_query_where}\n\t " . iif($vbulletin->options['displayloggedin'] == 1 or $vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . "\n\t "); if ($vbulletin->userinfo['userid']) { // fakes the user being online for an initial page view of index.php $vbulletin->userinfo['joingroupid'] = iif($vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['usergroupid']); $userinfos = array($vbulletin->userinfo['userid'] => array('userid' => &$vbulletin->userinfo['userid'], 'username' => &$vbulletin->userinfo['username'], 'invisible' => &$vbulletin->userinfo['invisible'], 'inforum' => 0, 'lastactivity' => TIMENOW, 'lastvisit' => &$vbulletin->userinfo['lastvisit'], 'usergroupid' => &$vbulletin->userinfo['usergroupid'], 'displaygroupid' => &$vbulletin->userinfo['displaygroupid'], 'infractiongroupid' => &$vbulletin->userinfo['infractiongroupid'])); } else { $userinfos = array(); } $inforum = array(); while ($loggedin = $db->fetch_array($forumusers)) { $userid = $loggedin['userid']; if (!$userid) { // Guest $numberguest++; if (!isset($inforum["{$loggedin['inforum']}"])) { $inforum["{$loggedin['inforum']}"] = 0; } if (!$loggedin['badlocation']) { $inforum["{$loggedin['inforum']}"]++; } } else { if (empty($userinfos["{$userid}"]) or $userinfos["{$userid}"]['lastactivity'] < $loggedin['lastactivity']) { $userinfos["{$userid}"] = $loggedin; } } } if (!$vbulletin->userinfo['userid'] and $numberguest == 0) { $numberguest++; } foreach ($userinfos as $userid => $loggedin) { $numberregistered++; if ($userid != $vbulletin->userinfo['userid'] and !$loggedin['badlocation']) { if (!isset($inforum["{$loggedin['inforum']}"])) { $inforum["{$loggedin['inforum']}"] = 0; } $inforum["{$loggedin['inforum']}"]++; } fetch_musername($loggedin); ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser')) ? eval($hook) : false; if (fetch_online_status($loggedin)) { $numbervisible++; } } // memory saving unset($userinfos, $loggedin); $db->free_result($forumusers); $totalonline = $numberregistered + $numberguest; $numberinvisible = $numberregistered - $numbervisible; // ### MAX LOGGEDIN USERS ################################ if (intval($vbulletin->maxloggedin['maxonline']) <= $totalonline) { $vbulletin->maxloggedin['maxonline'] = $totalonline; $vbulletin->maxloggedin['maxonlinedate'] = TIMENOW; build_datastore('maxloggedin', serialize($vbulletin->maxloggedin), 1); } $recordusers = vb_number_format($vbulletin->maxloggedin['maxonline']); $recorddate = vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], true); $recordtime = vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']); $showloggedinusers = true; } else { $showloggedinusers = false; } cache_ordered_forums(1, 1); // get total threads & posts from the forumcache $totalthreads = 0; $totalposts = 0; if (is_array($vbulletin->forumcache)) { foreach ($vbulletin->forumcache as $forum) { $totalthreads += $forum['threadcount']; $totalposts += $forum['replycount']; } } $totalthreads = vb_number_format($totalthreads); $totalposts = vb_number_format($totalposts); // get total members and newest member from template $numbermembers = vb_number_format($vbulletin->userstats['numbermembers']); $newuserinfo = array('userid' => $vbulletin->userstats['newuserid'], 'username' => $vbulletin->userstats['newusername']); $activemembers = vb_number_format($vbulletin->userstats['activemembers']); $showactivemembers = ($vbulletin->options['activememberdays'] > 0 and $vbulletin->options['activememberoptions'] & 2) ? true : false; $out = array('threads' => $totalthreads, 'posts' => $totalposts, 'members' => $numbermembers, 'newuser' => $newuserinfo['username']); $out = array_merge($out, array('record_users' => $recordusers, 'record_date' => $recorddate . ' ' . $recordtime, 'online_members' => $numberregistered, 'online_guests' => $numberguest)); $top = $db->query_first_slave("SELECT username FROM " . TABLE_PREFIX . "user ORDER BY posts DESC LIMIT 1"); if ($top['username']) { $out['top_poster'] = $top['username']; } else { $out['top_poster'] = 'N/A'; } if ($showactivemembers) { $out['active_members'] = $activemembers; } else { $out['active_members'] = 'N/A'; } return $out; return array('top_poster' => ''); }
/** * Process this post's user info assuming its a guest. */ function process_unregistered_user() { global $show, $vbphrase; $this->post['rank'] = ''; $this->post['postsperday'] = 0; $this->post['displaygroupid'] = 1; $this->post['username'] = $this->post['postusername']; fetch_musername($this->post); //$this->post['usertitle'] = $vbphrase['guest']; $this->post['usertitle'] = $this->registry->usergroupcache['1']['usertitle']; $this->post['joindate'] = ''; $this->post['posts'] = 'n/a'; $this->post['avatar'] = ''; $this->post['profile'] = ''; $this->post['email'] = ''; $this->post['useremail'] = ''; $this->post['icqicon'] = ''; $this->post['aimicon'] = ''; $this->post['yahooicon'] = ''; $this->post['msnicon'] = ''; $this->post['skypeicon'] = ''; $this->post['homepage'] = ''; $this->post['findposts'] = ''; $this->post['signature'] = ''; $this->post['reputationdisplay'] = ''; $this->post['onlinestatus'] = ''; $show['avatar'] = false; $show['reputation'] = false; $show['pmlink'] = false; $show['homepage'] = false; $show['emaillink'] = false; $show['profile'] = false; $show['search'] = false; $show['buddy'] = false; $show['infraction'] = false; }
$pollinfo['question'] = $bbcode_parser->parse(unhtmlspecialchars($pollinfo['question']), $foruminfo['forumid'], 1); $splitoptions = explode('|||', $pollinfo['options']); $splitvotes = explode('|||', $pollinfo['votes']); $pollinfo['numbervotes'] = array_sum($splitvotes); if ($vbulletin->userinfo['userid'] > 0) { $pollvotes = $db->query_read_slave("\n\t\t\tSELECT voteoption\n\t\t\tFROM " . TABLE_PREFIX . "pollvote\n\t\t\tWHERE userid = " . $vbulletin->userinfo['userid'] . " AND\n\t\t\t\tpollid = {$pollid}\n\t\t"); $uservote = array(); while ($pollvote = $db->fetch_array($pollvotes)) { $uservote["{$pollvote['voteoption']}"] = 1; } } if ($pollinfo['public']) { $public = $db->query_read_slave("\n\t\t\tSELECT user.userid, user.usergroupid, user.displaygroupid, user.username, voteoption, user.infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "pollvote AS pollvote\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (pollvote.userid = user.userid)\n\t\t\tWHERE pollid = {$pollinfo['pollid']}\n\t\t\tORDER BY username ASC\n\t\t"); $allnames = array(); while ($name = $db->fetch_array($public)) { fetch_musername($name); $allnames["{$name['voteoption']}"][] = '<a href="member.php?' . $vbulletin->session->vars['sessionurl'] . "u={$name['userid']}\">{$name['musername']}</a>"; } } foreach ($splitvotes as $index => $value) { $option['uservote'] = iif($uservote[$index + 1], '*'); $option['question'] = $bbcode_parser->parse($splitoptions["{$index}"], $foruminfo['forumid'], true); $option['votes'] = $value; //get the vote count for the option if ($option['votes'] <= 0) { $option['percent'] = 0; } else { if ($pollinfo['multiple']) { $option['percent'] = vb_number_format($option['votes'] < $pollinfo['voters'] ? $option['votes'] / $pollinfo['voters'] * 100 : 100, 2); } else { $option['percent'] = vb_number_format($options['votes'] < $pollinfo['numbervotes'] ? $option['votes'] / $pollinfo['numbervotes'] * 100 : 100, 2);
/** * Prepare any data needed for the output * * @param string The id of the block * @param array Options specific to the block */ function prepare_output($id = '', $options = array()) { global $show, $vbphrase; // don't include yourself in the visit count if ($this->profile->userinfo['userid'] != $this->registry->userinfo['userid']) { // profile visits $this->registry->db->query_write("\n\t\t\t\tUPDATE " . TABLE_PREFIX . "user SET\n\t\t\t\t\tprofilevisits = profilevisits + 1\n\t\t\t\tWHERE userid = " . $this->profile->userinfo['userid']); $this->profile->userinfo['profilevisits']++; // reflect this view } $this->profile->prepare('profilevisits'); // We shouldn't show as a profile visitor if ($this->registry->userinfo['userid'] and $this->profile->userinfo['userid'] != $this->registry->userinfo['userid']) { $this->registry->db->query_write("\n\t\t\t\tREPLACE INTO " . TABLE_PREFIX . "profilevisitor\n\t\t\t\t\t(userid, visitorid, dateline, visible)\n\t\t\t\tVALUES\n\t\t\t\t\t(\n\t\t\t\t\t\t" . $this->profile->userinfo['userid'] . ",\n\t\t\t\t\t\t" . $this->registry->userinfo['userid'] . ",\n\t\t\t\t\t\t" . TIMENOW . ",\n\t\t\t\t\t\t" . ($this->registry->userinfo['options'] & $this->registry->bf_misc_useroptions['invisible'] ? 0 : 1) . "\n\t\t\t\t\t)\n\t\t\t"); } // ensure this setting makes sense if ($options['profilemaxvisitors'] < 2) { $options['profilemaxvisitors'] = 2; } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('member_profileblock_recentvisitors_query')) ? eval($hook) : false; $visitors_db = $this->registry->db->query_read_slave("\n\t\t\tSELECT user.userid, user.username, user.usergroupid, user.displaygroupid, profilevisitor.visible, user.infractiongroupid\n\t\t\t\t{$hook_query_fields}\n\t\t\tFROM " . TABLE_PREFIX . "profilevisitor AS profilevisitor\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = profilevisitor.visitorid)\n\t\t\t{$hook_query_joins}\n\t\t\tWHERE profilevisitor.userid = " . $this->profile->userinfo['userid'] . "\n\t\t\t\t" . (!($this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canseehidden']) ? " AND (visible = 1 OR profilevisitor.visitorid = " . $this->registry->userinfo['userid'] . ")" : "") . "\n\t\t\t\t{$hook_query_where}\n\t\t\tORDER BY profilevisitor.dateline DESC\n\t\t\tLIMIT {$options['profilemaxvisitors']}\n\t\t"); $visitors = array(); while ($user = $this->registry->db->fetch_array($visitors_db)) { $visitors["{$user['username']}"] = $user; } uksort($visitors, 'strnatcasecmp'); if (!is_array($buddylist)) { if ($this->registry->userinfo['buddylist'] = trim($this->registry->userinfo['buddylist'])) { $buddylist = preg_split('/\\s+/', $this->registry->userinfo['buddylist'], -1, PREG_SPLIT_NO_EMPTY); } else { $buddylist = array(); } } $visitorcount = 0; $visitorbits = array(); foreach ($visitors as $user) { fetch_musername($user); $user['invisiblemark'] = !$user['visible'] ? '*' : ''; $user['buddymark'] = in_array($user['userid'], $buddylist) ? '+' : ''; $visitorcount++; $user['comma'] = $vbphrase['comma_space']; $visitorbits[$visitorcount] = $user; } // Last element if ($visitorcount) { $visitorbits[$visitorcount]['comma'] = ''; } $this->block_data['visitorbits'] = $visitorbits; $this->block_data['visitorcount'] = $visitorcount; }
/** * Process note as if an unregistered user posted */ function process_unregistered_user() { $this->message['rank'] = ''; $this->message['notesperday'] = 0; $this->message['displaygroupid'] = 1; $this->message['username'] = $this->message['postusername']; fetch_musername($this->message); $this->message['usertitle'] = $this->registry->usergroupcache['1']['usertitle']; $this->message['joindate'] = ''; $this->message['notes'] = 'n/a'; $this->message['avatar'] = ''; $this->message['profile'] = ''; $this->message['email'] = ''; $this->message['useremail'] = ''; $this->message['icqicon'] = ''; $this->message['aimicon'] = ''; $this->message['yahooicon'] = ''; $this->message['msnicon'] = ''; $this->message['skypeicon'] = ''; $this->message['homepage'] = ''; $this->message['findnotes'] = ''; $this->message['signature'] = ''; $this->message['reputationdisplay'] = ''; $this->message['onlinestatus'] = ''; }
/** * Fetches an array containing info for the specified user, or false if user is not found * * Values for Option parameter: * 1 - Nothing ... * 2 - Get avatar * 4 - Process user's online location * 8 - Join the customprofilpic table to get the userid just to check if we have a picture * 16 - Join the administrator table to get various admin options * 32 - Join the sigpic table to get the userid just to check if we have a picture * 64 - Get user's custom CSS * 128 - Is the logged in User a friend of this person? * Therefore: Option = 6 means 'Get avatar' and 'Process online location' * See fetch_userinfo() in the do=getinfo section of member.php if you are still confused * * @param integer (ref) User ID * @param integer Bitfield Option (see description) * * @return array The information for the requested user */ function fetch_userinfo(&$userid, $option = 0, $languageid = 0) { global $vbulletin, $usercache, $vbphrase; if ($userid == $vbulletin->userinfo['userid'] AND $option != 0 AND isset($usercache["$userid"])) { // clear the cache if we are looking at ourself and need to add one of the JOINS to our information. unset($usercache["$userid"]); } $userid = intval($userid); // return the cached result if it exists if (isset($usercache["$userid"])) { return $usercache["$userid"]; } $hook_query_fields = $hook_query_joins = ''; ($hook = vBulletinHook::fetch_hook('fetch_userinfo_query')) ? eval($hook) : false; // no cache available - query the user $user = $vbulletin->db->query_first_slave(" SELECT " . iif(($option & FETCH_USERINFO_ADMIN), ' administrator.*, ') . " userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate, user.languageid AS saved_languageid, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid" . iif(($option & FETCH_USERINFO_AVATAR) AND $vbulletin->options['avatarenabled'], ', avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight, customavatar.height_thumb AS avheight_thumb, customavatar.width_thumb AS avwidth_thumb, customavatar.filedata_thumb'). iif(($option & FETCH_USERINFO_PROFILEPIC), ', customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight') . iif(($option & FETCH_USERINFO_SIGPIC), ', sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight') . (($option & FETCH_USERINFO_USERCSS) ? ', usercsscache.cachedcss, IF(usercsscache.cachedcss IS NULL, 0, 1) AS hascachedcss, usercsscache.buildpermissions AS cssbuildpermissions' : '') . (isset($vbphrase) ? '' : fetch_language_fields_sql()) . (($vbulletin->userinfo['userid'] AND ($option & FETCH_USERINFO_ISFRIEND)) ? ", IF(userlist1.friend = 'yes', 1, 0) AS isfriend, IF (userlist1.friend = 'pending' OR userlist1.friend = 'denied', 1, 0) AS ispendingfriend" . ", IF(userlist1.userid IS NOT NULL, 1, 0) AS u_iscontact_of_bbuser, IF (userlist2.friend = 'pending', 1, 0) AS requestedfriend" . ", IF(userlist2.userid IS NOT NULL, 1, 0) AS bbuser_iscontact_of_user" : "") . " $hook_query_fields FROM " . TABLE_PREFIX . "user AS user LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid) LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid) " . iif(($option & FETCH_USERINFO_AVATAR) AND $vbulletin->options['avatarenabled'], "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(($option & FETCH_USERINFO_PROFILEPIC), "LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid) ") . iif(($option & FETCH_USERINFO_ADMIN), "LEFT JOIN " . TABLE_PREFIX . "administrator AS administrator ON (administrator.userid = user.userid) ") . iif(($option & FETCH_USERINFO_SIGPIC), "LEFT JOIN " . TABLE_PREFIX . "sigpic AS sigpic ON (user.userid = sigpic.userid) ") . (($option & FETCH_USERINFO_USERCSS) ? 'LEFT JOIN ' . TABLE_PREFIX . 'usercsscache AS usercsscache ON (user.userid = usercsscache.userid)' : '') . iif(!isset($vbphrase), "LEFT JOIN " . TABLE_PREFIX . "language AS language ON (language.languageid = " . (!empty($languageid) ? $languageid : "IF(user.languageid = 0, " . intval($vbulletin->options['languageid']) . ", user.languageid)") . ") ") . (($vbulletin->userinfo['userid'] AND ($option & FETCH_USERINFO_ISFRIEND)) ? "LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist1 ON (userlist1.relationid = user.userid AND userlist1.type = 'buddy' AND userlist1.userid = " . $vbulletin->userinfo['userid'] . ")" . "LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist2 ON (userlist2.userid = user.userid AND userlist2.type = 'buddy' AND userlist2.relationid = " . $vbulletin->userinfo['userid'] . ")" : "") . " $hook_query_joins WHERE user.userid = $userid "); if (!$user) { return false; } if (!isset($vbphrase) AND $user['lang_options'] === null) { trigger_error('The requested language does not exist, reset via tools.php.', E_USER_ERROR); } $user['languageid'] = (!empty($languageid) ? $languageid : $user['languageid']); // decipher 'options' bitfield $user['options'] = intval($user['options']); foreach ($vbulletin->bf_misc_useroptions AS $optionname => $optionval) { $user["$optionname"] = ($user['options'] & $optionval ? 1 : 0); //DEVDEBUG("$optionname = $user[$optionname]"); } foreach($vbulletin->bf_misc_adminoptions AS $optionname => $optionval) { $user["$optionname"] = ($user['adminoptions'] & $optionval ? 1 : 0); } // make a username variable that is safe to pass through URL links $user['urlusername'] = urlencode(unhtmlspecialchars($user['username'])); fetch_musername($user); // get the user's real styleid (not the cookie value) $user['realstyleid'] = $user['styleid']; $user['securitytoken_raw'] = sha1($user['userid'] . sha1($user['salt']) . sha1(COOKIE_SALT)); $user['securitytoken'] = TIMENOW . '-' . sha1(TIMENOW . $user['securitytoken_raw']); $user['logouthash'] =& $user['securitytoken']; if ($option & FETCH_USERINFO_LOCATION) { // Process Location info for this user require_once(DIR . '/includes/functions_online.php'); $user = fetch_user_location_array($user); } ($hook = vBulletinHook::fetch_hook('fetch_userinfo')) ? eval($hook) : false; $usercache["$userid"] = $user; return $usercache["$userid"]; }
} } // set a shortcut to the vbulletin->usergroupcache entry for this group $usergroup =& $vbulletin->usergroupcache["{$vbulletin->GPC['usergroupid']}"]; // initialize $joinrequestbits $joinrequestbits = ''; $numrequests =& $usergroups["{$vbulletin->GPC['usergroupid']}"]; // if there are some requests for this usergroup, display them if ($numrequests > 0) { // set defaults sanitize_pageresults($numrequests, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], 100, 20); $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $numrequests, 'joinrequests.php?' . $vbulletin->session->vars['sessionurl'] . "usergroupid={$vbulletin->GPC['usergroupid']}&pp=" . $vbulletin->GPC['perpage']); $requests = $db->query_read_slave("\n\t\t\tSELECT req.*, user.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "usergrouprequest AS req\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)\n\t\t\tWHERE req.usergroupid = " . $vbulletin->GPC['usergroupid'] . "\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t"); while ($request = $db->fetch_array($requests)) { fetch_musername($request); $request['date'] = vbdate($vbulletin->options['dateformat'], $request['dateline'], 1); $request['time'] = vbdate($vbulletin->options['timeformat'], $request['dateline']); exec_switch_bg(); ($hook = vBulletinHook::fetch_hook('joinrequest_view_bit')) ? eval($hook) : false; $templater = vB_Template::create('joinrequestsbit'); $templater->register('bgclass', $bgclass); $templater->register('request', $request); $joinrequestbits .= $templater->render(); } } // end if ($numrequests > 0) $show['joinrequests'] = iif($joinrequestbits != '', true, false); // make the navbar elements $navbits = construct_navbits(array('usercp.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['user_control_panel'], 'profile.php?' . $vbulletin->session->vars['sessionurl'] . "do=editusergroups" => $vbphrase['group_memberships'], '' => "{$vbphrase['join_requests']}: '{$usergroup['title']}'")); $includecss['joinrequests'] = 'joinrequests.css';
} unset($bbcode_parser); } // ############################### start pending friends ############################### $show['pendingfriendrequests'] = false; if ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_friends']) { list($pendingfriendrequests) = $vbulletin->db->query_first("\r\n\t\tSELECT COUNT(*)\r\n\t\tFROM " . TABLE_PREFIX . "userlist AS userlist\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "userlist AS userlist_ignore ON (userlist_ignore.userid = " . $vbulletin->userinfo['userid'] . " AND userlist_ignore.relationid = userlist.userid AND userlist_ignore.type = 'ignore')\r\n\t\tWHERE userlist.relationid = " . $vbulletin->userinfo['userid'] . "\r\n\t\t\tAND userlist.friend = 'pending' AND userlist_ignore.type IS NULL\r\n\t", DBARRAY_NUM); $show['pendingfriendrequests'] = $pendingfriendrequests ? true : false; if ($show['pendingfriendrequests']) { $pendingfriends = $vbulletin->db->query_read("\r\n\t\t\tSELECT user.*\r\n\t\t\tFROM " . TABLE_PREFIX . "userlist AS userlist\r\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "userlist AS userlist_ignore ON (userlist_ignore.userid = " . $vbulletin->userinfo['userid'] . " AND userlist_ignore.relationid = userlist.userid AND userlist_ignore.type = 'ignore')\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON\r\n\t\t\t\t(user.userid = userlist.userid)\r\n\t\t\tWHERE userlist.relationid = " . $vbulletin->userinfo['userid'] . "\r\n\t\t\t\tAND userlist.friend = 'pending' AND userlist_ignore.type IS NULL\r\n\t\t\tORDER BY user.lastactivity DESC\r\n\t\t\tLIMIT " . min(5, $pendingfriendrequests)); $pendingfriendbits = array(); $pendingfriendbits_joined = ''; $i = 0; while ($pendingfriend = $vbulletin->db->fetch_array($pendingfriends)) { $loggedin =& $pendingfriend; fetch_musername($loggedin); $show['comma_leader'] = $pendingfriendbits_joined != ''; $templater = vB_Template::create('forumdisplay_loggedinuser'); $templater->register('loggedin', $loggedin); $pendingfriendbits_joined .= $templater->render(); } if ($pendingfriendrequests > 5) { $pendingfriendstext = construct_phrase($vbphrase['you_have_pending_friend_requests_from_x_and_y_more'], $pendingfriendbits_joined, vb_number_format($pendingfriendrequests - 5)); } else { $pendingfriendstext = construct_phrase($vbphrase['you_have_pending_friend_requests_from_x'], $pendingfriendbits_joined); } $pendingfriendrequests = vb_number_format($pendingfriendrequests); } } // ############################### start visitor messages ############################### $show['newvisitormessages'] = false;
/** * Prepares the User's 'marked-up' username * */ function prepare_musername() { $this->prepared['musername'] = fetch_musername($this->userinfo); }
function fetch_thanks($postid = 0, $postids = '', $fetch_again = false) { global $vbulletin; static $cache, $act; ($hook = vBulletinHook::fetch_hook('post_thanks_function_fetch_thanks_start')) ? eval($hook) : false; if (!$cache && !$act || $fetch_again) { $cache = array(); if ($postids) { $post_ids = "0{$postids}"; } else { $post_ids = $postid; } if ($vbulletin->options['post_thanks_use_musername']) { $thanks = $vbulletin->db->query_read("SELECT * FROM " . TABLE_PREFIX . "post_thanks AS post_thanks INNER JOIN " . TABLE_PREFIX . "user AS user USING (userid) WHERE post_thanks.postid IN (" . $post_ids . ") ORDER BY post_thanks.username ASC"); } else { $thanks = $vbulletin->db->query_read("SELECT * FROM " . TABLE_PREFIX . "post_thanks WHERE postid IN (" . $post_ids . ") ORDER BY username ASC"); } while ($thank = $vbulletin->db->fetch_array($thanks)) { $cache[$thank['postid']][$thank['userid']]['userid'] = $thank['userid']; if ($vbulletin->options['post_thanks_use_musername']) { $cache[$thank['postid']][$thank['userid']]['username'] = fetch_musername($thank); } else { $cache[$thank['postid']][$thank['userid']]['username'] = $thank['username']; } $cache[$thank['postid']][$thank['userid']]['date'] = $thank['date']; $cache[$thank['postid']][$thank['userid']]['postid'] = $thank['postid']; } } ($hook = vBulletinHook::fetch_hook('post_thanks_function_fetch_thanks_end')) ? eval($hook) : false; $act = true; return $cache[$postid]; }
do { if (!$pagenumber) { $pagenumber = 1; } $start = ($pagenumber - 1) * $perpage; $picturebits = ''; $pictures = $vbulletin->db->query_read("\n\t\t\tSELECT SQL_CALC_FOUND_ROWS\n\t\t\t\tuser.*, albumpicture.dateline, albumpicture.albumid, album.title AS albumtitle\n\t\t\t\t" . ($vbulletin->options['avatarenabled'] ? ",avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight" : "") . "\n\t\t\t\t,picture.pictureid, picture.extension, picture.filesize, picture.idhash, picture.caption,\n\t\t\t\tpicture.thumbnail_filesize, picture.thumbnail_dateline, picture.thumbnail_width, picture.thumbnail_height\n\t\t\t\t{$hook_query_fields}\n\t\t\tFROM " . TABLE_PREFIX . "picture AS picture\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (picture.userid = user.userid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "albumpicture AS albumpicture ON (albumpicture.pictureid = picture.pictureid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "album AS album ON (album.albumid = albumpicture.albumid)\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)" : "") . "\n\t\t\t{$hook_query_joins}\n\t\t\tWHERE picture.state = 'moderation'\n\t\t\t\t{$datecut}\n\t\t\t\t{$hook_query_where}\n\t\t\tORDER BY {$sqlsortfield} {$sqlsortorder}\n\t\t\tLIMIT {$start}, {$perpage}\n\t\t"); list($picturetotal) = $vbulletin->db->query_first("SELECT FOUND_ROWS()", DBARRAY_NUM); if ($start >= $picturetotal) { $pagenumber = ceil($picturetotal / $perpage); } } while ($start >= $picturetotal and $picturetotal); require_once DIR . '/includes/functions_album.php'; $show['picture'] = true; while ($picture = $db->fetch_array($pictures)) { fetch_musername($picture); $picture['albumtitle'] = fetch_word_wrapped_string(fetch_censored_text($picture['albumtitle'])); // $picture contains comment, picture, and album info $pictureinfo = prepare_pictureinfo_thumb($picture, $picture); eval('$picturebits .= "' . fetch_template('moderation_picturebit') . '";'); } $pagenavbits = array("do=viewpics"); if ($perpage != $vbulletin->options['vm_perpage']) { $pagenavbits[] = "pp={$perpage}"; } if ($daysprune != ($vbulletin->userinfo['daysprune'] ? $vbulletin->userinfo['daysprune'] : 30)) { $pagenavbits[] = "daysprune={$daysprune}"; } if ($sortfield != 'dateline') { $pagenavbits[] = "sortfield={$sortfield}"; }
function convert_ids_to_titles() { global $vbulletin; global $albumids, $attachmentids, $calendarids, $eventids, $forumids, $infractionids, $pmids, $postids, $searchids, $socialgroupids, $threadids, $userids; global $wol_album, $wol_attachment, $wol_calendar, $wol_event, $wol_inf, $wol_pm, $wol_post, $wol_search, $wol_socialgroup, $wol_thread, $wol_user; /* if ($attachmentids) { $postidquery = $vbulletin->db->query_read_slave(" SELECT postid, attachmentid FROM " . TABLE_PREFIX . "attachment WHERE attachmentid IN (0$attachmentids) "); while ($postidqueryr = $vbulletin->db->fetch_array($postidquery)) { $postids .= ',' . $postidqueryr['postid']; $wol_attachment["$postidqueryr[attachmentid]"] = $postidqueryr['postid']; } } */ if ($postids) { $postidquery = $vbulletin->db->query_read_slave(" SELECT threadid, postid FROM " . TABLE_PREFIX . "post WHERE postid IN (0$postids) "); while ($postidqueryr = $vbulletin->db->fetch_array($postidquery)) { $threadids .= ',' . $postidqueryr['threadid']; $wol_post["$postidqueryr[postid]"] = $postidqueryr['threadid']; } } if ($socialgroupids) { $socialgroups = $vbulletin->db->query_read_slave(" SELECT name, groupid FROM " . TABLE_PREFIX . "socialgroup WHERE groupid IN (0$socialgroupids) "); while ($socialgroup = $vbulletin->db->fetch_array($socialgroups)) { $wol_socialgroup["$socialgroup[groupid]"]['name'] = $socialgroup['name']; } } if ($albumids) { $albums = $vbulletin->db->query_read_slave(" SELECT album.title, album.albumid, album.state, album.userid FROM " . TABLE_PREFIX . "album AS album LEFT JOIN " . TABLE_PREFIX . "profileblockprivacy AS profileblockprivacy ON (profileblockprivacy.userid = album.userid AND profileblockprivacy.blockid = 'albums') WHERE album.albumid IN (0$albumids) AND (profileblockprivacy.requirement = 0 OR profileblockprivacy.requirement IS NULL) "); while ($album = $vbulletin->db->fetch_array($albums)) { $wol_album["$album[albumid]"] = $album; } } if ($threadids) { $threadresults = $vbulletin->db->query_read_slave(" SELECT thread.title, thread.prefixid, thread.threadid, thread.forumid, thread.postuserid, thread.visible " . iif($vbulletin->options['threadpreview'] > 0, ",post.pagetext AS preview") . " " . iif($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid'], ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed") . " FROM " . TABLE_PREFIX . "thread AS thread " . iif($vbulletin->options['threadpreview'] > 0, "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.firstpostid)") . " " . iif($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid'], " LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . " AND canview = 1)") . " WHERE thread.threadid IN (0$threadids) "); while ($threadresult = $vbulletin->db->fetch_array($threadresults)) { $wol_thread["$threadresult[threadid]"]['title'] = $threadresult['title']; $wol_thread["$threadresult[threadid]"]['prefixid'] = $threadresult['prefixid']; $wol_thread["$threadresult[threadid]"]['forumid'] = $threadresult['forumid']; $wol_thread["$threadresult[threadid]"]['postuserid'] = $threadresult['postuserid']; $wol_thread["$threadresult[threadid]"]['isdeleted'] = ($threadresult['visible'] == 2) ? true : false; $wol_thread["$threadresult[threadid]"]['visible'] = ($threadresult['visible'] == 1) ? true : false; $wol_thread["$threadresult[threadid]"]['issubscribed'] = $threadresult['issubscribed']; // format thread preview if there is one $userperms = fetch_permissions($threadresult['forumid']); if (!empty($threadresult['preview']) AND $vbulletin->options['threadpreview'] > 0 AND ($userperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads'])) { // Get Buddy List $buddy = array(); if (trim($vbulletin->userinfo['buddylist'])) { $buddylist = preg_split('/( )+/', trim($vbulletin->userinfo['buddylist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($buddylist AS $buddyuserid) { $buddy["$buddyuserid"] = 1; } } DEVDEBUG('buddies: ' . implode(', ', array_keys($buddy))); // Get Ignore Users $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist AS $ignoreuserid) { if (!$buddy["$ignoreuserid"]) { $ignore["$ignoreuserid"] = 1; } } } DEVDEBUG('ignored users: ' . implode(', ', array_keys($ignore))); if (!$ignore["$threadresult[postuserid]"]) { $threadresult['preview'] = strip_quotes($threadresult['preview']); $threadresult['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($threadresult['preview'], $vbulletin->options['threadpreview']), false, true)); $wol_thread["$threadresult[threadid]"]['preview'] = $threadresult['preview']; } } } } if ($calendarids) { $calendarresults = $vbulletin->db->query_read_slave(" SELECT calendarid, title FROM " . TABLE_PREFIX . "calendar WHERE calendarid IN (0$calendarids) "); while ($calendarresult = $vbulletin->db->fetch_array($calendarresults)) { $wol_calendar["$calendarresult[calendarid]"] = $calendarresult['title']; } } if ($infractionids) { $infractions = $vbulletin->db->query_read_slave(" SELECT infractionid, userid FROM " . TABLE_PREFIX . "infraction WHERE infractionid IN (0$infractionids) "); while ($infraction = $vbulletin->db->fetch_array($infractions)) { $wol_inf["$infraction[infractionid]"]['userid'] = $infraction['userid']; $userids .= ',' . $infraction['userid']; } } if ($eventids) { $eventresults = $vbulletin->db->query_read_slave(" SELECT eventid, title, userid, calendarid FROM " . TABLE_PREFIX . "event WHERE eventid IN (0$eventids) "); while ($eventresult = $vbulletin->db->fetch_array($eventresults)) { $wol_event["$eventresult[eventid]"]['title'] = $eventresult['title']; $wol_event["$eventresult[eventid]"]['calendarid'] = $eventresult['calendarid']; $wol_event["$eventresult[eventid]"]['postuserid'] = $eventresult['userid']; } } if ($pmids AND ($vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull'])) { $pmresults = $vbulletin->db->query_read_slave(" SELECT pmtext.fromuserid, pm.pmid FROM " . TABLE_PREFIX . "pm AS pm LEFT JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON (pm.pmtextid = pmtext.pmtextid) WHERE pmid IN (0$pmids) "); while ($pmresult = $vbulletin->db->fetch_array($pmresults)) { $wol_pm["$pmresult[pmid]"] = $pmresult['fromuserid']; $userids .= ',' . intval($pmresult['fromuserid']); } } if ($searchids AND ($vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull'])) { //rework this to get what the code assumes the array looks like from the new search code. //in particular the searchuser value has been changed from a string to a bool based on usage //and the fact that we don't really have it. require_once(DIR . "/vb/search/core.php"); require_once(DIR . '/vb/search/criteria.php'); $searchresults = $vbulletin->db->query_read_slave(" SELECT searchlog.searchlogid AS searchid, searchlog.userid, searchlog.criteria FROM " . TABLE_PREFIX . "searchlog AS searchlog WHERE searchlog.searchlogid IN (0$searchids) "); while ($searchresult = $vbulletin->db->fetch_array($searchresults)) { if ($searchresult['criteria']) { $criteria = unserialize($searchresult['criteria']); $targetuserid = $criteria->get_target_userid(); if ($targetuserid) { $userids .= ",userid"; } $searchresult['targetuserid'] = $targetuserid; $searchresult['searchuser'] = (bool) $targetuserid; $searchresult['query'] = $criteria->get_raw_keywords(); unset($searchresult['criteria']); } $wol_search["$searchresult[searchid]"] = $searchresult; } } if ($userids AND ($vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull'])) { $userresults = $vbulletin->db->query_read_slave(" SELECT userid, username, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid FROM " . TABLE_PREFIX . "user AS user WHERE userid IN (0$userids) "); while ($userresult = $vbulletin->db->fetch_array($userresults)) { fetch_musername($userresult); $wol_user["$userresult[userid]"]['musername'] = $userresult['musername']; $wol_user["$userresult[userid]"]['username'] = $userresult['username']; } } ($hook = vBulletinHook::fetch_hook('online_ids_titles')) ? eval($hook) : false; }
$guests["{$count}"]['host'] = @gethostbyaddr($users['host']); } $guests["{$count}"]['count'] = $count + 1; $guests["{$count}"]['useragent'] = htmlspecialchars_uni($users['useragent']); $count++; ($hook = vBulletinHook::fetch_hook('online_user')) ? eval($hook) : false; } } if (!$foundviewer and $vbulletin->userinfo['userid'] and ($vbulletin->GPC['who'] == '' or $vbulletin->GPC['who'] == 'members')) { // Viewing user did not show up so fake him construct_im_icons($vbulletin->userinfo); $userinfo["{$vbulletin->userinfo['userid']}"] = $vbulletin->userinfo; $userinfo["{$vbulletin->userinfo['userid']}"]['location'] = '/online.php'; $userinfo["{$vbulletin->userinfo['userid']}"]['host'] = IPADDRESS; $userinfo["{$vbulletin->userinfo['userid']}"]['lastactivity'] = TIMENOW; fetch_musername($userinfo["{$vbulletin->userinfo['userid']}"]); $userinfo["{$vbulletin->userinfo['userid']}"]['hidden'] = iif($vbulletin->userinfo['invisible'], '*'); $userinfo["{$vbulletin->userinfo['userid']}"]['invisible'] = 0; if ($vbulletin->options['WOLresolve'] and $permissions['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlineip']) { $userinfo["{$vbulletin->userinfo['userid']}"]['host'] = @gethostbyaddr($userinfo["{$vbulletin->userinfo['userid']}"]['host']); } } $show['ip'] = iif($permissions['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlineip'], true, false); $show['ajax_resolve'] = ($show['ip'] and !$vbulletin->options['WOLresolve']); $show['useragent'] = iif($vbulletin->GPC['ua'], true, false); $show['hidden'] = iif($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden'], true, false); $show['badlocation'] = iif($permissions['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinebad'], true, false); if (is_array($userinfo)) { foreach ($userinfo as $key => $val) { if (!$val['invisible']) { $userinfo["{$key}"] = process_online_location($val, 1);
eval('$ad_location[\'ad_navbar_below\'] = "' . fetch_template('ad_navbar_below') . '";'); eval('$ad_location[\'ad_footer_start\'] = "' . fetch_template('ad_footer_start') . '";'); eval('$ad_location[\'ad_footer_end\'] = "' . fetch_template('ad_footer_end') . '";'); // process editor css if required if ($show['editor_css']) { require_once DIR . '/includes/functions_editor.php'; construct_editor_styles_js($style['editorstyles']); eval('$editor_css = "' . fetch_template('editor_css') . '";'); } // ############################################################################# // handle notices if (!empty($vbulletin->noticecache) and is_array($vbulletin->noticecache)) { $notices = ''; require_once DIR . '/includes/functions_notice.php'; if ($vbulletin->userinfo['userid'] == 0) { $vbulletin->userinfo['musername'] = fetch_musername($vbulletin->userinfo); } foreach (fetch_relevant_notice_ids() as $_noticeid) { $show['notices'] = true; $notice_html = str_replace(array('{musername}', '{username}', '{userid}', '{sessionurl}'), array($vbulletin->userinfo['musername'], $vbulletin->userinfo['username'], $vbulletin->userinfo['userid'], $vbulletin->session->vars['sessionurl']), $vbphrase["notice_{$_noticeid}_html"]); ($hook = vBulletinHook::fetch_hook('notices_noticebit')) ? eval($hook) : false; eval('$notices .= "' . fetch_template('navbar_noticebit') . '";'); } } else { $show['notices'] = false; $notices = ''; } // ############################################################################# // set up user notifications $show['notifications'] = false; if ($vbulletin->userinfo['userid']) {
function convert_ids_to_titles() { global $vbulletin; global $albumids, $attachmentids, $calendarids, $eventids, $forumids, $infractionids, $pmids, $postids, $searchids, $socialgroupids, $threadids, $userids; global $wol_album, $wol_attachment, $wol_calendar, $wol_event, $wol_inf, $wol_pm, $wol_post, $wol_search, $wol_socialgroup, $wol_thread, $wol_user; if ($attachmentids) { $postidquery = $vbulletin->db->query_read_slave("\n\t\t\tSELECT postid, attachmentid\n\t\t\tFROM " . TABLE_PREFIX . "attachment\n\t\t\tWHERE attachmentid IN (0{$attachmentids})\n\t\t"); while ($postidqueryr = $vbulletin->db->fetch_array($postidquery)) { $postids .= ',' . $postidqueryr['postid']; $wol_attachment["{$postidqueryr['attachmentid']}"] = $postidqueryr['postid']; } } if ($postids) { $postidquery = $vbulletin->db->query_read_slave("\n\t\t\tSELECT threadid, postid\n\t\t\tFROM " . TABLE_PREFIX . "post\n\t\t\tWHERE postid IN (0{$postids})\n\t\t"); while ($postidqueryr = $vbulletin->db->fetch_array($postidquery)) { $threadids .= ',' . $postidqueryr['threadid']; $wol_post["{$postidqueryr['postid']}"] = $postidqueryr['threadid']; } } if ($socialgroupids) { $socialgroups = $vbulletin->db->query_read_slave("\n\t\t\tSELECT name, groupid\n\t\t\tFROM " . TABLE_PREFIX . "socialgroup\n\t\t\tWHERE groupid IN (0{$socialgroupids})\n\t\t"); while ($socialgroup = $vbulletin->db->fetch_array($socialgroups)) { $wol_socialgroup["{$socialgroup['groupid']}"]['name'] = $socialgroup['name']; } } if ($albumids) { $albums = $vbulletin->db->query_read_slave("\n\t\t\tSELECT title, albumid, state, userid\n\t\t\tFROM " . TABLE_PREFIX . "album\n\t\t\tWHERE albumid IN (0{$albumids})\n\t\t"); while ($album = $vbulletin->db->fetch_array($albums)) { $wol_album["{$album['albumid']}"] = $album; } } if ($threadids) { $threadresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT thread.title, thread.prefixid, thread.threadid, thread.forumid, thread.postuserid, thread.visible\n\t\t\t" . iif($vbulletin->options['threadpreview'] > 0, ",post.pagetext AS preview") . "\n\t\t\t" . iif($vbulletin->options['threadsubscribed'] and $vbulletin->userinfo['userid'], ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed") . "\n\t\t\tFROM " . TABLE_PREFIX . "thread AS thread\n\t\t\t" . iif($vbulletin->options['threadpreview'] > 0, "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.firstpostid)") . "\n\t\t\t" . iif($vbulletin->options['threadsubscribed'] and $vbulletin->userinfo['userid'], " LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . " AND canview = 1)") . "\n\t\t\tWHERE thread.threadid IN (0{$threadids})\n\t\t"); while ($threadresult = $vbulletin->db->fetch_array($threadresults)) { $wol_thread["{$threadresult['threadid']}"]['title'] = $threadresult['title']; $wol_thread["{$threadresult['threadid']}"]['prefixid'] = $threadresult['prefixid']; $wol_thread["{$threadresult['threadid']}"]['forumid'] = $threadresult['forumid']; $wol_thread["{$threadresult['threadid']}"]['postuserid'] = $threadresult['postuserid']; $wol_thread["{$threadresult['threadid']}"]['isdeleted'] = $threadresult['visible'] == 2 ? true : false; $wol_thread["{$threadresult['threadid']}"]['visible'] = $threadresult['visible'] == 1 ? true : false; $wol_thread["{$threadresult['threadid']}"]['issubscribed'] = $threadresult['issubscribed']; // format thread preview if there is one $userperms = fetch_permissions($threadresult['forumid']); if (!empty($threadresult['preview']) and $vbulletin->options['threadpreview'] > 0 and $userperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) { // Get Buddy List $buddy = array(); if (trim($vbulletin->userinfo['buddylist'])) { $buddylist = preg_split('/( )+/', trim($vbulletin->userinfo['buddylist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($buddylist as $buddyuserid) { $buddy["{$buddyuserid}"] = 1; } } DEVDEBUG('buddies: ' . implode(', ', array_keys($buddy))); // Get Ignore Users $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist as $ignoreuserid) { if (!$buddy["{$ignoreuserid}"]) { $ignore["{$ignoreuserid}"] = 1; } } } DEVDEBUG('ignored users: ' . implode(', ', array_keys($ignore))); if (!$ignore["{$threadresult['postuserid']}"]) { $threadresult['preview'] = strip_quotes($threadresult['preview']); $threadresult['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($threadresult['preview'], $vbulletin->options['threadpreview']), false, true)); $wol_thread["{$threadresult['threadid']}"]['preview'] = $threadresult['preview']; } } } } if ($calendarids) { $calendarresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT calendarid, title\n\t\t\tFROM " . TABLE_PREFIX . "calendar\n\t\t\tWHERE calendarid IN (0{$calendarids})\n\t\t"); while ($calendarresult = $vbulletin->db->fetch_array($calendarresults)) { $wol_calendar["{$calendarresult['calendarid']}"] = $calendarresult['title']; } } if ($infractionids) { $infractions = $vbulletin->db->query_read_slave("\n\t\t\tSELECT infractionid, userid\n\t\t\tFROM " . TABLE_PREFIX . "infraction\n\t\t\tWHERE infractionid IN (0{$infractionids})\n\t\t"); while ($infraction = $vbulletin->db->fetch_array($infractions)) { $wol_inf["{$infraction['infractionid']}"]['userid'] = $infraction['userid']; $userids .= ',' . $infraction['userid']; } } if ($eventids) { $eventresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT eventid, title, userid, calendarid\n\t\t\tFROM " . TABLE_PREFIX . "event\n\t\t\tWHERE eventid IN (0{$eventids})\n\t\t"); while ($eventresult = $vbulletin->db->fetch_array($eventresults)) { $wol_event["{$eventresult['eventid']}"]['title'] = $eventresult['title']; $wol_event["{$eventresult['eventid']}"]['calendarid'] = $eventresult['calendarid']; $wol_event["{$eventresult['eventid']}"]['postuserid'] = $eventresult['userid']; } } if ($pmids and $vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull']) { $pmresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT pmtext.fromuserid, pm.pmid\n\t\t\tFROM " . TABLE_PREFIX . "pm AS pm\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON (pm.pmtextid = pmtext.pmtextid)\n\t\t\tWHERE pmid IN (0{$pmids})\n\t\t\t"); while ($pmresult = $vbulletin->db->fetch_array($pmresults)) { $wol_pm["{$pmresult['pmid']}"] = $pmresult['fromuserid']; $userids .= ',' . intval($pmresult['fromuserid']); } } if ($searchids and $vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull']) { $searchresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT searchid, search.userid, query, searchuser, user.userid AS targetuserid\n\t\t\tFROM " . TABLE_PREFIX . "search AS search\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.username = search.searchuser)\n\t\t\tWHERE searchid IN (0{$searchids})\n\t\t"); while ($searchresult = $vbulletin->db->fetch_array($searchresults)) { if ($searchresult['searchuser']) { if (!$searchresult['targetuserid']) { $result = $vbulletin->db->query_first_slave("\n\t\t\t\t\t\tSELECT userid AS targetuserid\n\t\t\t\t\t\tFROM " . TABLE_PREFIX . "user\n\t\t\t\t\t\tWHERE username = '******'searchuser'])) . "'\n\t\t\t\t\t"); } if ($result['targetuserid']) { $searchresult['targetuserid'] = $result['targetuserid']; } if ($searchresult['targetuserid']) { $userids .= ",{$searchresult['targetuserid']}"; } } $wol_search["{$searchresult['searchid']}"] = $searchresult; } } if ($userids and $vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonlinefull']) { $userresults = $vbulletin->db->query_read_slave("\n\t\t\tSELECT userid, username, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid\n\t\t\tFROM " . TABLE_PREFIX . "user AS user\n\t\t\tWHERE userid IN (0{$userids})\n\t\t"); while ($userresult = $vbulletin->db->fetch_array($userresults)) { fetch_musername($userresult); $wol_user["{$userresult['userid']}"] = $userresult['musername']; } } ($hook = vBulletinHook::fetch_hook('online_ids_titles')) ? eval($hook) : false; }
} // ####################################################################### if ($_REQUEST['do'] == 'viewmembers') { $vbulletin->input->clean_array_gpc('r', array('perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT)); $perpage = $vbulletin->GPC['perpage']; $pagenumber = $vbulletin->GPC['pagenumber']; $totalmembers = $group['members']; sanitize_pageresults($totalmembers, $pagenumber, $perpage); $groupmembers = $vbulletin->db->query_read("\n\t\tSELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,\n\t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible,\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? 'avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight,' : '') . "\n\t\t\tcustomprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight,\n\t\t\tuser.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype\n\t\tFROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember\n\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)\n\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') . "\n\t\tLEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid)\n\t\tWHERE socialgroupmember.groupid = " . $vbulletin->GPC['groupid'] . " AND socialgroupmember.type = 'member'\n\t\tORDER BY user.username\n\t\tLIMIT " . ($pagenumber - 1) * $perpage . ", {$perpage}\n\t"); require_once DIR . '/includes/functions_bigthree.php'; while ($groupmember = $vbulletin->db->fetch_array($groupmembers)) { $width = 0; $height = 0; $alt = exec_switch_bg(); fetch_avatar_from_userinfo($groupmember, true); fetch_musername($groupmember); $user =& $groupmember; fetch_online_status($user, true); construct_im_icons($user, true); ($hook = vBulletinHook::fetch_hook('group_memberbit')) ? eval($hook) : false; eval('$member_list .= "' . fetch_template('memberinfo_small') . '";'); } $navbits = array('group.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['social_groups'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'groupid=' . $group['groupid'] => $group['name'], '' => $vbphrase['member_list']); $custompagetitle = $group['name'] . ' - ' . $vbphrase['member_list']; $pagenav = construct_page_nav($pagenumber, $perpage, $totalmembers, 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'do=viewmembers&groupid=' . $group['groupid'] . ($perpage ? "&pp={$perpage}" : '')); eval('$memberinfo_css = "' . fetch_template('memberinfo_css') . '";'); $templatename = 'socialgroups_memberlist'; } // ####################################################################### if ($_REQUEST['do'] == 'search') { $navbits = array('group.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['social_groups'], '' => $vbphrase['advanced_search']);