Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-13-2006, 02:04 PM
Kriminal's Avatar
Kriminal Kriminal is offline
 
Join Date: Dec 2004
Location: Buenos Aires
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default How do I fetch info from datastore in a plugin?

I want to show stats from my board, like it's explained in this mod:
But, I want to save 3 of the 5 queries, refreshing stats every 5 minutes.
So, the only two stats whose stays "live" are the "online now"; the other 3 (total threads, total posts and total members) will be updated every 5 minutes and saved in datastore.

I did the following steps:
1) Create a ministats.php inside cron folder:
PHP Code:
  $numbersmembers $vbulletin->db->query_first("SELECT COUNT(*) AS users,MAX(userid) AS max FROM " TABLE_PREFIX "user");  
  
$ministats['numbermembers']= number_format($numbersmembers['users']);  
  
  
$counter $vbulletin->db->query_first("SELECT COUNT(postid) AS posts, COUNT(threadid) AS threads FROM " TABLE_PREFIX "post"); 
  
$ministats['totalposts']=number_format($counter['posts']);  

  
$countthreads $vbulletin->db->query_first("SELECT COUNT(*) AS threads FROM " TABLE_PREFIX "thread"); 
  
$ministats['totalthreads']=number_format($countthreads['threads']);

  
build_datastore('ministats'serialize($ministats)); 
2) Create a cron task to execute the php. I noticed that it works (the stats are saved in datastore table)

3) Create a plugin that:
a - execute a sql query to fetch the online members
b - retrieve info from datastore

The plugins is allocated in "global_start" hook, and this is the code:
PHP Code:
// online users  
$datecut TIMENOW $vbulletin->options['cookietimeout'];  
$headerguests=$db->query_first("SELECT COUNT(*) AS count FROM " TABLE_PREFIX "session WHERE userid=0 AND lastactivity>$datecut");  
$headerusers=$db->query_first("SELECT COUNT(DISTINCT(userid)) AS count FROM " TABLE_PREFIX "session WHERE " TABLE_PREFIX "session.userid>0 AND " TABLE_PREFIX "session.lastactivity>$datecut");  
$headerguests=$headerguests[count];  
$headerusers=$headerusers[count];  
$totalonline=$headerguests+$headerusers;  

// info from datastore
$ministats unserialize($vbulletin->ministats);
$numbermembers $ministats['numbermembers'];
$totalposts $ministats['totalposts'];
$totalthreads $ministats['totalthreads']; 
The online members info retrieves correctly, but the info from datastore not.
So, my question is: how I do to fetch that info in the plugin?

Thanks in advance,

PS: In the topic title, I put a "g" instead a "f". I'm sorry.
Reply With Quote
  #2  
Old 07-18-2006, 09:31 AM
Nj?rd Eriksson Nj?rd Eriksson is offline
 
Join Date: Jul 2003
Location: Midg?rd
Posts: 55
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just had the same problem. I couldn't retrieve the data. You might still need an entry in the config.php :

PHP Code:
// ****** SPECIALTEMPLATES *****
// Add any specialtemplates here for any products or mods that use the datastore, to save
// from re-doing file edits on an upgrade or re-install of vBulletin (until they give us a better
// way to do it, anyway). Thanks to KirbyDE for the how-to on doing this.
global $specialtemplates;
$specialtemplates array_merge(
$specialtemplates, array(
'ministats',
)); 
Reply With Quote
  #3  
Old 07-18-2006, 07:04 PM
Kriminal's Avatar
Kriminal Kriminal is offline
 
Join Date: Dec 2004
Location: Buenos Aires
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Let me see if I understand you (I'm not very good at english, I'm really sorry)
You say you had the problem in the past, and the solution is to include the special template; or you're having the same problem now and the special templates is required but it's not the solution?

The code you posted must be included in the script or in the config.php?
Thanks so much!

PS: I've included the code yo pasted in the config.php and it worked fine !! THANKS SO MUCH!!
Reply With Quote
  #4  
Old 07-19-2006, 02:01 AM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You don't need to merge arrays, just add to the array ;

PHP Code:
global $specialtemplates;
$specialtemplates[] = 'ministats'
You shouldn't need the global line either.
Reply With Quote
  #5  
Old 07-19-2006, 02:29 PM
Kriminal's Avatar
Kriminal Kriminal is offline
 
Join Date: Dec 2004
Location: Buenos Aires
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, this works well too, and seems to be an optimized way to write the code. Thanks so much, Paul!

But the global line is required, comenting it stats don't show.

Thanks again!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:17 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.06999 seconds
  • Memory Usage 2,217KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete