View Single Post
  #1  
Old 04-09-2014, 10:48 AM
Rami114 Rami114 is offline
 
Join Date: Apr 2014
Posts: 3
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Command Line Scripting - How to 'become a user'

For all you programmers out there that, like me, want to be able to automate jobs to run on-demand from the CL! I do like the data managers, but they expect $vbulletin to have the user state set. The 'hard' bit here was to figure out: how do I force $vbulletin to represent a particular user? Fortunately it turns out to be easier than I thought.

Note: you must do the normal include of global.php (at least) to get $vbulletin. E.g.:

PHP Code:
$oldPath getcwd();
chdir('<your_vb_path_here>');
require_once(
'./global.php');
// Other includes from VB you might need
chdir($oldPath); 
Then you can impersonate a user:

PHP Code:
$userid '1';
// Become our user
$vbulletin->userinfo fetch_userinfo($userid); 
With just that, you can now pass $vbulletin to any of the data managers as if it was the user itself doing it.

For instance, in my case I've added some custom userfields to represent API credentials for an MMO which they must fill in correctly at registration. I then have a cronjob to fetch all users that are registered, get their API details, fetch their MMO Avatar image and set it as their forum avatar. Easy!

Hope it helps some people, I couldn't find documentation on user impersonation.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01209 seconds
  • Memory Usage 1,766KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete