PDA

View Full Version : howtodo this with vbulletin


Delphiprogrammi
03-11-2006, 10:52 AM
hi people,

i have a custom usergroup called "permmaned_banned" with id 9.Now when i add a user to it (just a test username) and i goto "view banned users" vbulletin tells me "no users are banned on $vbulletin->options['bbtitle']"

i know vbulletin stores custom usergroups in a filed called "membergroupids" in the user table and i think no i know for sure i can get this with the MySQL function FIND_IN_SET().But since this function is not used verry much and not verry well documented i ask here



$querygroups = array();
foreach ($vbulletin->usergroupcache AS $usergroupid => $usergroup)
{
if ($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isbannedgroup'])
{
$querygroups["$usergroupid"] = $usergroup['title'];
}
}
if (empty($querygroups))
{
print_stop_message('no_groups_defined_as_banned');
}
//################################################## #
// now query users from the specified groups
//################################################## #
$getusers = $db->query_read("
SELECT user.userid, user.username, user.usergroupid AS busergroupid,
userban.usergroupid AS ousergroupid, userban.reason AS reason,
IF(userban.displaygroupid = 0, userban.usergroupid, userban.displaygroupid) AS odisplaygroupid,
bandate, liftdate,
adminuser.userid AS adminid, adminuser.username AS adminname
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userban AS userban ON(userban.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "user AS adminuser ON(adminuser.userid = userban.adminid)
WHERE user.usergroupid IN(" . implode(',', array_keys($querygroups)) . ")
ORDER BY userban.bandate DESC, user.username
");


what would be the SQL to run to include the customgroups ? i have no idea howto use FIND_IN_SET() and that function could solve the issue

Marco van Herwaarden
03-11-2006, 11:22 AM
http://dev.mysql.com/doc/refman/4.1/en/string-functions.html
FIND_IN_SET(str,strlist)

Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by ‘,’ characters. If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. Returns 0 if str is not in strlist or if strlist is the empty string. Returns NULL if either argument is NULL. This function does not work properly if the first argument contains a comma (‘,’) character.

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2


PS Did you set "Is banned usergroup" for that usergroup?

Delphiprogrammi
03-11-2006, 11:25 AM
http://dev.mysql.com/doc/refman/4.1/en/string-functions.html


PS Did you set "Is banned usergroup" for that usergroup?

i set all to no except isbanned that's set to yes

FIND_IN_SET() isn't needed i found howto do it by looking at /modcp/banning.php permanent bans are store in a variable called "period"