vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Counting users posts in particular forum? (https://vborg.vbsupport.ru/showthread.php?t=203766)

Simon Lloyd 01-31-2009 09:23 PM

Counting users posts in particular forum?
 
Hi all, i have an add on by Bananalive (easy forms), this add on posts the contents of a form to a particular forum, the post shows it was posted by the user but it doesnt add to the post count, however, is it possible to count the posts in that forum per user and show the count in the users info in postbit?

So for arguments sake, you would have Username then under that age....etc then Top Tip Count xx (Top Tips is the forum that users will have submitted the form), i'm no coder but quite capable of doing as instructed, i have made some template changes myself with no problem but nothing very special.

Any ideas?

Lynne 01-31-2009 09:30 PM

I did that on my site. I added a couple of columns to the user table for the counts to go in and then created a plugin (newthread_post_complete) so if they posted in xx forum, it increased this new column number. I never really finished it to delete threads if the thread is deleted, so I made a quick php script to run as a cron when I feel like it to do a recount.

Simon Lloyd 01-31-2009 10:06 PM

Quote:

Originally Posted by Lynne (Post 1730350)
I did that on my site. I added a couple of columns to the user table for the counts to go in and then created a plugin (newthread_post_complete) so if they posted in xx forum, it increased this new column number. I never really finished it to delete threads if the thread is deleted, so I made a quick php script to run as a cron when I feel like it to do a recount.

Lynne, thanks for the response, i know i have a couple of hundred posts but they were either asking questions or answering something i actually knew about!

Could you possibly give me a blow by blow on how to?, i am very capable of doing as instructed but need some help on how.

--------------- Added [DATE]1233446955[/DATE] at [TIME]1233446955[/TIME] ---------------

EDIT: The posts won't be deleted (or at least they shouldn't) the forum is purely to recieve the form, members only have viewing rights to the forum nothing else.

Lynne 01-31-2009 11:08 PM

Um, yikes! I posted the wrong response in this thread. That was meant to go into another thread. Sometimes I just CANNOT multitask!!!

OK, let's see.... I keep count for two different reasons, one in forum a&b, another in forum c&d. I added two columns to the user table - ttdtrader_s and ttdtrader_v - int(10), unsigned, not null, default 0. Then created a plugin at newthread_post_complete with the following code:
PHP Code:

if (in_array($foruminfo['forumid'], array(a,b))) { 
    
$db->query_write("UPDATE user SET ttdtrader_s = ttdtrader_s + 1 WHERE userid=" $vbulletin->userinfo['userid']); 

if (
in_array($foruminfo['forumid'], array(c,d))) { 
    
$db->query_write("UPDATE user SET ttdtrader_v = ttdtrader_v + 1 WHERE userid=" $vbulletin->userinfo['userid']); 


To initially do the count, I ran a couple of queries - I actually wrote them into a Scheduled Task so I can run it easily:

PHP Code:

$vbulletin->db->query("
    UPDATE " 
TABLE_PREFIX "user
    SET user.ttdtrader_s = (SELECT count(*) FROM " 
TABLE_PREFIX "thread WHERE thread.postuserid = user.userid AND forumid IN ('a','b') AND sticky=0)"
);
$vbulletin->db->query("
    UPDATE " 
TABLE_PREFIX "user
    SET user.ttdtrader_v = (SELECT count(*) FROM " 
TABLE_PREFIX "thread WHERE thread.postuserid = user.userid AND forumid IN ('c','d') AND sticky=0)"
); 


Simon Lloyd 02-01-2009 12:22 AM

Lynne, thanks for sticking with this!, i created a table using:
PHP Code:

CREATE TABLE ctoptip (count INT(10UNSIGNED NOT NULL);
INSERT INTO ctoptip SET count 0

and created aplugin as instructed with
PHP Code:

if (in_array($foruminfo['forumid'], array(52))) { 
    
$db->query_write("UPDATE user SET ctoptip = ctoptip + 1 WHERE userid=" $vbulletin->userinfo['userid']); 


where can i put the rest so that it updates in the postbit for the user everytime the create the post via the form?

Lynne 02-01-2009 02:20 AM

I did NOT create a new table, I just added two new columns to the user table so the variables would be available to me whenever the userinfo was grabbed. You can do it your way, but you will have to make sure to modify the queries where needed to get the variables you want (like in the postbit you are talking about).

Simon Lloyd 02-01-2009 09:09 AM

Ok, i deleted that new table and added to the vb_user table (when setting up vbulletin i chose vb as the prefix for the database) could you tell me where i need to put the next section of code in order for it to show in the Postbit and always update when they fill that form in? ( i know its only half of the next section of code as i am only working with one forum id52)

Lynne 02-01-2009 03:16 PM

Say your new column is called "simon1", it will be available as $post[simon1] in the postbit templates. What I did is create a new template (I had a few lines for mine), say postbit_simon with the new values in there:

HTML Code:

<if condition="$post['simon1']>= '1'">$post[simon1] Threads in Simon's forum<br /></if>
Then I created a plugin using postbit_display_start to insert that line using a template hook:

PHP Code:

eval('$template_hook[postbit_userinfo_right] .= " ' fetch_template('postbit_simon1') . '";'); 

If you only have the one line in the template, you can probably just do it directly in that plugin:

PHP Code:

if ($post[simon1] >= '1') {
eval(
'$template_hook[postbit_userinfo_right] .= "$post[simon1] Threads in Simon\'s forum<br />";');


(NOT tested, but it's something like that. html must be escaped properly if using that method.)

If you use that method, don't forget to also cache the template. (Well, you don't have to, but it's good practice.)

Simon Lloyd 02-01-2009 04:57 PM

Lynne, thanks again for the help, i can't get it to work, i added a column called ctoptip i created a template like you said (called postbit_ctoptip) and the new plugin but it shows nothing?

Its getting frustrating now, like i said i'm no coder!

--------------- Added [DATE]1233515657[/DATE] at [TIME]1233515657[/TIME] ---------------

I made a post directly in the forum and got a db error user doesn't exist

Lynne 02-01-2009 05:22 PM

user doesn't exist? But there is nothing in there to do with the user. What was the exact error? And what is the exact code/template code your are using?

Simon Lloyd 02-01-2009 06:56 PM

Oki'll explain everyting i have done:
opened AdminMyPhp then my db, selected vb_user and added ctoptip to it with the settings you gave, i then created a plugin as follows with newthread_post_complete as the hook
PHP Code:

if (in_array($foruminfo['forumid'], array('52'))) { 
    
$db->query_write("UPDATE user SET ctoptip = ctoptip + 1 WHERE userid=" $vbulletin->userinfo['userid']); 


i then created a template called postbit_ctoptip
PHP Code:

<if condition="$post['ctoptip']>= '1'">$post[ctoptipTop Tips<br /></if> 

i then created another plugin with postbit_display_start as the hook
PHP Code:

eval('$template_hook[postbit_userinfo_right] .= " ' fetch_template('postbit_ctoptip') . '";'); 

i then used this in my postbit
PHP Code:

My Top Tip Count$post[ctoptip

making a post via a form to the forum (id 52) does not produce an error nor does it increase the counter, making a post direct gave a db error as shown below
Quote:

Database error in vBulletin 3.8.1:

Invalid SQL:
UPDATE user SET ctoptip = ctoptip + 1 WHERE userid=1;

MySQL Error : Table 'thexxxx_CCxxxx.user' doesn't exist
Error Number : 1146
Request Date : Sunday, February 1st 2009 @ 07:11:35 PM
Error Date : Sunday, February 1st 2009 @ 07:11:35 PM
Script : http://www.thecodecage.com/forumz/ne...ostthread&f=52
Referrer : http://www.thecodecage.com/forumz/ne...newthread&f=52
IP Address : xx.xxx.xxx.xx
Username : Simon Lloyd
Classname : vB_Database
MySQL Version : 5.0.67-community
The manual post posted ok, So i'm not sure what to do now?

--------------- Added [DATE]1233523473[/DATE] at [TIME]1233523473[/TIME] ---------------

could it be because userid 1 is an uneditable user?, it still doesn't explain no increments for the posts by form to the top tips forum (id 52).

Lynne 02-01-2009 08:34 PM

Ah, I don't use table prefixes, thus my query did not contain the table prefix. You need to change user to vb_user for your site.

Do you have the hook newthread_post_complete in your form? If not, you either need to add it (find it in the vb code and paste it when something similar is happening in your form code) or you need to add the code you put in the plugin directly into your form code.

Simon Lloyd 02-01-2009 08:37 PM

Quote:

Originally Posted by Lynne (Post 1731298)
Ah, I don't use table prefixes, thus my query did not contain the table prefix. You need to change user to vb_user for your site.

Do you have the hook newthread_post_complete in your form? If not, you either need to add it (find it in the vb code and paste it when something similar is happening in your form code) or you need to add the code you put in the plugin directly into your form code.

Thanks once again!, you said
Quote:

or you need to add the code you put in the plugin directly into your form code
which one of the plugins that i created?

Lynne 02-01-2009 08:42 PM

The one with the update query that uses the newthread_post_complete hook location. That is the one that isn't getting run because you don't have the hook location in your form.

Simon Lloyd 02-01-2009 08:51 PM

As for user i don't have user so cannot change is it for vb_user.....think i'm in over my head with this!

Lynne 02-01-2009 09:38 PM

I'm talking about in the query:
PHP Code:

UPDATE user SET ctoptip ctoptip 

To:
PHP Code:

UPDATE vb_user SET ctoptip ctoptip 


Simon Lloyd 02-02-2009 06:09 AM

Quote:

Originally Posted by Lynne (Post 1731351)
I'm talking about in the query:
PHP Code:

UPDATE user SET ctoptip ctoptip 

To:
PHP Code:

UPDATE vb_user SET ctoptip ctoptip 


Ah!, thanks, see told you i'm no coder!, i'm going to get in touch with Bananalive (hopefully) to see about adding the hook to his form code.

Thanks for all your help!

--------------- Added [DATE]1233573825[/DATE] at [TIME]1233573825[/TIME] ---------------

BTW, changing the prefix worked for direct posts, it counts them and displays in the postbit, but the form delivery does not until i can get some help with where and how to deliver the hook location in the form code.

Lynne 02-02-2009 03:21 PM

You just need to add the hook location into your form. I've got it in my form (I didn't use a modification from here - I wrote my own). Just look at where it is in the current vb code and see if you have some similar code in your form and just add it in the same place.

Simon Lloyd 02-02-2009 03:29 PM

Quote:

Originally Posted by Lynne (Post 1732019)
You just need to add the hook location into your form. I've got it in my form (I didn't use a modification from here - I wrote my own). Just look at where it is in the current vb code and see if you have some similar code in your form and just add it in the same place.

Lynne, thanks, the mod from Bananlive already has a couple of boxes when you create your form to add your plugin or hook code to it, so your code put in the box for befroe_submit worked like a charm, although i have found now that i will need to have some code that deletes from the count as i have had my first occurrence of that, editing the database regularly will be a definate no no!

Lynne 02-02-2009 04:00 PM

I run the queries I posted to get the initial count every night as a cron job (scheduled task) since I haven't written a plugin for deleted threads either.


All times are GMT. The time now is 08: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.01794 seconds
  • Memory Usage 1,817KB
  • 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_html_printable
  • (14)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (20)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