Thread: Miscellaneous Hacks - VSa - Advanced Permissions Based on Post Count
View Single Post
  #178  
Old 02-05-2012, 04:33 PM
OmerE OmerE is offline
 
Join Date: Jan 2004
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi,

Few issues with this:
  1. It is trivial to get around the PM limits check, simply use BCC when writing the message - the code only checks recipients, not BCC recipients
  2. The add-on only checks the main user group, and not membergroups, when testing for which groups it is OK to send PM to despite limit

Suggested fix for both issues, replace body of private_insertpm_process plugin with below (tested in 3.8 but should be similar in 3.6/3.7/4.x):
PHP Code:
if ($vbulletin->options['apboupc_global_enable'] AND $vbulletin->options['apboupc_pms'])
{
    if (!
is_member_of($vbulletin->userinfosplit(','$vbulletin->options['apboupc_pm_excludedgroups'])) AND ($vbulletin->options['apboupc_pm_amount'] !='0') AND ($vbulletin->userinfo[posts] < $vbulletin->options['apboupc_pm_amount']))
    {
        
$recs = &$pmdm->info['recipients'];
        foreach(
$recs as $userid => $user) {
            if(!
is_member_of($usersplit(','$vbulletin->options['apboupc_pm_allowed']))) {
                
$db->hide_errors();
                
$apboupc_get_allowedrecs $vbulletin->db->query_read("SELECT userid, username, usergroupid FROM `" TABLE_PREFIX "user` AS user WHERE `usergroupid` IN (".$vbulletin->options['apboupc_pm_allowed'].") ");
                while (
$apboupc_allowedrecs $vbulletin->db->fetch_array($apboupc_get_allowedrecs))
                {
                    
$apboupc_allowedrec[] = $apboupc_allowedrecs['username'];
                    
$allowed_recipients .= ', <a href="private.php?do=newpm&u='.$apboupc_allowedrecs['userid'].'">'.fetch_musername($apboupc_allowedrecs).'</a>';
                }
                
$db->show_errors();
                
$allowed_recipients substr($allowed_recipients1);
            
                
standard_error(fetch_error('error_postcount_too_low_pm'$vbulletin->options['apboupc_pm_amount'], $vbulletin->userinfo[posts], $allowed_recipients));
            }
        }
    }

Note this will still only list 'possible target users' with usergroup equal to exclusion group; this is intentional in our case, but YMMV.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01096 seconds
  • Memory Usage 1,794KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete