Thread: Miscellaneous Hacks - VSa - Advanced Permissions Based on Post Count
View Single Post
  #182  
Old 02-18-2012, 09:54 AM
Tahooma Tahooma is offline
 
Join Date: Aug 2010
Posts: 51
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by OmerE View Post
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.
If you, as supposed, support the whole body text of the plugin, it does not work in 4.1.6
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03370 seconds
  • Memory Usage 1,806KB
  • 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)bbcode_quote
  • (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