PDA

View Full Version : Is there a way of having two post counts per user?


grom815
07-02-2014, 11:28 PM
Im looking for either a product, or a way of doing this myself.
What I want is to have a user have two post-counts. One being an inflated one, and one being a "real one".

For example,
If User1 has 20 posts on my forum, but I edit his post count to be 50, in his postbit and profile, it will say 50.
I want to have his profile and postbit say 50, just like it is.
However, in his profile only, underneath 'Total Posts', I want there to be 'Posts in these forums', where the value is 20.
When he makes a new post, I want the postbit and 'Total Posts' to go to 51 like normal, and the 'Posts in these forums' to go up also to 21. I want the posts per day to be calculated using the 21 posts.

Or maybe make a duplicate of the 'Total Posts' and add an offset to it and change the postbit to have that value?

Any way I can do this and not screw everything up?

--------------- Added 1404416245 at 1404416245 ---------------

Anyone?


Maybe I can create a custom non-user-editable field, and put their offset post count in there. For the example, I will name this field 'Offset'.
So if a user has 20 posts on my forum, his 'Total Posts' will say 20. As admin, I would edit his 'Offset' field to say 50.
Then, I would edit the postbit to show 'Total Posts' + 'Offset' for post count. In this example, it would show Postcount: 70.

Is math like this even possible?


I'm open to any ideas....
Is there a tutorial on adding custom fields in MySQL and interfacing them with vBulletin?
Maybe I can add a 'TotalPostsPlusOffset' column in the same table that has the postcount. Then, when I make a change to a user's 'Offset' field, it would run an update query on that user and add the 'Postcount' and 'Offset' columns.

kh99
07-03-2014, 11:25 PM
Maybe I can create a custom non-user-editable field, and put their offset post count in there. For the example, I will name this field 'Offset'.
So if a user has 20 posts on my forum, his 'Total Posts' will say 20. As admin, I would edit his 'Offset' field to say 50.
Then, I would edit the postbit to show 'Total Posts' + 'Offset' for post count. In this example, it would show Postcount: 70.

Is math like this even possible?

I think this would be easiest, if just changing the postbit display is enough. There's a minor complication in that the posts number is formatted as a string and the original integer is not saved, so there's no easy way to recalculate it after that. But what you might do is create a plugin using hook postbit_display_start and create your own "adjusted posts" value in $post, then edit your postbit (or postbit_legacy) to use the new value.

For example, if your non-user-editable field is field7, then maybe the plugin code is:
$post['adjusted_posts'] = vb_number_format($post['posts'] + $post['field7']);

Then in the postbit template, change {vb:raw post.posts} to {vb:raw post.adjusted_posts}.

But IIRC, the profile field has to at least be publicly readable or else you'll find $post['field7'] will be empty.

grom815
07-04-2014, 12:23 AM
I think this would be easiest, if just changing the postbit display is enough. There's a minor complication in that the posts number is formatted as a string and the original integer is not saved, so there's no easy way to recalculate it after that. But what you might do is create a plugin using hook postbit_display_start and create your own "adjusted posts" value in $post, then edit your postbit (or postbit_legacy) to use the new value.

For example, if your non-user-editable field is field7, then maybe the plugin code is:
$post['adjusted_posts'] = vb_number_format($post['posts'] + $post['field7']);

Then in the postbit template, change {vb:raw post.posts} to {vb:raw post.adjusted_posts}.

But IIRC, the profile field has to at least be publicly readable or else you'll find $post['field7'] will be empty.


Holy hell, that was so easy...
You are my hero!

--------------- Added 1404440906 at 1404440906 ---------------

That worked just fine, but now I'm trying to add that same post count to the sidebar on the member profile sidebar.

In 'memberinfo_block_ministats', there is the code:
<dl class="stats">
<dt>{vb:rawphrase total_posts}</dt>
<dd> {vb:raw prepared.posts}</dd>
</dl>

I am trying to get the adjusted_posts value previously calculated to show here as well.
I tried using the same code using the 'member_build_blocks_start' hook, and changing 'prepared.posts' to 'post.adjusted_posts', but it didn't work.

What was I supposed to do differently?

Thanks!

vbresults
07-04-2014, 07:01 PM
No need to edit any templates (this will be a pain in the ass later) --

Hook: postbit_display_complete

// Overwrite the original post count, alleviating the need for a template edit
$post['posts'] = vb_number_format(intval(str_replace(",", "", $posts['posts'])) + $posts['field7']);


Hook: member_complete

// Overwrite the original post count, alleviating the need for a template edit
$prepared['posts'] = vb_number_format(intval(str_replace(",", "", $prepared['posts'])) + $userinfo['field7']);

kh99
07-04-2014, 07:36 PM
No need to edit any templates (this will be a pain in the ass later) --

Hook: postbit_display_start

// Overwrite the original post count, alleviating the need for a template edit
$post['posts'] = vb_number_format(intval(str_replace(",", "", $posts['posts'])) + $post['field7']);

...


Yeah, I thought about it after I posted and realized that it wasn't really that hard to undo the number formatting - good call. Your code assumes the thousands separator is a comma, which is probably true for grom815, but to generalize it you could use $vbulletin->userinfo['lang_thousandsep'].

But it needs to use hook postbit_display_complete, and there's also a typo ($posts['post'] needs to be $post['posts']).

grom815
07-04-2014, 09:22 PM
Thanks, but the first snippet worked, so I am going to leave it.

I added a plugin:
$prepared['posts'] = vb_number_format(intval(str_replace(",", "", $prepared['posts'])) + $userinfo['field7']);

with a hook 'member_complete'.

It did not do anything for the profile page. The post count is still the original post count.

grom815
07-11-2014, 11:45 PM
bump :)