Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.6 > vBulletin 3.6 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
PHPKD - Moderated Attachments Staff Notify Details »»
PHPKD - Moderated Attachments Staff Notify
Version: 3.6.100, by Omranic Omranic is offline
Developer Last Online: Sep 2021 Show Printable Version Email this Page

Category: Moderators Functions - Version: 3.6.x Rating:
Released: 01-13-2009 Last Update: Never Installs: 8
DB Changes Uses Plugins
Re-useable Code Code Changes Additional Files Translations  
No support by the author.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!.............. Sponsored by: PHP KingDom (www.phpkd.net) ..............!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



This version is no longer supported as vB 3.6.x is out-of-date & no longer supported by vBulletin. It's just for historical reasons & for those who still using vB 3.6.x. Please refer to the vB 4.0.x or vB 3.8.x release for the latest stable & supported release.



Please remember to click Mark as Installed if you use this modification.
Support questions from members who have not marked this as installed will be considered low priority.


Note: This product has been requested by kevinh as a custom work. It has been completed & delivered few months ago. Since all of my custom work is licensed under Creative Commons - Attribution-Noncommercial-Share Alike 3.0, I publish it now for the public use, I hope this product will be useful for all of you.


Name: Moderated Attachments Staff Notify - Version: 3.6.100

Description: This product will notify staff when new moderated attachments uploaded to the forums.


Compatible with: All 3.6.x/3.7.x/3.8.x vBulletin versions.


Requirements:

Features:
  • Fully Phrased.
  • Fully Automated.
  • Fully Supported.
  • Accurate Processing.
  • Professionally Coded.
  • Doing all default vBulletin checks & follow all vBulletin default scenarios while proccessing.
  • Can Set "Email Addresses to Notify When there is a Moderated Attachments" per forum.
  • Can Set "Receive Email When there is new Moderated Attachments" per moderator.
  • Can Choose between two options: "Email Moderators" only OR "Email Moderators, Super Moderators and Administrators".


