Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vB3 Forumhome Stats Cache Serialize hack v2.2 Details »»
vB3 Forumhome Stats Cache Serialize hack v2.2
Version: 1.00, by Boofo Boofo is offline
Developer Last Online: Jun 2012 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 02-10-2004 Last Update: Never Installs: 108
 
No support by the author.

vB3 Forumhome Stats Cache Serialize hack
Version 2.2
(By Boofo)

What does this hack do?
This hack will add some forum statistics to your forumhome that will be cached (to reduce the query load) for a certain amount of time that can be set to whatever you want. This covers most of the stats any forum Admin would use on his site.

Note: This is the setting for the time interval (in minutes) that you want the cache to be updated on. The default value is 10 minutes. The following code is in the index.php part of this hack.

$updatetime = 10;

Once you install the Admin CP setting (at the end of this file), you will be able to update this from the Admin CP vBulletin Options settings.

Credits:
I want to thank Tigga for the original Forumhome Statistics Cache hack for vB2, partly on what this hack is based. I also want to thank EvilLS1 for his time and patience in helping put this hack together. Another thank you goes out to Mike Gaidin for testing this thoroughly while I was putting together this install file. And, finally, thank you goes out to NTLDR, for helping me track down a very stupid mistake on my part which I had overlooked.

Version 2.0 credits go out to g-force2k2 for getting me started on the datastore version of this hack and guiding me through some of the rough parts in the beginning. And also to KirbyDE for answering all of my dummy questions while writing this version and verifying the code when I figured out all of my mistakes. This is my first attempt at using the datastore function but it seems to work better and be easier to code than the older way of doing things.

Version Information:
Version 1.0
--Initial release
Version 2.0 --Completely rewritten using the datastore function for vB3. It now uses "serialize" to store the data and "unserialize" to retrieve the data. There is also now 1 less query when reading from the cache.
Version 2.1 --Combined the "new threads since last visit" and "new posts since last visit" queries into 1 query, thus eliminating another query on cache hits. Thanks goes out to g_force2k2 for this one. Also added Admin CP setting code so you can change the time interval between cache updates via the Forum Display Option setting in the vBulletin Option in the Admin CP. That code to add is at the end of this file.
Version 2.2 --Added "Top Reputation" statistic (requested by rinkrat ) and totally re-did the template. It looks cleaner now.

New Installation:
Do all of the steps in this file.

To Update Version 1.0 to Version 2.0:
To update this hack you will need to do everything in this file over again except the second query (Query #2). After you have this hack up and running again and you have made sure it is running to your satisfaction, you can drop the statscache table (from version one of this hack) completely. It is no longer needed.

To Update Version 2.0 to Version 2.1:
You will need to re-add the code for the index.php and go to the end of this file and add the setting for the Admin CP.

To Update Version 2.1 to Version 2.2:
You will need to re-add the code for the index.php and replace the code for the forumhome template.

Installation overview:
Queries to run:
(2)
Files to edit: (2)
--index.php
--member.php
Templates to edit: (1)
--forumhome
Settings to add: (1)
--forumhomecachetime

vB3 Arcade hack stats addon:
https://vborg.vbsupport.ru/showpost....&postcount=262

The first attachment shows the Guest loggedin and the second attachment show the Registered Member and above loggedin.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #77  
Old 03-25-2004, 02:01 AM
Alex Alex is offline
 
Join Date: Oct 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, thank you! You got mail...
Reply With Quote
  #78  
Old 03-25-2004, 02:15 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've got mail!

Everything looks great! Thank you.

The only thing is the newuserid can't be done with the number format or we run into the same rpoblem as the others we fixed yesterday. Anyone over 1000 on there userid would get commas for English and persions for German. that was what was messing up the other userids. I has them doing the number format, until you caught that. On my site, I only have about 30 plus users so I wouldn't have caught that for qwuite a while, I'm afraid.

I will get the install file edited and the first post updated with it here shortly. Thank you again for the help in catching my stupid mistakes and with the phrases.

Stop by my site and I will have something special for you, if you are interested.
Reply With Quote
  #79  
Old 03-25-2004, 02:28 AM
Alex Alex is offline
 
Join Date: Oct 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Actually, the way I edited it, it works fine. Check out my site, works there, too.
Reply With Quote
  #80  
Old 03-25-2004, 02:32 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

But with the number format, this:

www.forum.url/forum/member.php?u=3512

would become this:

www.forum.url/forum/member.php?u=3,512

Reply With Quote
  #81  
Old 03-25-2004, 02:33 AM
Alex Alex is offline
 
Join Date: Oct 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
I've got mail!

Everything looks great! Thank you.

The only thing is the newuserid can't be done with the number format or we run into the same rpoblem as the others we fixed yesterday. Anyone over 1000 on there userid would get commas for English and persions for German. that was what was messing up the other userids. I has them doing the number format, until you caught that. On my site, I only have about 30 plus users so I wouldn't have caught that for qwuite a while, I'm afraid.

I will get the install file edited and the first post updated with it here shortly. Thank you again for the help in catching my stupid mistakes and with the phrases.

Stop by my site and I will have something special for you, if you are interested.
Stopped by, registered, but... duh! Where? What? Who?
Reply With Quote
  #82  
Old 03-25-2004, 02:39 AM
Alex Alex is offline
 
Join Date: Oct 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ah, got it.... nice one. So that means, there will be a version 3.0?

BTW, while I am browsing your forums. Which "Who was online today"-Hack do you use? I like it with keeping the most ever users online today.
Next one I would be very interested in is the XXX's Private Forum. Is that just done by using the [you] hack, or is there anything else to it?
Reply With Quote
  #83  
Old 03-25-2004, 03:58 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just the [you] hack is all. It works very well in the forums as you can see. Although, I changed [you] to my own special word so the hack does not get abused and used wrongly on my crappy site.
Reply With Quote
  #84  
Old 03-25-2004, 11:48 AM
bobjackson bobjackson is offline
 
Join Date: Nov 2002
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

a quick note on the install...

everything went fine except the "Top Referrer" query.

i have a table prefix set, so i had to alter your query.
(added "TABLE_PREFIX" on the select list AND the where clause for the "user" table).

Code:
// <!-- TOP REFERRER -->
	$ref = $DB_site->query_first("
		SELECT COUNT(*) AS referrals, " . TABLE_PREFIX . "user.username, " . TABLE_PREFIX . "user.userid
		FROM " . TABLE_PREFIX . "user AS users
		LEFT JOIN " . TABLE_PREFIX . "user ON (users.referrerid = " . TABLE_PREFIX . "user.userid)
		WHERE users.referrerid <> 0
		GROUP BY users.referrerid
		ORDER BY referrals DESC
		LIMIT 1
	");
otherwise...installed fine. thanks.
Reply With Quote
  #85  
Old 03-25-2004, 11:57 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You should have only had to add the TABLE_PREFIX on the tables themselves, not the SELECT parts.

But as long as it is installed and working for you, then great! Make sure you make the changes noted above until I get the update for this hack out, though.
Reply With Quote
  #86  
Old 03-25-2004, 12:18 PM
bobjackson bobjackson is offline
 
Join Date: Nov 2002
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
You should have only had to add the TABLE_PREFIX on the tables themselves, not the SELECT parts.

But as long as it is installed and working for you, then great! Make sure you make the changes noted above until I get the update for this hack out, though.
well no...as that obviouslly didn't work for me.

"TABLE_PREFIX . user" is seen as a different table than just "user".

it's like saying:
"SELECT A.fieldname FROM tablename B"

A.fieldname does NOT exist in tablename B

in your current sql statement, you're specifying a table that *may not* exist for some members...the "user" table.

regardless, i have it installed and i'm good to go!
i only posted that because i saw that another person had this same error.

thanks again!
Reply With Quote
  #87  
Old 03-25-2004, 08:09 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
in your current sql statement, you're specifying a table that *may not* exist for some members...the "user" table.
If anyone running vBulletin doesn't have a user table, that would definately be a first and impossible, also, I'm afraid.
Reply With Quote
  #88  
Old 03-25-2004, 11:06 PM
bobjackson bobjackson is offline
 
Join Date: Nov 2002
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
If anyone running vBulletin doesn't have a user table, that would definately be a first and impossible, also, I'm afraid.
sorry...my post came out wrong.

of course they'd have a user table.

i was trying to point out that they may not have it named [user]; as i run my tables with a prefix.
Reply With Quote
  #89  
Old 03-25-2004, 11:08 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Right, and the TABLE_PREFIX in front of the user table should take care of that.
Reply With Quote
  #90  
Old 03-25-2004, 11:17 PM
bobjackson bobjackson is offline
 
Join Date: Nov 2002
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

do me a favor...take two minutes and create a new user table with a prefix, then run your query below (replacing TABLE_PREFIX below with the prefix on the newly created table).

it will error out.
#1109 - Unknown table 'user' in field list

merely putting the table prefix in the "from" clause only is not enough.

your query:
// <!-- TOP REFERRER -->
$ref = $DB_site->query_first("
SELECT COUNT(*) AS referrals, user.username, user.userid
FROM " . TABLE_PREFIX . "user AS users
LEFT JOIN " . TABLE_PREFIX . "user ON (users.referrerid = user.userid)
WHERE users.referrerid <> 0
GROUP BY users.referrerid
ORDER BY referrals DESC
LIMIT 1
");


i don't get me wrong here, i'm not trying to give you a hard time. just want to point out that the above string is incorrect when using a table prefix.
Reply With Quote
  #91  
Old 03-25-2004, 11:32 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'll take your word for it since I don't use a table prefix in my db. It's just that that isn't supposed to be how it works from all I've encountered with vB3. If it is doing what you say, then it sounds to me like the vb team needs to do some more work on the TABLE_PREFIX code, don't you think?
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 04:38 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05607 seconds
  • Memory Usage 2,374KB
  • Queries Executed 30 (?)
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)bbcode_code
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (16)post_thanks_box
  • (16)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (16)post_thanks_postbit_info
  • (15)postbit
  • (16)postbit_onlinestatus
  • (16)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete