MyBB Community Forums

Full Version: Display all members of a usergroup on a custom page?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
I've got PageManager installed and I would like to display all users of a certain usergroup on a custom page. What's the PHP Code I need to use to display all the members of that particular usergroup on that page?

Help would be appreciated as I'm stuck here. 

I tried looking around on Google but I couldn't find anything about it.

Thanks! Big Grin

Bumpy bump
* Bumping this as I'm curious as well.

I'm going to assume automatically that you'll have to use PHP and NOT use the MyBB templates, so it may work better as a plugin UNLESS you're okay with that page not displaying like the rest of the forum.

I know it would require pulling users from the database, so I'm curious what the function would be as well.
It's not a big deal Wink

I attached a simple PageManager page with a desired list.
You can change the listed user group member by editing the query "usergroup IN ('2', '4') parameters.

Simple import the page on PageManager in ACP
[attachment=38341]
(2017-02-07, 08:56 PM)SvePu Wrote: [ -> ]It's not a big deal Wink

I attached a simple PageManager page with a desired list.
You can change the listed user group member by editing the query "usergroup IN ('2', '4') parameters.

Simple import the page on PageManager in ACP

I will try this.

Edit: Doesn't even work. Shows a blank page.
(2017-02-08, 03:07 AM)Rory Mercury Wrote: [ -> ]I will try this.

Edit: Doesn't even work. Shows a blank page.

Do you have enabled the imported page on PageManager ??
<?xml version="1.0" encoding="UTF-8"?>
<pagemanager version="1.5.2" xmlns="http://mods.mybb.com/view/page-manager">
	<page>
		<name><![CDATA[UserGroupMember]]></name>
		<url><![CDATA[usergroupmembers]]></url>
		<template><![CDATA[PD9waHANCg0KZ2xvYmFsICRoZWFkZXJpbmNsdWRlLCAkaGVhZGVyLCAkdGhlbWUsICRmb290ZXIsICRkYjsNCg0KJGFsdGJnID0gYWx0X3Ryb3coKTsNCiR1c2VybGlzdCA9ICcnOw0KJHF1ZXJ5ID0gJGRiLT5zaW1wbGVfc2VsZWN0KCJ1c2VycyIsICIqIiwgInVzZXJncm91cCBJTiAoJzInLCc0JykiLCBhcnJheSgib3JkZXJfYnkiID0+ICd1c2VybmFtZScsICJvcmRlcl9kaXIiID0+ICdBU0MnKSk7IC8vDQoJDQoJCXdoaWxlKCR1c2VycyA9ICRkYi0+ZmV0Y2hfYXJyYXkoJHF1ZXJ5KSkNCgkJew0KCQkJJHVzZXJuYW1lID0gYnVpbGRfcHJvZmlsZV9saW5rKGZvcm1hdF9uYW1lKGh0bWxzcGVjaWFsY2hhcnNfdW5pKCR1c2Vyc1sndXNlcm5hbWUnXSksICR1c2Vyc1sndXNlcmdyb3VwJ10sICR1c2Vyc1snZGlzcGxheWdyb3VwJ10pLCAkdXNlcnNbJ3VpZCddKTsNCgkJCQ0KCQkJJHVzZXJsaXN0IC49ICc8dHI+PHRkIGNsYXNzPSInLiRhbHRiZy4nIj4nLiR1c2VybmFtZS4nPC90ZD48L3RyPic7DQoJCQkkYWx0YmcgPSBhbHRfdHJvdygpOw0KCQl9DQoNCiR0ZW1wbGF0ZT0nPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT4nLiRwYWdlc1snbmFtZSddLic8L3RpdGxlPg0KeyRoZWFkZXJpbmNsdWRlfQ0KPC9oZWFkPg0KPGJvZHk+DQp7JGhlYWRlcn0NCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSInLiR0aGVtZVsnYm9yZGVyd2lkdGgnXS4nIiBjZWxscGFkZGluZz0iJy4kdGhlbWVbJ3RhYmxlc3BhY2UnXS4nIiBjbGFzcz0idGJvcmRlciI+DQo8dGhlYWQ+DQo8dHI+DQo8dGQgY2xhc3M9InRoZWFkIj4NCjxzdHJvbmc+Jy4kcGFnZXNbJ25hbWUnXS4nPC9zdHJvbmc+DQo8L3RkPg0KPC90cj4NCjwvdGhlYWQ+DQo8dGJvZHk+DQp7JHVzZXJsaXN0fQ0KPC90Ym9keT4NCjwvdGFibGU+DQo8YnIgLz4NCnskZm9vdGVyfQ0KPC9ib2R5Pg0KPC9odG1sPic7DQoNCiR0ZW1wbGF0ZT1zdHJfcmVwbGFjZSgiXCciLCAiJyIsIGFkZHNsYXNoZXMoJHRlbXBsYXRlKSk7DQoNCmFkZF9icmVhZGNydW1iKCRwYWdlc1snbmFtZSddKTsNCg0KZXZhbCgiXCRwYWdlPVwiIi4kdGVtcGxhdGUuIlwiOyIpOw0KDQpvdXRwdXRfcGFnZSgkcGFnZSk7DQoNCj8+]]></template>
		<checksum>dccc8f86d3ec270dd2cb622b5dda3e80</checksum>
	</page>
</pagemanager>

This is what it looks like for me, is it supposed to look like that?
Import the xml file with PageManager plugin and you'll see the clear code.....exported page XMLs are encoded.

But here also is the script for the PM page (without using MyBB Templates):
<?php

global $headerinclude, $header, $theme, $footer, $db;

$altbg = alt_trow();
$userlist = '';
$query = $db->simple_select("users", "*", "usergroup IN ('2','4')", array("order_by" => 'username', "order_dir" => 'ASC'));
 
 while($users = $db->fetch_array($query))
 {
 $username = build_profile_link(format_name(htmlspecialchars_uni($users['username']), $users['usergroup'], $users['displaygroup']), $users['uid']);
 
 $userlist .= '<tr><td class="'.$altbg.'">'.$username.'</td></tr>';
 $altbg = alt_trow();
 }

$template='<html>
<head>
<title>'.$pages['name'].'</title>
{$headerinclude}
</head>
<body>
{$header}
<table border="0" cellspacing="'.$theme['borderwidth'].'" cellpadding="'.$theme['tablespace'].'" class="tborder">
<thead>
<tr>
<td class="thead">
<strong>'.$pages['name'].'</strong>
</td>
</tr>
</thead>
<tbody>
{$userlist}
</tbody>
</table>
<br />
{$footer}
</body>
</html>';

$template=str_replace("\'", "'", addslashes($template));

add_breadcrumb($pages['name']);

eval("\$page=\"".$template."\";");

output_page($page);

?>
Out of curiosity, would this work as a page outside of the page manager?

And would it be possible to add usergroup names and the numbers of how many accounts are in that particular usergroup?
A single page would look like that:
<?php
define("IN_MYBB", 1);
require_once "./global.php";

$altbg = alt_trow();
$userlist = '';
$num = 1;
$query = $db->query("SELECT g.title AS groupname, u.*
 FROM ".TABLE_PREFIX."users u
 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (g.gid=u.usergroup)
 WHERE usergroup IN ('2')
 ORDER BY username ASC");
 
 while($users = $db->fetch_array($query))
{
 $usergroupname = htmlspecialchars_uni($users['groupname']);
 $username = build_profile_link(format_name(htmlspecialchars_uni($users['username']), $users['usergroup'], $users['displaygroup']), $users['uid']);
 $userlist .= '<tr><td style="text-align:center;" class="'.$altbg.'">'.$num.'</td><td class="'.$altbg.'">'.$username.'</td></tr>';
 $altbg = alt_trow();
 $num++;
}
 
add_breadcrumb("Member of Usergroup: {$usergroupname}", "usergroupmember.php");

$pagetemplate = "<html>
<head>
<title>".$settings['bbname']." - UsergroupMember</title>
{$headerinclude}
<style type=\"text/css\">
.center{
 vertical-align: middle;
 text-align:center;
}
</style>
</head>
<body>
{$header}
<table border=\"0\" cellspacing=\"".$theme['borderwidth']."\" cellpadding=\"".$theme['tablespace']."\" class=\"tborder\">
 <thead>
 <tr>
 <td class=\"thead\" colspan=\"2\"><strong>Usergroup: {$usergroupname}</strong></td>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td class=\"tcat\" width=\"5%\" style=\"text-align:center;\" ><strong>Nr.</strong></td>
 <td class=\"tcat\"><strong>User</strong></td>
 </tr>
 {$userlist}
 <tr>
 <td class=\"tfoot\" colspan=\"2\"></td>
 </tr>
 </tbody>
</table>
{$footer}
</body>
</html>";

$pagetemplate = str_replace("\\'", "'", addslashes($pagetemplate));

eval("\$page = \"".$pagetemplate."\";");

output_page($page); 
?>
Doesn't work?
<?php
define("IN_MYBB", 1);
require_once "./global.php";

$altbg = alt_trow();
$userlist = '';
$num = 1;
$query = $db->query("SELECT g.title AS groupname, u.*
 FROM ".TABLE_PREFIX."users u
 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (g.gid=u.usergroup)
 WHERE usergroup IN ('12','13','14','15','16')
 ORDER BY username ASC");
 
 while($users = $db->fetch_array($query))
{
 $usergroupname = htmlspecialchars_uni($users['groupname']);
 $username = build_profile_link(format_name(htmlspecialchars_uni($users['username']), $users['usergroup'], $users['displaygroup']), $users['uid']);
 $userlist .= '<tr><td style="text-align:center;" class="'.$altbg.'">'.$num.'</td><td class="'.$altbg.'">'.$username.'</td></tr>';
 $altbg = alt_trow();
 $num++;
}
 
add_breadcrumb("Member of Usergroup: {$usergroupname}", "usergroupmember.php");

$pagetemplate = "<html>
<head>
<title>".$settings['bbname']." - UsergroupMember</title>
{$headerinclude}
<style type=\"text/css\">
.center{
 vertical-align: middle;
 text-align:center;
}
</style>
</head>
<body>
{$header}
<table border=\"0\" cellspacing=\"".$theme['borderwidth']."\" cellpadding=\"".$theme['tablespace']."\" class=\"tborder\">
 <thead>
 <tr>
 <td class=\"thead\" colspan=\"2\"><strong>Usergroup: {$usergroupname}</strong></td>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td class=\"tcat\" width=\"5%\" style=\"text-align:center;\" ><strong>Nr.</strong></td>
 <td class=\"tcat\"><strong>User</strong></td>
 </tr>
 {$userlist}
 <tr>
 <td class=\"tfoot\" colspan=\"2\"></td>
 </tr>
 </tbody>
</table>
{$footer}
</body>
</html>";

$pagetemplate = str_replace("\\'", "'", addslashes($pagetemplate));

eval("\$page = \"".$pagetemplate."\";");

output_page($page); 
?>
Pages: 1 2