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

Reply
 
Thread Tools Display Modes
  #1  
Old 09-10-2016, 03:27 PM
iNate19 iNate19 is offline
 
Join Date: Mar 2012
Posts: 63
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Automated Thread Prefixes

I was presented an idea and have been racking my brain trying to figure out how to pull it off.

I need to find a way to have Automated Thread Prefixes for a specific forum, according to thread views.

For instance, if a particular thread reaches 100 views... Then the thread prefix automatically becomes "Title 1"; then if it reaches 500 views it becomes "Title 2".

Any ideas?
Reply With Quote
  #2  
Old 09-10-2016, 06:03 PM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Create a new plugin hooked at "cron_script_cleanup_hourly" with the following code:

PHP Code:
global $vbulletin$db;
$fids '1,2,3';
$title1 'title_1';
$title2 'title_2';

$v_threads $vbulletin->db->query_read("
    SELECT thread.*
    FROM " 
TABLE_PREFIX "thread AS thread
    WHERE views > 99
    AND forumid IN (" 
$fids ")
"
);

while (
$v_thread $vbulletin->db->fetch_array($v_threads))
{
    
$newprefix '';

    if ((
$vthread['views'] < 500) AND ($vthread['prefixid'] != $title1))
    {
        
$newprefix $title1;
    }
    elseif (
$vthread['views'] > 499) AND ($vthread['prefixid'] != $title2))
    {
        
$newprefix $title2;
    }

    if (
$newprefix)
    {
        
$dataman =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
        
$dataman->set_existing($v_thread);
        
$dataman->set('prefixid'$newprefix);
        
$dataman->save();
        unset(
$dataman);
        
build_forum_counters($v_thread['forumid']);
        
build_thread_counters($v_thread['threadid']);
    }

Now, in the line:

PHP Code:
$fids '1,2,3'
Input the comma-delimited list of forumids in which you wish this to happen.

In the lines:

PHP Code:
$title1 'title_1';
$title2 'title_2'
replace 'title_1' and 'title_2' with the ids of the prefixes you have defined for this purpose.

Note: I haven't tested this, but it is based on a plugin from one of my products I use at MHB. Please let me know if you have any issues with it.
Reply With Quote
Благодарность от:
TheLastSuperman
  #3  
Old 09-10-2016, 06:55 PM
iNate19 iNate19 is offline
 
Join Date: Mar 2012
Posts: 63
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarkFL View Post
Create a new plugin hooked at "cron_script_cleanup_hourly" with the following code:

PHP Code:
global $vbulletin$db;
$fids '1,2,3';
$title1 'title_1';
$title2 'title_2';

$v_threads $vbulletin->db->query_read("
    SELECT thread.*
    FROM " 
TABLE_PREFIX "thread AS thread
    WHERE views > 99
    AND forumid IN (" 
$fids ")
"
);

while (
$v_thread $vbulletin->db->fetch_array($v_threads))
{
    
$newprefix '';

    if ((
$vthread['views'] < 500) AND ($vthread['prefixid'] != $title1))
    {
        
$newprefix $title1;
    }
    elseif (
$vthread['views'] > 499) AND ($vthread['prefixid'] != $title2))
    {
        
$newprefix $title2;
    }

    if (
$newprefix)
    {
        
$dataman =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
        
$dataman->set_existing($v_thread);
        
$dataman->set('prefixid'$newprefix);
        
$dataman->save();
        unset(
$dataman);
        
build_forum_counters($v_thread['forumid']);
        
build_thread_counters($v_thread['threadid']);
    }

Now, in the line:

PHP Code:
$fids '1,2,3'
Input the comma-delimited list of forumids in which you wish this to happen.

In the lines:

PHP Code:
$title1 'title_1';
$title2 'title_2'
replace 'title_1' and 'title_2' with the ids of the prefixes you have defined for this purpose.

Note: I haven't tested this, but it is based on a plugin from one of my products I use at MHB. Please let me know if you have any issues with it.
Appreciate it. I'll try it out and let you know
Reply With Quote
Благодарность от:
TheLastSuperman
  #4  
Old 09-10-2016, 10:30 PM
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 could also do it a completely different way (in real time) by having some code on a reply hook that checks the reply count and updates the prefix as required.
Reply With Quote
Благодарность от:
TheLastSuperman
  #5  
Old 09-11-2016, 02:29 AM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Paul M View Post
You could also do it a completely different way (in real time) by having some code on a reply hook that checks the reply count and updates the prefix as required.
The OP wants it to be based on views instead of replies, however, the code could be on a showthread hook instead to do it in real time.
Reply With Quote
  #6  
Old 09-11-2016, 12:53 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Views ? oh, I didnt notice that. Strange thing to base it on, very easily abused.

Still, yeah, same thing, different hook.
Reply With Quote
  #7  
Old 09-17-2016, 09:23 PM
iNate19 iNate19 is offline
 
Join Date: Mar 2012
Posts: 63
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Paul M View Post
Views ? oh, I didnt notice that. Strange thing to base it on, very easily abused.

Still, yeah, same thing, different hook.
Good point, how would I change it to replies instead of views?
Reply With Quote
  #8  
Old 09-17-2016, 09:33 PM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you are using my cron-based approach, then change all instances of $v_thread['views'] to $v_thread['replycount'].
Reply With Quote
  #9  
Old 09-17-2016, 10:21 PM
iNate19 iNate19 is offline
 
Join Date: Mar 2012
Posts: 63
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarkFL View Post
If you are using my cron-based approach, then change all instances of $v_thread['views'] to $v_thread['replycount'].
Awesome, thank you

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

Quote:
Originally Posted by MarkFL View Post
If you are using my cron-based approach, then change all instances of $v_thread['views'] to $v_thread['replycount'].
I'm testing the View code and it doesn't seem to be working, plug in is active.

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

PHP Code:
global $vbulletin$db;
$fids '36';
$title1 'Bronze';
$title2 'Silver';
$title3 'Gold';
$title4 'Platinum';
$title5 'Diamond';

$v_threads $vbulletin->db->query_read("
    SELECT thread.*
    FROM " 
TABLE_PREFIX "thread AS thread
    WHERE views > 99
    AND forumid IN (" 
$fids ")
"
);

while (
$v_thread $vbulletin->db->fetch_array($v_threads))
{
    
$newprefix '';

    if ((
$vthread['views'] < 249) AND ($vthread['Bronze'] != $title1))
    {
        
$newprefix $title1;
    }
    elseif (
$vthread['views'] < 499) AND ($vthread['Silver'] != $title2))
    {
        
$newprefix $title2;
    }
    elseif (
$vthread['views'] < 999) AND ($vthread['Gold'] != $title3))
    {
        
$newprefix $title3;
    }
    elseif (
$vthread['views'] < 2499) AND ($vthread['Platinum'] != $title4))
    {
        
$newprefix $title4;
    }
    elseif (
$vthread['views'] > 2500) AND ($vthread['Diamond'] != $title5))
    {
        
$newprefix $title5;
    }
    if (
$newprefix)
    {
        
$dataman =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
        
$dataman->set_existing($v_thread);
        
$dataman->set('prefixid'$newprefix);
        
$dataman->save();
        unset(
$dataman);
        
build_forum_counters($v_thread['forumid']);
        
build_thread_counters($v_thread['threadid']);
    }

Reply With Quote
  #10  
Old 09-18-2016, 12:27 AM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Did you manually run the cron job, or wait for it to run?
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 12:16 AM.


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.07227 seconds
  • Memory Usage 2,322KB
  • Queries Executed 11 (?)
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
  • (7)bbcode_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (3)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete