View Full Version : Mini Mods - Remove User's Ability To Disable the PM System
King Kovifor
07-18-2007, 10:00 PM
Introduction
Each user has the ability to turn the private message system on / off in the user options. This hack will remove that ability for users to globally disable this option.
How This Works
This hack works on the basis that a user cannot modify hidden form fields. By modifying the user control panel's option template, it changes the field for disabling the PM system to a hidden field with a default value (of enabled). This requires that all previous users have this set to "yes" (this is addressed during installation).
Installation
Installation requires a small amount of work on your part, but it is a very simple to install. During installation, you must run 1 SQL query.
Login to your Administrators Control Panel. Head down to the "Maintenance" drop down in the left hand navigation. Choose "Execute SQL Query". Select "Yes - Receive Private Messages" from the drop down of automatic queries. Click Continue. Continue on the warning screen. This will set all users that have disabled the Private Messaging system to having it enabled.
Modify the phrase features_private_messaging_system (found within User Tools (global) phrase type) and remove the part about disabling the system.
Here is the default English removal:
This forum features a <a href="{1}">private messaging system</a>, which allows members to send messages to one another privately.
Read "The Really Helpful Post (https://vborg.vbsupport.ru/showpost.php?p=1296010&postcount=2)" below, if this template is unedited!
Edit the modifyoptions template (found under "Modify User Option Templates" in the template manager). Change...
<tr>
<td><label for="cb_receivepm"><input type="checkbox" name="options[receivepm]" value="1" id="cb_receivepm" onclick="toggle_disabled(this.checked, 'pmoptions')" $checked[receivepm] />$vbphrase[enable_private_messaging]</label><input type="hidden" name="set_options[receivepm]" value="1" /></td>
</tr>
... to
<tr style="display: none;">
<td><label for="cb_receivepm"><input type="checkbox" name="options[receivepm]" value="1" id="cb_receivepm" onclick="toggle_disabled(this.checked, 'pmoptions')" $checked[receivepm] />$vbphrase[enable_private_messaging]</label><input type="hidden" name="set_options[receivepm]" value="1" /></td>
</tr>
Click "Install" Here!
Change Log
v1.0.0 - July 19th 2007
Initial Release
King Kovifor
07-19-2007, 08:19 PM
The Really Helpful Post
If you haven't modified the modifyoptions template, you may replace the entire template with the following one (this template is of the latest vBulletin version as of release: v3.6.7):
<script type="text/javascript">
<!--
function toggle_disabled(status, objid)
{
obj = fetch_object(objid);
if (obj)
{
obj.disabled = (status ? false : true);
}
}
//-->
</script>
<form action="profile.php?do=updateoptions" method="post">
<input type="hidden" name="s" value="$session[dbsessionhash]" />
<input type="hidden" name="do" value="updateoptions" />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<thead>
<tr>
<td class="tcat">$vbphrase[edit_options]<span class="normal">: $bbuserinfo[username]</span></td>
</tr>
<tr>
<td class="thead">
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('uopt_login')"><img id="collapseimg_uopt_login" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_uopt_login].gif" alt="" border="0" /></a>
$vbphrase[login_privacy]
</td>
</tr>
</thead>
<tbody id="collapseobj_uopt_login" style="$vbcollapse[collapseobj_uopt_login]">
<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">
<if condition="$show['invisibleoption']">
<fieldset class="fieldset">
<legend><label for="cb_invisible">$vbphrase[use_invisible_mode]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[invisible_mode_allows]</td>
</tr>
<tr>
<td><label for="cb_invisible"><input type="checkbox" name="options[invisible]" value="1" id="cb_invisible" $checked[invisible] />$vbphrase[use_invisible_mode]</label><input type="hidden" name="set_options[invisible]" value="1" /></td>
</tr>
</table>
</fieldset>
</if>
<if condition="$show['reputationoption']">
<fieldset class="fieldset">
<legend><label for="cb_showreputation">$vbphrase[show_my_reputation_level]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>
<phrase 1="$bbuserinfo[reputation]">$vbphrase[current_reputation_level_is_displayed]</phrase>
</td>
</tr>
<tr>
<td><label for="cb_showreputation"><input type="checkbox" name="options[showreputation]" value="1" id="cb_showreputation" $checked[showreputation] />$vbphrase[show_my_reputation_level]</label><input type="hidden" name="set_options[showreputation]" value="1" /></td>
</tr>
</table>
</fieldset>
</if>
<fieldset class="fieldset">
<legend><label for="cb_showvcard">$vbphrase[allow_vcard_download]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>
$vbphrase[may_allow_users_tdownload_vcard]
</td>
</tr>
<tr>
<td><label for="cb_showvcard"><input type="checkbox" name="options[showvcard]" value="1" id="cb_showvcard" $checked[showvcard] />$vbphrase[allow_vcard_download]</label><input type="hidden" name="set_options[showvcard]" value="1" /></td>
</tr>
</table>
</fieldset>
$customfields[login]
</div>
</div>
</td>
</tr>
</tbody>
</table>
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<thead>
<tr>
<td class="thead">
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('uopt_msg')"><img id="collapseimg_uopt_msg" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_uopt_msg].gif" alt="" border="0" /></a>
$vbphrase[messaging_notification]
</td>
</tr>
</thead>
<tbody id="collapseobj_uopt_msg" style="$vbcollapse[collapseobj_uopt_msg]">
<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">
<fieldset class="fieldset">
<legend>$vbphrase[receive_email]</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>
$vbphrase[administrators_may_send_email]
</td>
</tr>
<tr>
<td><label for="cb_adminemail"><input type="checkbox" name="options[adminemail]" value="1" id="cb_adminemail" $checked[adminemail] />$vbphrase[receive_email_from_bulletin_board_staff]</label><input type="hidden" name="set_options[adminemail]" value="1" /></td>
</tr>
<if condition="$show['receiveemail']">
<tr>
<td><br />$vbphrase[allow_members_send_you_email]</td>
</tr>
<tr>
<td><label for="cb_showemail"><input type="checkbox" name="options[showemail]" value="1" id="cb_showemail" $checked[showemail] />$vbphrase[receive_email_from_other_members]</label><input type="hidden" name="set_options[showemail]" value="1" /></td>
</tr>
</if>
</table>
</fieldset>
<if condition="!$vboptions['enableemail']">
<input type="hidden" name="options[showemail]" value="$bbuserinfo[showemail]" />
</if>
<fieldset class="fieldset">
<legend><label for="sel_autosubscribe">$vbphrase[default_thread_subscription_mode]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td><phrase 1="subscription.php$session[sessionurl_q]" rel="nofollow">$vbphrase[can_automatically_subscribe]</phrase></td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="autosubscribe" id="sel_autosubscribe">
<option value="-1" $emailchecked[9999]>$vbphrase[do_not_subscribe]</option>
<option value="0" $emailchecked[0]>$vbphrase[no_email_notification]</option>
<option value="1" $emailchecked[1]>$vbphrase[instant_email_notification]</option>
<option value="2" $emailchecked[2]>$vbphrase[daily_email_notification]</option>
<option value="3" $emailchecked[3]>$vbphrase[weekly_email_notification]</option>
</select>
</span>
<label for="sel_autosubscribe">$vbphrase[default_thread_subscription_mode]:</label>
</td>
</tr>
</table>
</fieldset>
<if condition="$show['pmoptions']">
<fieldset class="fieldset">
<legend><label for="cb_receivepm">$vbphrase[private_messaging]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>
<phrase 1="private.php$session[sessionurl_q]">$vbphrase[features_private_messaging_system]</phrase>
</td>
</tr>
<tr style="display: none;">
<td><label for="cb_receivepm"><input type="checkbox" name="options[receivepm]" value="1" id="cb_receivepm" onclick="toggle_disabled(this.checked, 'pmoptions')" $checked[receivepm] />$vbphrase[enable_private_messaging]</label><input type="hidden" name="set_options[receivepm]" value="1" /></td>
</tr>
<tbody id="pmoptions"<if condition="!$bbuserinfo[receivepm]"> disabled="disabled"</if>>
<tr>
<td><br />$vbphrase[accept_pm_only_from_buddies]</td>
</tr>
<tr>
<td><label for="cb_receivepmbuddies"><input type="checkbox" name="options[receivepmbuddies]" value="1" id="cb_receivepmbuddies" $checked[receivepmbuddies] />$vbphrase[pm_from_buddies_only]</label><input type="hidden" name="set_options[receivepmbuddies]" value="1" /></td>
</tr>
<tr>
<td><br />$vbphrase[can_email_when_sends_you_pm]</td>
</tr>
<tr>
<td><label for="cb_emailonpm"><input type="checkbox" name="options[emailonpm]" value="1" id="cb_emailonpm" $checked[emailonpm] />$vbphrase[receive_email_notification_pm]</label><input type="hidden" name="set_options[emailonpm]" value="1" /></td>
</tr>
<tr>
<td><br />$vbphrase[browsing_when_receive_pm_popup]</td>
</tr>
<tr>
<td><label for="cb_pmpopup"><input type="checkbox" name="pmpopup" value="1" id="cb_pmpopup" $checked[pmpopup] />$vbphrase[show_pm_popup]</label></td>
</tr>
</tbody>
</table>
</fieldset>
<else />
<input type="hidden" name="options[receivepm]" value="$bbuserinfo[receivepm]" />
<input type="hidden" name="options[emailonpm]" value="$bbuserinfo[emailonpm]" />
<input type="hidden" name="pmpopup" value="$bbuserinfo[pmpopup]" />
</if>
$customfields[messaging]
</div>
</div>
</td>
</tr>
</tbody>
</table>
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<thead>
<tr>
<td class="thead">
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('uopt_thrd')"><img id="collapseimg_uopt_thrd" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_uopt_thrd].gif" alt="" border="0" /></a>
$vbphrase[thread_display_options]
</td>
</tr>
</thead>
<tbody id="collapseobj_uopt_thrd" style="$vbcollapse[collapseobj_uopt_thrd]">
<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">
<fieldset class="fieldset">
<legend>$vbphrase[visible_post_elements]</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[option_to_hide_elements]</td>
</tr>
<tr>
<td>
<div><label for="cb_showsignatures"><input type="checkbox" name="options[showsignatures]" value="1" id="cb_showsignatures" $checked[showsignatures] />$vbphrase[show_signatures]</label><input type="hidden" name="set_options[showsignatures]" value="1" /></div>
<div><label for="cb_showavatars"><input type="checkbox" name="options[showavatars]" value="1" id="cb_showavatars" $checked[showavatars] />$vbphrase[show_avatars]</label><input type="hidden" name="set_options[showavatars]" value="1" /></div>
<div><label for="cb_showimages"><input type="checkbox" name="options[showimages]" value="1" id="cb_showimages" $checked[showimages] />$vbphrase[show_images] ($vbphrase[including_attached_and_img_code])</label><input type="hidden" name="set_options[showimages]" value="1" /></div>
</td>
</tr>
</table>
</fieldset>
<fieldset class="fieldset">
<legend><label for="sel_threadedmode">$vbphrase[thread_display_mode]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td><phrase 1="faq.php?$session[sessionurl]faq=vb_board_usage#faq_vb_threadedmode">$vbphrase[choose_thread_display_mode]</phrase></td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="threadedmode" id="sel_threadedmode">
<option value="0" $threaddisplaymode[0]>$vbphrase[linear] - $vbphrase[oldest_first]</option>
<option value="3" $threaddisplaymode[3]>$vbphrase[linear] - $vbphrase[newest_first]</option>
<if condition="$vboptions['allowthreadedmode']">
<option value="1" $threaddisplaymode[1]>$vbphrase[threaded]</option>
<option value="2" $threaddisplaymode[2]>$vbphrase[hybrid]</option>
</if>
</select>
</span>
<label for="sel_threadedmode">$vbphrase[thread_display_mode]:</label>
</td>
</tr>
</table>
</fieldset>
<fieldset class="fieldset">
<legend><label for="sel_umaxposts">$vbphrase[posts_to_show_per_page]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[use_set_posts_before_splitting]</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="umaxposts" id="sel_umaxposts">
<option value="-1" $postsdefaultselected>$vbphrase[use_forum_default]</option>
$maxpostsoptions
</select>
</span>
<label for="sel_umaxposts">$vbphrase[posts_to_show_per_page]:</label>
</td>
</tr>
</table>
</fieldset>
<fieldset class="fieldset">
<legend><label for="sel_prunedays">$vbphrase[default_thread_age_cut_off]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[time_period_to_display_threads]</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="prunedays" id="sel_prunedays">
<option value="0" $daysdefaultselected>$vbphrase[use_forum_default]</option>
<option value="1" $days1selected>$vbphrase[show_threads_from_last_day]</option>
<option value="2" $days2selected><phrase 1="2">$vbphrase[show_threads_from_last_x_days]</phrase></option>
<option value="7" $days7selected>$vbphrase[show_threads_from_last_week]</option>
<option value="10" $days10selected><phrase 1="10">$vbphrase[show_threads_from_last_x_days]</phrase></option>
<option value="14" $days14selected><phrase 1="2">$vbphrase[show_threads_from_last_x_weeks]</phrase></option>
<option value="30" $days30selected>$vbphrase[show_threads_from_last_month]</option>
<option value="45" $days45selected><phrase 1="45">$vbphrase[show_threads_from_last_x_days]</phrase></option>
<option value="60" $days60selected><phrase 1="2">$vbphrase[show_threads_from_last_x_months]</phrase></option>
<option value="75" $days75selected><phrase 1="75">$vbphrase[show_threads_from_last_x_days]</phrase></option>
<option value="100" $days100selected><phrase 1="100">$vbphrase[show_threads_from_last_x_days]</phrase></option>
<option value="365" $days365selected>$vbphrase[show_threads_from_last_year]</option>
<option value="-1" $daysallselected>$vbphrase[show_all_threads]</option>
</select>
</span>
<label for="sel_prunedays">$vbphrase[default_thread_age_cut_off]:</label>
</td>
</tr>
</table>
</fieldset>
$customfields[threadview]
</div>
</div>
</td>
</tr>
</tbody>
</table>
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<thead>
<tr>
<td class="thead">
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('uopt_date')"><img id="collapseimg_uopt_date" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_uopt_date].gif" alt="" border="0" /></a>
$vbphrase[date_time_options]
</td>
</tr>
</thead>
<tbody id="collapseobj_uopt_date" style="$vbcollapse[collapseobj_uopt_date]">
<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">
$timezoneoptions
<fieldset class="fieldset">
<legend><label for="sel_startofweek">$vbphrase[start_of_the_week]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[parts_use_different_start_of_week]</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="startofweek" id="sel_startofweek">
<option value="1" $day1selected>$vbphrase[sunday]</option>
<option value="2" $day2selected>$vbphrase[monday]</option>
<option value="3" $day3selected>$vbphrase[tuesday]</option>
<option value="4" $day4selected>$vbphrase[wednesday]</option>
<option value="5" $day5selected>$vbphrase[thursday]</option>
<option value="6" $day6selected>$vbphrase[friday]</option>
<option value="7" $day7selected>$vbphrase[saturday]</option>
</select>
</span>
<label for="sel_startofweek">$vbphrase[start_of_the_week]:</label>
</td>
</tr>
</table>
</fieldset>
$customfields[datetime]
</div>
</div>
</td>
</tr>
</tbody>
</table>
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="thead">
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('uopt_misc')"><img id="collapseimg_uopt_misc" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_uopt_misc].gif" alt="" border="0" /></a>
$vbphrase[miscellaneous_options]
</td>
</tr>
<tr>
<td class="panelsurround" align="center">
<div class="panel" id="collapseobj_uopt_misc" style="$vbcollapse[collapseobj_uopt_misc]">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">
<if condition="$show['editormode_picker']">
<fieldset class="fieldset">
<legend><label for="sel_showvbcode">$vbphrase[message_editor_interface]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[entering_message_three_interface]</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="showvbcode" id="sel_showvbcode">
<option value="0" $selectvbcode[0]>$vbphrase[basic_editor_simple_text_box]</option>
<option value="1" $selectvbcode[1]>$vbphrase[standard_editor_extra_formatting]</option>
<if condition="$show['editormode_wysiwyg']">
<option value="2" $selectvbcode[2]>$vbphrase[enhanced_interface_wysiwyg]</option>
</if>
</select>
</span>
<label for="sel_showvbcode">$vbphrase[message_editor_interface]:</label>
</td>
</tr>
</table>
</fieldset>
<else />
<input type="hidden" name="showvbcode" value="$bbuserinfo[showvbcode]" />
</if>
<if condition="$show['styleoption']">
<fieldset class="fieldset">
<legend><label for="sel_newstyleset">$vbphrase[board_skin]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>
$vbphrase[switch_skin_select]
</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="newstyleset" id="sel_newstyleset">
$stylesetlist
</select>
</span>
<label for="sel_newstyleset">$vbphrase[board_skin]:</label>
</td>
</tr>
</table>
</fieldset>
</if>
<if condition="$show['languageoption']">
<fieldset class="fieldset">
<legend><label for="sel_languageid">$vbphrase[board_language]</label></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td>$vbphrase[board_can_be_shown_any_language]</td>
</tr>
<tr>
<td>
<span style="float:$stylevar[right]">
<select name="languageid" id="sel_languageid">
<option value="0">$vbphrase[use_forum_default]</option>
$languagelist
</select>
</span>
<label for="sel_languageid">$vbphrase[board_language]:</label>
</td>
</tr>
</table>
</fieldset>
</if>
$customfields[other]
</div>
</div>
<div style="margin-top:$stylevar[cellpadding]px">
<input type="submit" class="button" value="$vbphrase[save_changes]" accesskey="s" />
<input type="reset" class="button" value="$vbphrase[reset_fields]" accesskey="r" />
</div>
</td>
</tr>
</table>
</form>
rjmjr69
07-20-2007, 01:35 AM
Nice idea....
King Kovifor
07-20-2007, 02:56 PM
It was to solve a problem someone had with trying to contact a user, but they turned it off.
cheat-master30
07-20-2007, 08:14 PM
One minor problem:
Since you are hiding the row with display:none, any user who is versed with websites, CSS, etc can just disable PMs by changing the option to view page style to view no style. But I might try it if need be. So thanks for the release.
King Kovifor
07-20-2007, 09:55 PM
You could also set the option to hidden, so that they couldn't see it. Many improvements could be made.
cheat-master30
07-20-2007, 10:31 PM
You could also set the option to hidden, so that they couldn't see it. Many improvements could be made.
Ever thought of just doing something like:
<if condition=[member of admin usergroup code]>
[code to disable PM system]
</if>
King Kovifor
07-20-2007, 10:37 PM
You could hide the field, so any CSS that was removed by the browser wouldn't affect being able to edit this.
Smiry Kin's
07-25-2007, 06:30 PM
Can do this it by that by just removing the code..
What you need is to make it an option in vbulletin options... e.g
Overright User PM Option
King Kovifor
07-25-2007, 09:53 PM
Making it an option would require code modification to remove all instances of the over ride. If you make it "hidden" to the public view, it requires no code modification.
bada_bing
07-26-2007, 04:03 PM
THis would be cool if you can control which usergroup can enable/disable the PM feature.
King Kovifor
07-27-2007, 02:09 PM
The could be done easy enough.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.