sync up group members with wow roster [Works with 1.7.x] [message #38629] |
Sun, 19 August 2007 18:37 |
Marticus
Messages: 272 Registered: June 2002
Karma:
|
Senior Member |
|
|
Please note that there is a new 2.x release of wow roster and I have not tested this tool with it. Please look into my armory version of the tool as the armory is more popular. I do not intend to update this version of the tool.
I have written the following code that will grab a list of members in our roster and dump it into the members group in fudforum. The options are 378639. Please set the options you want for a user, then look in the database for the number and update the code accordingly. Or, you may calculate the permissions and add 65536 to it (it took me a while to figure this out). Also change id 97 to whatever group with which you want to control guild membership access. This will override any existing member with the new options, excluding anyone with higher access.
Update: added UTF-8 support. Forum account must have been created using the alt+#### method for special characters.
The code:set_time_limit(600);
define('forum_debug', 1);
unset($_SERVER['REMOTE_ADDR']);
require ( '/home/website/.fudforumdata/scripts/GLOBALS.php' );
if (!($FUD_OPT_1 & 1))
eexit("Forum is currently disabled.\n");
fud_use('forum_adm.inc', true);
fud_use('groups_adm.inc', true);
fud_use('err.inc');
fud_use('db.inc');
fud_use('post_proc.inc');
fud_use('is_perms.inc');
fud_use('users.inc');
fud_use('groups.inc');
fud_use('users_reg.inc');
fud_use('users_adm.inc', true);
fud_use('scripts_common.inc', true);
define('sql_p', $GLOBALS['DBHOST_TBL_PREFIX']);
list($GLOBALS['usr']->lang, $locale) = db_saq("SELECT lang, locale FROM ".sql_p."themes WHERE theme_opt=1|2 LIMIT 1");
$GLOBALS['good_locale'] = setlocale(LC_ALL, $locale);
list($GLOBALS['usr']->lang, $locale) = db_saq("SELECT lang, locale FROM ".sql_p."themes WHERE theme_opt=1|2 LIMIT 1");
$GLOBALS['good_locale'] = setlocale(LC_ALL, $locale);
require_once( 'settings.php' );
$query = 'SELECT `name` from `roster_members` ORDER BY `name`';
$result = $wowdb->query( $query ) or die_quietly($wowdb->error(),'Database Error',basename(__FILE__),__LINE__,$query);
while ( $row = $wowdb->fetch_assoc( $result ) )
{
$login = xmlEntities(htmlentities(utf8_decode($row['name'])));
$id = get_id_by_login($login);
if ( ! empty ( $id ) ) {
print ( $login . ' - ' . $id . ': ' );
$r = q('SELECT id,group_members_opt,group_id FROM fud26_group_members WHERE group_id=97 AND user_id='.$id);
$e = db_rowarr($r);
if ( ! empty ( $e ) ) {
print_r ( $e );
print ( ' ' );
if ( $e[1] < 378639 ) {
/* q('UPDATE fud26_group_members SET group_members_opt=378639 WHERE id='.$id); WHY THE HELL DOESN'T This Update the TABLE!!! */
grp_delete_member(97, $id);
q('INSERT INTO fud26_group_members (group_members_opt, user_id, group_id) VALUES (378639, '.$id.', 97)'); /* 313103 + 65536 */
grp_rebuild_cache(array($id));
print ( "Updating Member!<br>\n" );
} else {
print ( "Skipping Member!<br>\n" );
}
} else {
q('INSERT INTO fud26_group_members (group_members_opt, user_id, group_id) VALUES (378639, '.$id.', 97)'); /* 313103 + 65536 */
grp_rebuild_cache(array($id));
print ( "Adding Member!<br>\n" );
}
}
}
function xmlEntities($s){
//build first an assoc. array with the entities we want to match
$table1 = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
//now build another assoc. array with the entities we want to replace (numeric entities)
foreach ($table1 as $k=>$v){
$table1[$k] = "/$v/";
$c = htmlentities($k,ENT_QUOTES,"UTF-8");
$table2[$c] = "&#".ord($k).";";
}
$s = preg_replace($table1,$table2,$s);
return $s;
}
[Updated on: Thu, 05 February 2009 07:34] Report message to a moderator
|
|
|