Installation Procedure:
  1. Upload the "bitfield_modattachstaffnotify.xml" file to /includes/xml/.
  2. Do the following file edits:
    Open the file "includes/class_dm_threadpost.php" & search in it for the following code:
    Code:
    	function email_moderators($fields)
    Add Above it directly the following code:
    Code:
    	/**
    	* Fetches the amount of moderated attachments associated with a posthash and user
    	*
    	* @param	string	Post hash
    	* @param	integer	User ID associated with post hash (-1 means current user)
    	*
    	* @return	integer	Number of attachments
    	*/
    	function fetch_mod_attachment_count($postid, $userid = -1)
    	{
    		if ($userid == -1)
    		{
    			$userid = $this->fetch_field('userid', 'post');
    		}
    		$userid = intval($userid);
    
    		$attachcount = $this->dbobject->query_first("
    			SELECT COUNT(*) AS count
    			FROM " . TABLE_PREFIX . "attachment
    			WHERE postid = '$postid'
    				AND userid = $userid
    				AND visible != 1
    		");
    
    		return intval($attachcount['count']);
    	}
    
    	/**
    	* Fetches the moderated attachments associated with a posthash and user
    	*
    	* @param	string	Post hash
    	* @param	integer	User ID associated with post hash (-1 means current user)
    	*
    	* @return	array Moderated attachments IDs
    	*/
    	function fetch_mod_attachment($postid, $userid = -1)
    	{
    		if ($userid == -1)
    		{
    			$userid = $this->fetch_field('userid', 'post');
    		}
    		$userid = intval($userid);
    
    		$attachs = $this->dbobject->query_read_slave("
    			SELECT attachmentid, filename
    			FROM " . TABLE_PREFIX . "attachment
    			WHERE postid = '$postid'
    				AND userid = $userid
    				AND visible != 1
    		");
    
    		$modattach = array();
    		while ($attach = $this->dbobject->fetch_array($attachs))
    		{
    			$modattach[$attach['attachmentid']] = array('attachmentid' => $attach['attachmentid'], 'filename' => $attach['filename'], 'postid' => $attach['postid'], 'dateline' => $attach['dateline']);
    		}
    
    		return $modattach;
    	}
    
    	function attach_email_moderators($fields, $attachcount, $attachs)
    	{
    		if ($this->info['skip_moderator_email'] OR !$this->info['forum'] OR in_coventry($this->fetch_field('userid', 'post'), true))
    		{
    			return;
    		}
    
    		$mod_emails = fetch_moderator_modattach_emails($fields, $this->info['forum']['parentlist'], $newpost_lang);
    
    		if (!empty($mod_emails))
    		{
    			$foruminfo = $this->info['forum'];
    			$foruminfo['title_clean'] = unhtmlspecialchars($foruminfo['title_clean']);
    
    			$threadinfo = fetch_threadinfo($this->fetch_field('threadid'));
    
    			$email = ($this->info['user']['email'] ? $this->info['user']['email'] : $this->registry->userinfo['email']);
    			$browsing_user = $this->registry->userinfo['username'];
    
    			// ugly hack -- should be fixed in the future
    			$this->registry->userinfo['username'] = unhtmlspecialchars($this->info['user']['username'] ? $this->info['user']['username'] : $this->registry->userinfo['username']);
    
    			$post = array_merge($this->existing, $this->post);
    			if (!$post['postid'])
    			{
    				$post['postid'] = $this->thread['firstpostid'];
    			}
    
    			require_once(DIR . '/includes/functions_misc.php');
    
    			foreach ($mod_emails AS $toemail)
    			{
    				if ($toemail != $email)
    				{
    					if ($threadinfo['prefixid'])
    					{
    						// need prefix in correct language
    						$threadinfo['prefix_plain'] = fetch_phrase(
    							"prefix_$threadinfo[prefixid]_title_plain",
    							'global',
    							'',
    							false,
    							true,
    							isset($newpost_lang["$toemail"]) ? $newpost_lang["$toemail"] : 0,
    							false
    						) . ' ';
    					}
    					else
    					{
    						$threadinfo['prefix_plain'] = '';
    					}
    
    					$attachdetails = "";
    					foreach ($attachs as $attach)
    					{
    						$attachdetails .= " * ID: " . $attach['attachmentid'] . ", Name: " . $attach['filename'] . "\n";
    					}
    
    					eval(fetch_email_phrases('moderator_attach', iif(isset($newpost_lang["$toemail"]), $newpost_lang["$toemail"], 0)));
    					vbmail($toemail, $subject, $message);
    				}
    			}
    
    			// back to normal
    			$this->registry->userinfo['username'] = htmlspecialchars_uni($browsing_user);
    		}
    	}
    ** Save the modified file "includes/class_dm_threadpost.php" & re-upload it (allow over-write). **


    Open the file "includes/functions_newpost.php" & search in it for the following code:
    Code:
    /**
    * Fetches the email addresses of moderators to email when there is a new post
    * or new thread in a forum.
    *
    * @param	string|array	A string or array of dbfields to check for email addresses; also doubles as mod perm names
    * @param	string|array	A string (comma-delimited) or array of forum IDs to check
    * @param	array			(By reference) An array of languageids associated with specific email addresses returned
    *
    * @return	array			Array of emails to mail
    */
    function fetch_moderator_newpost_emails($fields, $forums, &$language_info)

    Add Above it directly the following code:
    Code:
    /**
    * Fetches the email addresses of moderators to email when there is a new moderated attachments in a forum.
    *
    * @param	string|array	A string or array of dbfields to check for email addresses; also doubles as mod perm names
    * @param	string|array	A string (comma-delimited) or array of forum IDs to check
    * @param	array			(By reference) An array of languageids associated with specific email addresses returned
    *
    * @return	array			Array of emails to mail
    */
    function fetch_moderator_modattach_emails($fields, $forums, &$language_info)
    {
    	global $vbulletin;
    
    	$language_info = array();
    
    	if (!is_array($fields))
    	{
    		$fields = array($fields);
    	}
    
    	// figure out the fields to select and the permissions to check
    	$field_names = '';
    	$mod_perms = array();
    	foreach ($fields AS $field)
    	{
    		if ($permfield = intval($vbulletin->bf_misc_modattachstaffnotify["$field"]))
    		{
    			$mod_perms[] = "(moderator.modattachstaffnotify & $permfield)";
    		}
    
    		$field_names .= "$field, ' ',";
    	}
    
    	if (sizeof($fields) > 1)
    	{
    		// kill trailing comma
    		$field_names = 'CONCAT(' . substr($field_names, 0, -1) . ')';
    	}
    	else
    	{
    		$field_names = reset($fields);
    	}
    
    	// figure out the forums worth checking
    	if (is_array($forums))
    	{
    		$forums = implode(',', $forums);
    	}
    	if (!$forums)
    	{
    		return array();
    	}
    
    	$modattachemail = '';
    
    	$moderators = $vbulletin->db->query_read_slave("
    		SELECT $field_names AS modattachemail
    		FROM " . TABLE_PREFIX . "forum
    		WHERE forumid IN (" . $vbulletin->db->escape_string($forums) . ")
    	");
    	while ($moderator = $vbulletin->db->fetch_array($moderators))
    	{
    		$modattachemail .= ' ' . trim($moderator['modattachemail']);
    	}
    
    	if (empty($modattachemail) OR $vbulletin->options['modattachstaffnotify_emailto'] == 1)
    	{
    		// get a list of super mod groups
    		$smod_groups = array();
    		foreach ($vbulletin->usergroupcache AS $ugid => $groupinfo)
    		{
    			if ($groupinfo['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator'])
    			{
    				// super mod group
    				$smod_groups[] = $ugid;
    			}
    		}
    	}
    
    	if ($mod_perms)
    	{
    		$mods = $vbulletin->db->query_read_slave("
    			SELECT DISTINCT user.email, user.languageid
    			FROM " . TABLE_PREFIX . "moderator AS moderator
    			LEFT JOIN " . TABLE_PREFIX . "user AS user USING(userid)
    			WHERE
    				(
    					(moderator.forumid IN (" . $vbulletin->db->escape_string($forums) . ") AND moderator.forumid <> -1)
    					" . (!empty($smod_groups) ? "OR (user.usergroupid IN (" . implode(',', $smod_groups) . ") AND moderator.forumid = -1)" : '') . "
    				)
    				AND (" . implode(' OR ', $mod_perms) . ")
    		");
    		while ($mod = $vbulletin->db->fetch_array($mods))
    		{
    			$language_info["$mod[email]"] = $mod['languageid'];
    			$modattachemail .= ' ' . $mod['email'];
    		}
    	}
    
    	$emails = preg_split('#\s+#', trim($modattachemail), -1, PREG_SPLIT_NO_EMPTY);
    	$emails = array_unique($emails);
    
    	return $emails;
    }
    ** Save the modified file "includes/functions_newpost.php" & re-upload it (allow over-write). **

  3. Import product's XML file from AdminCP.
  4. Done .


Control:
  • vBulletin AdminCP -> vBulletin Options -> vBulletin Options -> Attachment Staff Notify
  • vBulletin AdminCP -> Forums & Moderators -> Show All Moderators -> Beside any staff member click [Edit Permissions] -> Receive Email When a Attachment is Moderated
  • vBulletin AdminCP -> Forums & Moderators -> Forum Manager -> Select Forum -> Attachment Staff Notify -> Email Addresses to Notify When there is a Moderated Attachments


License:

Help with:
  • Suggestions to develop this product.
  • Contributing any updates, upgrades and/or any new features.
  • Translations to benefit more users (translation credits goes to their owners).
  • Spreading this product. Yes, you're free to re-distribute this product as it is.


Known Isues:
  • Nothing till now.


History:
  • v3.6.100 14/01/2009 02:00 PM GMT: First initial public release.


Screen Shots:
  • Available down there.


Technical Notes:
  • New Files: 1
  • New Plugins: 6
  • New Phrases: 10
  • New Templates: 0
  • Template changes: 0
  • Code Changes: 2
  • New vBulletin Settings: 1
  • New Usergroup Permissions: 0
  • New Moderator Permissions: 1
  • New Administrator Permissions: 0
  • New Forum Options: 1
  • New DB Tables: 0
  • DB Alterations: 2
  • New Cron Jops: 0
    -----------------
  • Installation Level: Easy
  • Installation Time: 30~50 seconds

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 03-21-2010, 01:13 AM
Omranic's Avatar
Omranic Omranic is offline
 
Join Date: Jan 2005
Location: Egypt
Posts: 536
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

New Release ...
v4.0.100 19/03/2010 08:00 AM UTC: Fully compatible vB 3.8.x & vB 4.0.x release!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:38 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03543 seconds
  • Memory Usage 2,228KB
  • Queries Executed 15 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (4)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (1)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete