PDA

View Full Version : Roster module


Zephanor
05-22-2004, 06:31 AM
I'm using vBadvanced on my VB board (version 3.0.1) and was wondering if anyone knew of a roster module that I can use. I'm an admin for an Everquest guild and we would like to be able to place a member roster that sorts by class, level, name and so forth. Anything and everything you can think of that I could look at would be great.

Thanks!

:)

Praxin
05-22-2004, 10:35 AM
You should be able to customize the existing member list to do all that for you - granted I havent asked my users for their class/level cuz if anyone wants to know them they can look up using the Guild Mngmt tool in game, but I have all the PoP flags on it and some older stuff going back to ST/VT/VP keys

Club3G
11-05-2004, 12:51 PM
Bump on this, since I just left Everquest and run a WoW guild now.

My guild is multiserver, so I'd like a specific mod for it, even just a simple set of tables that each user can add to. :)

jamesk
12-18-2004, 12:55 AM
THis would be extremely nice to have.

deverhart
08-24-2005, 10:51 AM
like this?

http://www.fnfguild.com/forum/showroster.php?

after I fix 1 problem and write some install instructions I may release it as a mod

Tremok
09-15-2005, 06:47 AM
I run a WoW guild site as well and that mod would be perfect dever, if custom tailored for WoW classes. I could do that part myself, but I don't know enough PHP to write my own roster from scratch.

Thanks for the hard work.

Marco van Herwaarden
09-15-2005, 07:40 AM
Sorry but you completly lost me here. Please try to explain a bit more. I know nothing about WoW classes or rosters.

Tremok
09-15-2005, 04:10 PM
Sorry but you completly lost me here. Please try to explain a bit more. I know nothing about WoW classes or rosters.

At minimum, what I and the other posters are looking for, is a hack that generates a list based on all the members in one or several user groups. So, for example, I can have guests on my board, but then I also have members of my guild in that user group, and I want to generate a list dynamically of all the members of my guild.

The code, therefore, would query for all the members of this group (as well as the moderators / officers and webmaster / admin) and then generate a roster of the guild. Additional functionality would include profile fields for information about the members' characters, such as race, level, rank in the guild, etc. All of this information could be included in the roster as well.

If someone wanted to get really technical, then there are some specific features that would make it really nice - such as the character profile fields being visible only to members of certain user groups, but that the roster page still be publicly viewable.

Anyway, that's the gist, and deverhart already has a great looking hack going on his site for Everquest - one that would work pretty damn well for me if I could get it ported to using World of Warcraft info instead of EQ, something that should be pretty easy, even for someone like me.

Borgs8472
09-18-2005, 04:28 PM
Clone your memberlist.php and call it something else. Get it to call a template similar to the memberlist, but add the WOW user profile fields there too. :)

CruelAngel
10-24-2005, 07:56 AM
like this?

http://www.fnfguild.com/forum/showroster.php?

after I fix 1 problem and write some install instructions I may release it as a mod

Eactly what I'm looking for for a WOW guild also.

Laraya
05-19-2006, 08:35 AM
I did this:
http://www.burningadrenaline.de/forum/guildroster.php

xD

wichall
05-20-2006, 09:00 PM
laraya yours is nice, would love to have it :P

Laraya
05-21-2006, 10:46 AM
Well it's not really professional xD if here's a good coder maybe he might be able to modify it, so that we can release it xD

wichall
05-22-2006, 12:19 AM
Well this is the original that was for php nuke and in french: http://sourceforge.net/projects/wowrosterfr but me and laraya have modified it to work with vb and be english/german. Thanks laraya for the help :)

Another thing i found was: http://www.rpgoutfitter.com/WoWGuildManager/ but haven't looked at it and am quite happy with wrfr for the moment.

Example of the WRFR on my site (pretty much the same as laraya's) http://www.titansofazeroth.co.uk/forum/guildroster.php

danbc
05-31-2006, 04:37 PM
Someone should release this as a hack, very nice looking :)

Salkiri
06-16-2006, 03:21 AM
I downloaded the French version, but since I can't read it, I don't know how to install it.

Wichall or Laraya can you point me into the right direction on how you got this implemented on your VB?

