vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Update User Titles and Ranks (https://vborg.vbsupport.ru/showthread.php?t=130545)

manguish 11-01-2006 05:59 PM

Update User Titles and Ranks
 
As posted Here

As a cron job?

i have members coming in and out of subscribed member groups. Once the subscribe, they join the "premium" usergroup.

When this expires, i require the rank to be removed.

I have set the rank to be if = to this usergroup, but so far, the only way to do it is to run the update user ranks and titles in maintenance.

how would i run a cron to do this when my subscription cron runs?

manguish 11-03-2006 05:03 PM

Anyone please?

manguish 11-07-2006 05:20 PM

I guess for the right code, i could even cough up some paypal for the right person....

I'm struggling with this one. :/

SCRIPT3R 11-07-2006 05:29 PM

setup a cron for this... admincp/misc.php?do=updateuser

PHP Code:

<?php

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!
is_object($vbulletin->db))
{
    exit;
}

// ########################## REQUIRE BACK-END ############################
require_once('./global.php');
require_once(
DIR '/includes/functions_databuild.php');

// ############################# LOG ACTION ###############################
log_admin_action();

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

// ###################### Start update user #######################
if ($_REQUEST['do'] == 'updateuser')
{
    require_once(
DIR '/includes/functions_infractions.php');

    if (empty(
$vbulletin->GPC['perpage']))
    {
        
$vbulletin->GPC['perpage'] = 1000;
    }

    
$finishat $vbulletin->GPC['startat'] + $vbulletin->GPC['perpage'];

    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'] . " AND user.userid < $finishat
        ORDER BY user.userid
    "
);
    while (
$user $db->fetch_array($users))
    {
        
$userdm =& datamanager_init('User'$vbulletinERRTYPE_CP);
        
$userdm->set_existing($user);
        
cache_permissions($userfalse);

        
$userdm->set_usertitle(
            (
$user['customtitle'] ? $user['usertitle'] : ''),
            
false,
            
$vbulletin->usergroupcache["$user[displaygroupid]"],
            (
$user['customtitle'] == 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();
    }

    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&amp;startat=$finishat&amp;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');
    }
}

?>

oh wait... i hadn't noticed you were using vB 3.0... the above is for vB 3.6 - i'm not familiar with dbase calls prior to vB 3.5 - sorry.

manguish 11-07-2006 05:46 PM

I'm actually in 3.5.5 - but that may give me a start ;)

SCRIPT3R 11-07-2006 05:48 PM

i'm thinking it should work fine for 3.5.5... just create a new php file and place it into your includes/cron directory and runwith your cron setup.

Criticize 12-05-2007 12:57 PM

Can you please explain this a little more in depth? I am trying to do this as well on my forum and need some help. I need to update user titles and ranks that have been changed but not ALL users, only users who have made changes etc.

Any help GearTripper? Thanks a ton.

RedTurtle 02-18-2011 10:03 PM

Has anyone else figured out how to make this work? I keep getting an error trying to run this on 3.6.5.

The error is:

Warning: include_once(/home/user/public_html/./admincp/misc.php?do=updateuser) [function.include-once]: failed to open stream: No such file or directory in /admincp/cronadmin.php on line 108

Warning: include_once() [function.include]: Failed opening '/home/user/public_html/./admincp/misc.php?do=updateuser' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /admincp/cronadmin.php on line 108


Really trying to find a way to automate via the scheduler running the update user title and rank counter every night.

Could anyone please help? THANK YOU.

kh99 02-19-2011 01:45 AM

I don't quite understand what SCRIPT3R was suggesting, but it seems like if you're going to put that code in a separate php file in the includes/cron directory, then you might as well take out the if ($_REQUEST['do'] == 'updateuser') (and the associate curly braces) and then take the "?do=updateuser" off the name of the file (you probably also would want to name it something more meaningful than "misc.php").

Also, I'm not sure but I think you may have to edit that code some - it looks like maybe SCRIPT3R was just showing which code to use from the admincp code, but it looks like it might have trouble running as a cron job the way it is.


All times are GMT. The time now is 09:34 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01285 seconds
  • Memory Usage 1,780KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete