Thread: Private Messages Enhancements - Can't Use Private Messages Before X posts
View Single Post
  #38  
Old 02-14-2008, 08:39 PM
AngelBlue AngelBlue is offline
 
Join Date: Jun 2007
Posts: 125
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I suggest :

(1) You should add a URL tag to your product, so that they can find this page again more easily:
PHP Code:
<url>https://vborg.vbsupport.ru/showthread.php?t=155308</url> 
(2) That you consider implementing a version of this hack simply with template changes.

Example: I find that by adding the following to the beginning :
Code:
<if condition="in_array($bbuserinfo['usergroupid'], array(6,4,2,1,3,9,8,18,13,14,15,10))">
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"><TR><TD class="tcat">Sorry, you cannot send private messages.</TD></TR>
<TR><TD>
<BR><B>This is usually caused by a low post count</b>, although other possible causes are :
<UL>
<LI>A negative reputation score</LI>
<LI>A recent infraction</LI>
<LI>Your account awaiting email or admin activation</LI>
</UL>
<BR>To contact the webmaster or a moderator, you should instead post a new thread in <a href="http://www.ourdomainname.org/forum/forumdisplay.php?f=XXX">the requests forum</a>.
</TD></TR></TABLE>
<else />
and the following to the end :
Code:
</if>
of the "pm_newpm" template, I can very effectively stop certain usergroups from sending PMs. Combined with using the "promote based on posts" options in the promotions system, this can be a very effective alternative to your hack. Not only does it stop them seeing the "send pm" box at all (as opposed to letting them fill it out, but then giving them an error when they try to use it), but it has less overhead, too.
The downsides of my versions are :
(1) not as flexible as having php code to define who can and who can't send PMs
(2) can't know who you are sending the PMs to, unfortunately... so not very effective for blocking the sending of PMs to all but certain people. I get around this restriction by having a "requests" forum which anyone can post a thread in and reply to their own thread in... but only moderators can see or reply to other peoples' threads. This hack still lets the affected users be *sent* pms... so staff can contact the users concerned via PMs... the users are just forced to use a requests forum or email if they want to talk back.

(3) Have you considered having a pre-filled in "to" field in the send_pm template?
Say, you could make a product that, when someone loads the new_pm page, creates a $restricted_pm_html variable, and populates it with a drop-down menu of the names of the administrators or people designated to handle pms by new/restricted users.
If the template detected the user being restricted and, instead of giving them a free text entry box for the recipient name, simply gave them a drop-down menu... that could be a very effective way of limiting PMs.

For example, if you want people with zero posts to only be able to send PMs to the administrator, you could take :
Code:
					<if condition="$show['popups']">
					<script type="text/javascript" src="clientscript/vbulletin_ajax_namesugg.js?v=$vboptions[simpleversion]"></script>
					</if>
					<div>$vbphrase[recipient_usernames]</div>
					<div id="pmrecips"><textarea id="pmrecips_txt" name="recipients" rows="<if condition="is_browser('mozilla')">1<else />2</if>" cols="50" tabindex="1">$pm[recipients]</textarea></div>
					<if condition="$show['popups']">
						<div class="vbmenu_popup" id="pmrecips_menu" style="display:none; z-index:50"></div>
						<script type="text/javascript">
						<!--
						vbmenu_register('pmrecips', true);
						recip_sugg = new vB_AJAX_NameSuggest('recip_sugg', 'pmrecips_txt', 'pmrecips');
						recip_sugg.allow_multiple = true;
						//-->
						</script>
					</if>
					<span style="display:none" onclick="return swapbcc(this);" id="bccspan1">[<a href="#">$vbphrase[bcc]</a>]</span>
					<span id="bccspan2">$vbphrase[bcc] $vbphrase[recipient_usernames]<br /></span>
					<div id="bccpmrecips"><textarea id="bccpmrecips_txt" name="bccrecipients" rows="<if condition="is_browser('mozilla')">1<else />2</if>" cols="50" tabindex="1">$pm[bccrecipients]</textarea></div>
					<if condition="$show['popups']">
						<div class="vbmenu_popup" id="bccpmrecips_menu" style="display:none; z-index:50"></div>
						<script type="text/javascript">
						<!--
						vbmenu_register('bccpmrecips', true);
						bccrecip_sugg = new vB_AJAX_NameSuggest('bccrecip_sugg', 'bccpmrecips_txt', 'bccpmrecips');
						bccrecip_sugg.allow_multiple = true;
						<if condition="$show['bcclink']">
						fetch_object('bccpmrecips').style.display = 'none';
						fetch_object('bccspan2').style.display = 'none';
						fetch_object('bccspan1').style.display = '';
						function swapbcc(obj)
						{
							obj.style.display = 'none';
							fetch_object('bccpmrecips').style.display = '';
							fetch_object('bccspan2').style.display = '';
							return false;
						}
						</if>
						//-->
						</script>
					</if>
and put the following before it :
Code:
<if condition="in_array($bbuserinfo['usergroupid'], array(1,2,3,4,etc)">
<input type="text" name "pmrecips" value="ADMINNAME" DISABLED>
<input type="hidden" name="bccrecipients" value="">
<else />
and the following after it :
Code:
</if>
That limits members of those groups to sending PMs only to ADMINNAME.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01207 seconds
  • Memory Usage 1,800KB
  • 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
  • (5)bbcode_code
  • (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