pirotess
06-16-2006, 02:08 PM
I've cobbled mine together over the last 6 years while I taught myself rudimentary PHP/MySQL programming. As such the code would probably make most coders eyes bleed but Im proud of it nonetheless. The roster is coded to automatically update as I move members in and out of vBulletin security groups. So when I move a user from the active member groups to the retired member group it removes them from the roster. If I add them to the Leave of Abscense secondary group it marks them as such on the roster. If I raise them to an officer it updates that as well. It also does some basic statistics at the bottom of the page and runs off of vBulletins CSS.

http://www.shadowedsoul.com/index.php?page=viewroster

Past that I built an editor for my members to use to update certain fields in the roster so I didnt have to keep up with it all the time. Its security controlled so only people on the roster can get to the page but heres a screenshot of it.

All that said though it would take a good bit of work to get it in any kind of shape for release. I've recently started looking into learning how to create products and plugins though so it might be how I learn to do that. If so I'll let you guys know.

Laraya
06-20-2006, 08:32 AM
Well is just used the roster and modified the output... then i created a file called guildroster.php.... the content is very simple :P

<?php
/*================================================= =====================*\
|| ################################################## ################## ||
|| # vBulletin 3.5.4 - Licence Number
|| # ---------------------------------------------------------------- # ||
|| # Copyright ?2000-2006 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', 'guildroster');

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array('holiday');

// get special data templates from the datastore
$specialtemplates = array(
'userstats',
'birthdaycache',
'maxloggedin',
'iconcache',
'eventcache',
'mailqueue'
);

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

// pre-cache templates used by specific actions
$actiontemplates = array();



// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once(DIR . '/includes/functions_bigthree.php');
require_once(DIR . '/includes/functions_forumlist.php');
($hook = vBulletinHook::fetch_hook('forumhome_start')) ? eval($hook) : false;

$today = vbdate('Y-m-d', TIMENOW, false, false);

// ### TODAY'S BIRTHDAYS #################################################
if ($vbulletin->options['showbirthdays'])
{
if (!is_array($vbulletin->birthdaycache) OR ($today != $vbulletin->birthdaycache['day1'] AND $today != $vbulletin->birthdaycache['day2']))
{
// Need to update!
require_once(DIR . '/includes/functions_databuild.php');
$birthdaystore = build_birthdays();
DEVDEBUG('Updated Birthdays');
}
else
{
$birthdaystore = $vbulletin->birthdaycache;
}

switch ($today)
{
case $birthdaystore['day1']:
$birthdays = $birthdaystore['users1'];
break;

case $birthdaystore['day2']:
$birthdays = $birthdaystore['users2'];
break;
}
// memory saving
unset($birthdaystore);

if ($stylevar['dirmark'])
{
$birthdays = str_replace('<!--rlm-->', $stylevar['dirmark'], $birthdays);
}

$show['birthdays'] = iif ($birthdays, true, false);
}
else
{
$show['birthdays'] = false;
}

// ### TODAY'S EVENTS #################################################
if ($vbulletin->options['showevents'])
{
require_once(DIR . '/includes/functions_calendar.php');

$future = gmdate('n-j-Y' , TIMENOW + 86400 * $vbulletin->options['showevents']);

if (!is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache['date'])
{
// Need to update!
require_once(DIR . '/includes/functions_databuild.php');
$eventstore = build_events();
DEVDEBUG('Updated Events');
}
else
{
$eventstore = $vbulletin->eventcache;
}

unset($eventstore['date']);
$events = array();
$eventcount = 0;
foreach ($eventstore AS $eventid => $eventinfo)
{
$offset = $eventinfo['utc'] ? $vbulletin->userinfo['timezoneoffset'] : ($vbulletin->userinfo['timezoneoffset'] ? $vbulletin->userinfo['tzoffset'] : $vbulletin->userinfo['timezoneoffset']);
$eventstore["$eventid"]['dateline_from_user'] = $eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600;
$eventstore["$eventid"]['dateline_to_user'] = $eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600;
$gettime = TIMENOW - $vbulletin->options['hourdiff'];
$iterations = 0;
$todaydate = getdate($gettime);

if ($vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
{
if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
{
if (!$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$events["$eventid"][] = $gettime;
}
else
{
while ($iterations < $vbulletin->options['showevents'])
{
$addcache = false;

$todaydate = getdate($gettime);
if ($eventinfo['holidayid'] AND $eventinfo['recurring'] == 6)
{
if ($eventinfo['recuroption'] == "$todaydate[mon]|$todaydate[mday]")
{
$addcache = true;
}
}
else if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$addcache = true;
}



if ($addcache)
{
if (!$vbulletin->options['showeventtype'])
{
$events["$eventid"][] = $gettime;
}
else
{
$events["$gettime"][] = $eventid;
}
$eventcount++;
}

$iterations++;
$gettime += 86400;
}
}
}
}
}

if (!empty($events))
{
if ($vbulletin->options['showeventtype'])
{
ksort($events, SORT_NUMERIC);
}
else
{
function groupbyevent($a, $b)
{
if ($a[0] == $b[0]) { return 0; }
else { return ($a[0] < $b[0]) ? -1 : 1; }
}
uasort($events, 'groupbyevent');
}

foreach($events AS $index => $value)
{
$pastevent = 0;
$pastcount = 0;

$comma = $eventdates = $daysevents = '';
if (!$vbulletin->options['showeventtype'])
{ // Group by Event // $index = $eventid
$eventinfo = $eventstore["$index"];
if (empty($eventinfo['recurring']) AND empty($eventinfo['singleday']))
{ // ranged event -- show it from its real start and real end date (vbgmdate)
$eventdates = construct_phrase($vbphrase['event_x_to_y'], vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true), vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_to_user'], false, true, false, true));
$day = vbdate('Y-n-j', $eventinfo['dateline_from_user'], false, false);
}
else
{
unset($day);
foreach($value AS $key => $dateline)
{
if (($dateline - 86400) == $pastevent AND !$eventinfo['holidayid'])
{
$pastevent = $dateline;
$pastcount++;
continue;
}
else
{
if ($pastcount)
{
$eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false));
}
$pastcount = 0;
$pastevent = $dateline;
}
if (!$day)
{
$day = vbdate('Y-n-j', $dateline, false, false, false);
}
$eventdates .= $comma . vbdate($vbulletin->options['dateformat'], $dateline, false, true, false);
$comma = ', ';
}
if ($pastcount)
{
$eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false));
}
}

if ($eventinfo['holidayid'])
{
$callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>";
}
else
{
$callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
}
}
else
{ // Group by Date
$eventdate = vbdate($vbulletin->options['dateformat'], $index, false, true, false);

$day = vbdate('Y-n-j', $index, false, true, false);
foreach($value AS $key => $eventid)
{
$eventinfo = $eventstore["$eventid"];
if ($eventinfo['holidayid'])
{
$daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>";
}
else
{
$daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
}
$comma = ', ';
}
}

($hook = vBulletinHook::fetch_hook('forumhome_event')) ? eval($hook) : false;
eval('$upcomingevents .= "' . fetch_template('forumhome_event') . '";');
}
// memory saving
unset($events, $eventstore);
}
$show['upcomingevents'] = iif ($upcomingevents, true, false);
$show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true, false);
}
else
{
$show['upcomingevents'] = false;
}

// ### LOGGED IN USERS #################################################
$activeusers = '';
if ($vbulletin->options['displayloggedin'] AND !$show['search_engine'])
{
$datecut = TIMENOW - $vbulletin->options['cookietimeout'];
$numbervisible = 0;
$numberregistered = 0;
$numberguest = 0;

$forumusers = $db->query_read("
SELECT
user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
session.userid, session.inforum, session.lastactivity,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
FROM " . TABLE_PREFIX . "session AS session
LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
WHERE session.lastactivity > $datecut
" . iif($vbulletin->options['displayloggedin'] == 1, "ORDER BY username ASC") . "
");

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,
'usergroupid' => $vbulletin->userinfo['usergroupid'],
'displaygroupid' => $vbulletin->userinfo['displaygroupid'],
)
);
}
else
{
$userinfos = array();
}
$inforum = array();

while ($loggedin = $db->fetch_array($forumusers))
{
$userid = $loggedin['userid'];
if (!$userid)
{ // Guest
$numberguest++;
$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'])
{
$inforum["$loggedin[inforum]"]++;
}
$loggedin['musername'] = fetch_musername($loggedin);

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

if (fetch_online_status($loggedin))
{
$numbervisible++;
eval('$activeusers .= ", ' . fetch_template('forumhome_loggedinuser') . '";');
}
}

// memory saving
unset($userinfos, $loggedin);

$activeusers = substr($activeusers, 2); // get rid of initial comma

$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));
}

$recordusers = vb_number_format($vbulletin->maxloggedin['maxonline']);;
$recorddate = vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], true);
$recordtime = vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']);

$show['loggedinusers'] = true;
}
else
{
$show['loggedinusers'] = false;
}

// ### BOARD STATISTICS #################################################

// 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']);
$newusername = $vbulletin->userstats['newusername'];
$newuserid = $vbulletin->userstats['newuserid'];
$activemembers = vb_number_format($vbulletin->userstats['activemembers']);
$show['activemembers'] = ($vbulletin->options['activememberdays'] > 0 AND ($vbulletin->options['activememberoptions'] & 2)) ? true : false;
// ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTTA HERE... ###
($hook = vBulletinHook::fetch_hook('forumhome_complete')) ? eval($hook) : false;
eval('$navbar = "' . fetch_template('navbar') . '";');
$tri = $_GET['tri'];
$url = "http://www.burningadrenaline.de/roster/index.php?pguild=1&tri=".$tri."";
$bla = implode('', file ($url));
eval('$roster = ".$bla.";');
eval('print_output("' . fetch_template('ROSTERDISPLAY') . '");');

/*================================================= =====================*\
|| ################################################## ##################
|| # Downloaded: 19:07, Wed Feb 22nd 2006
|| # CVS: $RCSfile: index.php,v $ - $Revision: 1.172.2.3 $
|| ################################################## ##################
\*================================================ ======================*/
?>


