So does the update user titles and ranks function already get run once-a-week, automatically?(i.e. via digestweekly.php)
I'm no programmer either, but
THANK YOU Lynne for your posts! I
might be able to cobble something together from all that information.
--------------- Added [DATE]1428255496[/DATE] at [TIME]1428255496[/TIME] ---------------
I recently installed Paul M's
Move inactive users to new usergroup MOD and am looking for a way to keep my user titles accurate each day, after his mod runs nightly.
Is this code section below what needs to be copied/pasted into a new php file, for a new cron job?
Also, since I only want to run the
update user titles and ranks function is there anything else in the code below I need to remove?
Code:
// ###################### Start update user #######################
if ($_REQUEST['do'] == 'updateuser')
{
require_once(DIR . '/includes/functions_infractions.php');
if (empty($vbulletin->GPC['perpage']))
{
$vbulletin->GPC['perpage'] = 1000;
}
echo '<p>' . $vbphrase['updating_user_info'] . '</p>';
$tmp_usergroup_cache = array();
$infractiongroups = array();
$groups = $vbulletin->db->query_read("
SELECT usergroupid, orusergroupid, pointlevel, override
FROM " . TABLE_PREFIX . "infractiongroup
ORDER BY pointlevel
");
while ($group = $vbulletin->db->fetch_array($groups))
{
$infractiongroups["$group[usergroupid]"]["$group[pointlevel]"][] = array(
'orusergroupid' => $group['orusergroupid'],
'override' => $group['override'],
);
}
$users = $db->query_read("
SELECT user.*, usertextfield.rank,
IF(user.displaygroupid=0, user.usergroupid, user.displaygroupid) AS displaygroupid
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield USING (userid)
WHERE user.userid >= " . $vbulletin->GPC['startat'] . "
ORDER BY user.userid
LIMIT " . $vbulletin->GPC['perpage']
);
$finishat = $vbulletin->GPC['startat'];
while ($user = $db->fetch_array($users))
{
$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_CP);
$userdm->set_existing($user);
cache_permissions($user, false);
$userdm->set_usertitle(
($user['customtitle'] ? $user['usertitle'] : ''),
false,
$vbulletin->usergroupcache["$user[displaygroupid]"],
($user['customtitle'] == 1 OR $user['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) ? true : false,
($user['customtitle'] == 1) ? true : false
);
if ($lastpost = $db->query_first("SELECT MAX(dateline) AS dateline FROM " . TABLE_PREFIX . "post WHERE userid = $user[userid]"))
{
$lastpost['dateline'] = intval($lastpost['dateline']);
}
else
{
$lastpost['dateline'] = 0;
}
$infractioninfo = fetch_infraction_groups($infractiongroups, $user['userid'], $user['ipoints'], $user['usergroupid']);
$userdm->set('infractiongroupids', $infractioninfo['infractiongroupids']);
$userdm->set('infractiongroupid', $infractioninfo['infractiongroupid']);
$userdm->set('posts', $user['posts']); // This will activate the rank update
$userdm->set('lastpost', $lastpost['dateline']);
$userdm->save();
unset($userdm);
echo construct_phrase($vbphrase['processing_x'], $user['userid']) . "<br />\n";
vbflush();
$finishat = ($user['userid'] > $finishat ? $user['userid'] : $finishat);
}
$finishat++;
if ($checkmore = $db->query_first("SELECT userid FROM " . TABLE_PREFIX . "user WHERE userid >= $finishat LIMIT 1"))
{
print_cp_redirect("misc.php?" . $vbulletin->session->vars['sessionurl'] . "do=updateuser&startat=$finishat&pp=" . $vbulletin->GPC['perpage']);
echo "<p><a href=\"misc.php?" . $vbulletin->session->vars['sessionurl'] . "do=updateuser&startat=$finishat&pp=" . $vbulletin->GPC['perpage'] . "\">" . $vbphrase['click_here_to_continue_processing'] . "</a></p>";
}
else
{
define('CP_REDIRECT', 'misc.php');
print_stop_message('updated_user_titles_successfully');
}
}
// ###################### Finish update user #######################