- •Table of Contents
- •Preface
- •What This Book Covers
- •Conventions
- •Reader Feedback
- •Customer Support
- •Downloading the Example Code for the Book
- •Errata
- •Questions
- •What is vBulletin?
- •Why Have a Discussion Board?
- •Benefits of a Discussion Board
- •Why vBulletin?
- •History
- •Development
- •The vBulletin Advantage
- •Versatile
- •Performance
- •Customizable
- •Easy to Maintain
- •Other Features
- •vBulletin Licensing Options
- •Leased License
- •Owned License
- •Choosing a License
- •Example vBulletin Sites
- •Summary
- •Requirements
- •Disk Space
- •Bandwidth
- •System Resources
- •Shared Hosting
- •Semi-Dedicated Hosting
- •Dedicated Hosting
- •Other Options
- •Installing vBulletin
- •Tools
- •Downloading the Installation Files
- •File Extraction
- •Upload Preparation
- •Creating the Database
- •Command-Line Database Creation
- •cPanel Database Creation
- •File Editing
- •Uploading the vBulletin Files
- •Running the vBulletin Installation Script
- •Troubleshooting
- •Database Access Issues
- •Images/Styling Not Showing
- •PHP Errors
- •The vBulletin Control Panel
- •Importing Data into vBulletin
- •Downloading the ImpEx Script
- •Compatibility
- •Preparing for Upload
- •Editing the Configuration File
- •Upload the ImpEx Script
- •Running the ImpEx Script
- •Default Usergroups
- •Securing vBulletin
- •Help & Support
- •Summary
- •The vBulletin User Experience
- •How to Get to the Board?
- •What the End Users See
- •Site Logo
- •Forum Title, Login Box, and Navbar
- •Welcome Banner
- •Main Body of the Forum
- •What's Going On
- •Footer
- •Touring the Main Forum—Unregistered Users
- •No "New Threads" for Unregistered Users
- •Registering on a vBulletin Board
- •Touring the Forum—Members
- •New Threads
- •Replying
- •Editing a Message
- •Private Messages
- •BB Code
- •User Tools
- •Display Modes
- •Navbar Changes for Members
- •The vBulletin Administrator Experience
- •Forum and Thread Tools
- •The AdminCP
- •Control Panel Home
- •Latest Version Information
- •vBulletin Options
- •Forum Management
- •Editing and Adding Forums
- •Editing Existing Forums
- •Moderation Options
- •Forum Styling
- •Access Control Options
- •Forum Posting Options
- •Enable/Disable Features
- •Branding
- •Changing the Logo
- •Undoing the Change
- •Summary
- •Types of Customization
- •CSS Modifications
- •Changing the Table Title Text
- •Viewing Changes
- •Undoing the Changes
- •Phrase Modifications
- •Searching for Phrases
- •Making Changes
- •Viewing the Changes
- •Undoing Changes
- •Template Modifications
- •Accessing Templates
- •Exploring a Template
- •Template Structure
- •Adding a FORUMHOME Sidebar
- •Two Changes
- •PHP Code Modifications
- •PayPal Modification
- •File Modification
- •Hacks
- •Pros and Cons of Hacking a vBulletin Board
- •Finding a Hack
- •Installing a Hack
- •Backing Up a Hack
- •Commercial Hacks
- •Summary
- •Setting Up a Forum
- •Creating the Forum
- •Forum Permissions
- •Viewing Permissions
- •Opening the Forum
- •Super Administrators
- •Creating a Super Administrator
- •Other Changes to the config.php File
- •Admin Log Viewing Permission
- •Admin Log Pruning Permission
- •Query Running Permission
- •Undeletable and Unalterable Users
- •Maintaining the Database
- •Backing Up the Database
- •Repairing and Optimizing the Database
- •Some Maintenance Issues
- •Smilies
- •Editing a Smilie
- •Adding a New Smilie
- •Uploading a Smilie
- •Creating Your Own Smilies
- •Avatars
- •Adding Avatars
- •Storing Avatars
- •Summary
- •When to Upgrade
- •Preparing for Upgrade
- •Migrating Changes
- •File Compare Utilities
- •Uploading the Files
- •Running the Upgrade Script
- •Testing the Upgrade
- •Unveiling the Upgrade
- •Summary
- •Styling vBulletin
- •Template Lifecycles
- •Lifecycle 1—Constant Change
- •Lifecycle 2—Working Behind the Scenes
- •Editing the Default Style
- •Changing Image Paths
- •Other Editable Elements
- •Some Tips about Editing Styles
- •Adding a New Style
- •Editing the Style
- •Saving the Style
- •Downloading the Style
- •Making the New Style into the Default
- •Distributing a Style
- •Installing a New Style
- •Summary
- •Hacking vBulletin
- •Making the Changes
- •Locating the Template
- •Hacking the pm_newpm Template
- •Testing the Hack
- •Hack Distribution
- •Tips for Hack Distribution
- •Plugins and Products
- •Getting Plugins and Products
- •Adding a Product
- •Adding a Plugin
- •What If Things Go Wrong?
- •Summary
- •Default Usergroup Settings
- •(COPPA) Users Awaiting Moderation
- •Administrators
- •Moderators
- •Registered Users
- •Super Moderators
- •Unregistered / Not Logged In
- •Users Awaiting Email Confirmation
- •Banned Users
- •Default vBulletin Database Tables
- •Moving Servers in Six Easy Steps
- •Cookie Check
- •Back up Database
- •Download the vBulletin Files
- •Transfer to New Server
- •Database Restoration
- •Back Online
- •Graphics
- •Global Post Text Find and Replace
- •Programming Standards
- •Braces
- •Indenting
- •Give Operators Space
- •String Quoting
- •Return Values
- •SQL Queries
- •Naming Conventions for Functions
- •Summary
- •vBulletin Directory Structure
- •Notes
- •Official vBulletin Sites
- •Main vBulletin Hack Site
- •vBulletin Styles and Templates
- •vBulletin Add-Ons
- •Index
Chapter 8
Making the Changes
Let's now work through how to make this hack possible. There are a few code changes you need to make to a vBulletin template. If things go wrong, you already know how to revert templates back to their original state. As long as you take care and follow the code here carefully, everything will work out fine. But always keep a backup just in case!
Locating the Template
In the left-hand menu of the AdminCP, click on Styles & Templates to expand it, and then click on
Style Manager.
This brings up the Style Manager page in the right-hand side screen. Click on the button marked << >> to expand the template window.
You now need to click on the new button marked << >> lower down on the page to expand all the templates so as to find the one you are looking for.
169
Developing a Hack
In the scrolling window, work your way down until you get to a template called pm_newpm. Double-click on the link to open the template.
Hacking the pm_newpm Template
You can now make a few changes to this template. These changes involve removing the existing code that causes the prompt to appear and adding new code that provides a checkbox so that the sender can request a read receipt if they want one.
The first thing you need to do is locate the following segment of JavaScript code in the template:
else if (formname.dopreview != true)
{
<if condition="$show['trackpm']">
if (confirm("$vbphrase[request_receipt_for_message]"))
{
formname.receipt.value = 1;
}
</if>
}
You need to remove this section of code. Rather than delete it outright it's much better to just comment out the code by adding // and a space to the beginning of each line of the script:
//else if (formname.dopreview != true)
//{
and so on.
While you're doing this, it's a good idea to add a note so that later you will be reminded later why you commented it out!
//Begin PM read receipt hack
//else if (formname.dopreview != true)
//{
170
Chapter 8
//}
//End PM read receipt hack
Next, within the same template, find this segment of code:
<input type="hidden" name="receipt" value="0" />
(This will be on one long line, so it may be rather hard to find.) Comment this out too. Since this is HTML, we comment it out by placing <!-- and --> around the line. Again, it's wise to add comments to the code to remind you why you removed the line:
<!-- Begin PM read receipt hack --> <!-- line removed -->
<!-- <input type="hidden" name="receipt" value="0" /> --> <!-- End PM read receipt hack -->
Next, look for the following segment of code:
<div>
<label for="cb_parseurl">
<input type="checkbox" name="parseurl" value="1" id="cb_parseurl" tabindex="1" $checked[parseurl] />
$vbphrase[automatically_parse_links_in_text] </label>
</div>
When you locate it, you need to add below it as follows (again remembering to add the comments):
<!-- Begin PM read receipt hack --> <!-- line added -->
<div>
<label for="cb_receipt">
<input type="checkbox" name="receipt" id="cb_receipt" value="1" /> Request Read Receipt?
</label>
</div>
<!-- End PM read receipt hack -->
Now that you've made the modifications to the code, you can save it by clicking on the Save button.
Testing the Hack
Testing is simple—try sending a PM! When you are in the private message window, you will see the new checkbox enabling you to specify that you want a read receipt for the message you send. Try a couple of tests, one with a read receipt request and another one without, just to make sure it all works.
171