Ceate a Template called ROSTERDISPLAY where u use a variable called $roster ....

danbc
07-16-2006, 09:17 AM
That is all a lot too geeky for me :(

lanc3lot
07-16-2006, 12:12 PM
How u can install this? some more clear instructions around?:)

danbc
08-12-2006, 08:09 AM
Any news on this guys?

DigitalDesktops
08-24-2006, 01:15 AM
I would be interested in getting this made.

Mithan
09-13-2006, 12:45 PM
We use http://www.wowroster.com

you can see it on my site at http://www.wowhq.com

Elenna
08-01-2007, 06:34 PM
I've cobbled mine together over the last 6 years while I taught myself rudimentary PHP/MySQL programming. As such the code would probably make most coders eyes bleed but Im proud of it nonetheless. The roster is coded to automatically update as I move members in and out of vBulletin security groups. So when I move a user from the active member groups to the retired member group it removes them from the roster. If I add them to the Leave of Abscense secondary group it marks them as such on the roster. If I raise them to an officer it updates that as well. It also does some basic statistics at the bottom of the page and runs off of vBulletins CSS.

http://www.shadowedsoul.com/index.php?page=wowroster

Past that I built an editor for my members to use to update certain fields in the roster so I didnt have to keep up with it all the time. Its security controlled so only people on the roster can get to the page but heres a screenshot of it.

All that said though it would take a good bit of work to get it in any kind of shape for release. I've recently started looking into learning how to create products and plugins though so it might be how I learn to do that. If so I'll let you guys know.

The updated roster link is here:
http://www.shadowedsoul.com/index.php?page=viewroster

Pirotess, if you're still around, does your modification only work with EQ guilds, or is it flexible enough for other games' rosters?

pirotess
08-01-2007, 07:35 PM
Hehe wow old thread.

It started off as an EQ roster 7 years ago or so and ported it to WoW about two years ago now. Its flexible enough to support any game but requires custom editing at the moment to do so. I havent done any of the things I mentioned up above to pretty up the code which would go a long way towards making it easy to adapt to other games.

I still have a passion to do so but my freetime is extremely limited with our WoW raiding schedule, work and family life.