The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Attached Image Watermarking PLUS Guest Viewing of Thumbnails Details »» | |||||||||||||||||||||||||||
Attached Image Watermarking PLUS Guest Viewing of Thumbnails
Developer Last Online: Mar 2012
I had been looking for these two options for quite a while, and was finally able to hire Brian (of vBadvanced) to write them for me. Since a lot of people have been looking for this, I have decided (with Brian's permission) to release this as a free, unsupported, modification.
This modification will allow you to specify a watermark image that will be overlayed over any attached JPG or PNG file on your site in real time, as the image is displayed. NO PERMANENT CHANGES ARE MADE TO ANY OF YOUR ATTACHMENTS. You can also exclude specific forums and usergroups from seeing the watermark. As an added bonus, he included the ability to allow guests to see attached image thumbnails, while still requiring them to register to see the full size attachments. (Make sure you have your Unregistered / Not Logged In usergroup set to NOT have access to download attachments.) PLEASE CLICK INSTALL so that maybe Jelsoft will include these as built-in features in a future version. Notes/Troubleshooting:
Well, on to the modification: ============================================= STEP 1: Since the resulting file contains too much vBulletin code, I am unable to include it with this modification. So, the first step is to copy vBulletin's attachment.php to a file named attachment_watermark.php. Then, edit attachment_watermark.php, making the following changes. ============================================= STEP 2: You need to delete a LOT of lines from the top of the file. Find this line... Code:
$idname = $vbphrase['attachment']; Your attachment_watermark.php file should begin with this code when you've completed this step: Code:
<?php $idname = $vbphrase['attachment']; ============================================= STEP 3: Find this line of code: Code:
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($attachmentinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))) Code:
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']) AND !$vbulletin->GPC['thumb']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($attachmentinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))) ============================================= STEP 4: Find these lines of code: Code:
else { $attachpath = fetch_attachment_path($attachmentinfo['userid'], $attachmentinfo['attachmentid']); Code:
// ######################################### // ##### Start modified section for watermarks // ######################################### $vbulletin->options['attach_water_exforums'] = explode(',', $vbulletin->options['attach_water_exforums']); $vbulletin->options['attach_water_exgroups'] = explode(',', $vbulletin->options['attach_water_exgroups']); if ($vbulletin->options['attach_water_filelocation'] AND in_array($extension, array('jpg', 'jpeg', 'png')) AND !in_array($attachmentinfo['forumid'], $vbulletin->options['attach_water_exforums']) AND !array_intersect(fetch_membergroupids_array($vbulletin->userinfo), $vbulletin->options['attach_water_exgroups']) ) { $attachsize = getimagesize($attachpath); if ($attachsize[0] >= $vbulletin->options['attach_water_minsize'] AND $attachsize[1] >= $vbulletin->options['attach_water_minsize']) { $waterimage =& $vbulletin->options['attach_water_filelocation']; $watersize = getimagesize($waterimage); $waterext = strtolower(substr($waterimage, strrpos($waterimage, '.') + 1)); // Coordinates (height) switch ($vbulletin->options['attach_water_coordinates'][0]) { case 'n': $waterpos['height'] = 0 + $vbulletin->options['attach_water_padding']; break; case 'm': $waterpos['height'] = round(($attachsize[1] - $watersize[1]) / 2); break; case 's': $waterpos['height'] = round(($attachsize[1] - $watersize[1])) - $vbulletin->options['attach_water_padding']; break; } // Coordinates (width) switch ($vbulletin->options['attach_water_coordinates'][1]) { case 'w': $waterpos['width'] = 0 + $vbulletin->options['attach_water_padding']; break; case 'c': $waterpos['width'] = round(($attachsize[0] - $watersize[0]) / 2); break; case 'e': $waterpos['width'] = round(($attachsize[0] - $watersize[0])) - $vbulletin->options['attach_water_padding']; break; } // Watermark ext switch ($waterext) { case 'jpg': case 'jpeg': $watermark = imagecreatefromjpeg($waterimage); break; case 'png': $watermark = imagecreatefrompng($waterimage); break; } // Attachment ext switch ($extension) { case 'jpg': case 'jpeg': $attachimage = imagecreatefromjpeg($attachpath); break; case 'png': $attachimage = imagecreatefrompng($attachpath); break; } imagealphablending($attachimage, true); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); imagecopy($attachimage, $watermark, $waterpos['width'], $waterpos['height'], 0, 0, $watersize[0], $watersize[1]); define('WATERMARKED', true); } } // ######################################### // ##### End modified section for watermarks // ######################################### ============================================= STEP 5: Find this line of code: Code:
header('Content-Length: ' . (($lastbyte + 1) - $startbyte)); Code:
// ######################################### // ##### Start modified section for watermarks // ##### Changed to prevent filesize header on watermarked images // ######################################### if (!defined('WATERMARKED')) { header('Content-Length: ' . (($lastbyte + 1) - $startbyte)); } // ######################################### // ##### End modified section for watermarks // ######################################### ============================================= STEP 6: Find this line of code: Code:
($hook = vBulletinHook::fetch_hook('attachment_display')) ? eval($hook) : false; Code:
// ######################################### // ##### Start modified section for watermarks // ######################################### if (!$vbulletin->GPC['thumb'] AND defined('WATERMARKED')) { imagejpeg($attachimage); imagedestroy($attachimage); imagedestroy($watermark); } // ######################################### // ##### End modified section for watermarks STEP 7: Find this line of code: Code:
($hook = vBulletinHook::fetch_hook('attachment_complete')) ? eval($hook) : false; Code:
exit; ============================================= STEP 8: Save and upload attachment_watermark.php to your forum root directory. ============================================= STEP 9: Install the product-attach_watermark.xml Product via the vBulletin AdminCP Product Manager. ============================================= STEP 10: Configure the options at AdminCP -> vBulletin Options -> Attachment Watermarks. All fields should be self-explanatory. Show Your Support
|
Comments |
#12
|
||||
|
||||
Let me know. Still need to make sure I don't have any other mistakes in the file editing instructions above. It's working fine on 3 of my sites, and one other site.
|
#13
|
||||
|
||||
Still haven't been able to get it working, have edited completely twice.
GD 2.0.28 Step 5 contains an extra brace at the end of the find string, not that it matters much. |
#14
|
||||
|
||||
Are you using the full PHYSICAL path to the watermark file, and do you have the width/height setting set to something low enough to affect your images, and are your attachments stored in the file system?
Also, if you have viewed the attachment previously, it may be cached. Make sure you clear your browser cache. |
#15
|
||||
|
||||
Ah, I didn't realize they had to be stored as files. I thought I had seen a specification on the request to use the database.
I am sure all is correct, I have written my own watermarking previously, however it is a project outside of vBulletin and uses ImageMagick. |
#16
|
||||
|
||||
Fixed, thanks. It would make a difference, if you replaced the brace too.
|
#17
|
||||
|
||||
Well, I haven't tested it with attachments in the database, because I don't have any sites that use that method. I much prefer to store them in the file system. So, that could be the issue.
|
#18
|
||||
|
||||
If anyone gets this working, please reply so that I know the instructions are correct. Thanks.
|
#19
|
|||
|
|||
Wow, thanks!
|
#20
|
||||
|
||||
I redid the necessary steps, and double checked everything, and it's all done as required, and still no luck, however my attachments are not stored as files. I'm guessing that must be the problem I'm having.
|
#21
|
|||
|
|||
I just downloaded and am praying that it works with database attachments. Anyway, that was very nice of you to share this much needed feature.
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|