PDA

View Full Version : Total Users In Usergroup


Davey-UK
02-02-2014, 10:17 AM
Hello all.
Could anyone point me in the right direction, as to how to show the total number of members in a certain usergroup in a sidebar module and/or on the forumhome.

If it helps, the usergroup number is 12.

Thanks a bunch. :)

kh99
02-02-2014, 11:13 AM
Well, you could do this:
if ($result = $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$num_members = $result['count'];
}


Then either pre-register $num_members to a template where you want to use it, or else create a php type block and return some html that includes that variable.

Davey-UK
02-02-2014, 11:53 AM
Mmm, thanks i will give it a whirl.
Do you mean add the text you have added as a plugin, then make a new template which can be called via $num_members ?

kh99
02-02-2014, 12:14 PM
If you want to make a forum block, then you can make a php type block and use that code as part of it. If you want to put the value in an existing template, then you need to create a plugin, use that code, and also add a line to pre-register it to the template you want it to display in (and also edit the template to add something like {vb:raw num_members}).

For example, if you wanted to add it somewhere in the FORUMHOME template, you could create a plugin using hook location forumhome_complete and code like this:
if ($result = $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$num_grp_members = $result['count'];
vB_Template::preRegister('FORUMHOME', array('num_grp_members' => $num_grp_members));
}


Then in FORUMHOME, something like:
<vb:if condition="isset($num_grp_members)">There are {vb:raw num_grp_members} in group 12</vb:if>


BTW, you wouldn't expect that query to fail, but it's good to check anyway and do something reasonable rather than display 0.

(I changed it to use num_grp_members because I think num_members might be used already).

kh99
02-02-2014, 12:30 PM
Oh, I also meant to mention: that query only works if 12 is the users' primary usergroup. If you're using it as a secondary group it needs to be modified to check the membergroups column.

Davey-UK
02-02-2014, 12:41 PM
Fabulous!! Thankyou. That works great on Forum Home.
I tried the code in a php block, but it causes a white screen of nothingness on the forum.

Not my forte unfortunately.

Thankyou though, i have a starting block at least. :up:

kh99
02-02-2014, 12:43 PM
Hmm...you may need to add "global $vbulletin;" to the beginning to use it in a forum block.

Davey-UK
02-02-2014, 12:47 PM
Strange.
I added
if ($result = global $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$num_grp_members = $result['count'];
}

to a forum block, and it does stop the white screen, but the block doesn't show at all.

kh99
02-02-2014, 12:51 PM
Sorry I wasn't clear, it should be:
global $vbulletin;
if ($result = $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$num_grp_members = $result['count'];
}


But you also need to return some html to see anything.

Davey-UK
02-02-2014, 12:58 PM
Yes that works, but still not showing the number in sideblock. Would this be correct?
global $vbulletin;
if ($result = $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$output = "We currently have" . $num_grp_members . "<br />" . "<a href=http://www.mysite.com/forum/payments.php> Upgrade now</a>";

return $output;
}

kh99
02-02-2014, 01:01 PM
Oops, I left out the part where you set $num_grp_members (I think I originally posted it like that then edited the post to fix it). Also, you should use <br /> instead of \n. So, try this:
global $vbulletin;
if ($result = $vbulletin->db->query_first("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "user WHERE usergroupid = 12"))
{
$output = "We currently have " . $result['count'] . "<br /><a href=http://www.mysite.com/forum/payments.php> Upgrade now</a>";

return $output;
}

Davey-UK
02-02-2014, 01:07 PM
Woop! Fantastic, that works a treat! I was editing my last post to include <br /> as you must have been typing this. LOL
Thankyou so much for this swift answering, its fab. Now for some styling.
Thanks again

Davey-UK
06-09-2014, 05:39 AM
You wouldnt know how to fetch the last paid member username, or even the last 3, and place it in the sidebar with this bit of code would you?
Thanks