Back to vBulletin 3.7 Add-ons

PHPKD - Moderated Attachments Staff Notify
Mod Version: 3.7.100, by Omranic

This modification is in the archives.
vB Version: 3.7.x Rating: (4 votes - 5.00 average) Installs: 10
Released: 14 Jan 2009 Last Update: Never Downloads: 23
Not Supported DB Changes Uses Plugins Code Changes Additional Files Re-usable Code Translations  

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


This version is no longer supported as vB 3.7.x is out-of-date & no longer supported by vBulletin. It's just for historical reasons & for those who still using vB 3.7.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 http://creativecommons.org/licenses/by-nc-sa/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.7.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:
  • You should install the following product first:
    http://www.vbulletin.org/forum/misc.php?do=producthelp&pid=attach_moderation


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:
  • http://creativecommons.org/licenses/by-nc-sa/3.0/


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.7.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

Download

This modification is archived, downloads are still allowed.

File Type: %1$s product-modattachstaffnotify-3.7.100.zip (75.9 KB, 23 downloads)

Screenshots

Click image for larger version
Name:	modattachstaffnotify_admincp_foptions.png
Views:	39
Size:	4.6 KB
ID:	92636   Click image for larger version
Name:	modattachstaffnotify_admincp_moptions.png
Views:	37
Size:	8.0 KB
ID:	92637   Click image for larger version
Name:	modattachstaffnotify_admincp_settings.png
Views:	39
Size:	12.5 KB
ID:	92638  

Similar Mods

Moderators Functions PHPKD - Moderated Attachments Staff Notify vBulletin 3.8 Add-ons
Moderators Functions PHPKD - Moderated Attachments Staff Notify vBulletin 4.x Add-ons
Miscellaneous Hacks Staff Tracker - Tags Posts Made By Staff With "Next Staff Post" Button vBulletin 3.8 Add-ons
Moderators Functions PHPKD - Usergroup Attachment Moderation vBulletin 3.8 Add-ons
Moderators Functions PHPKD - Moderated Attachments Staff Notify vBulletin 3.6 Add-ons

vblts.ru supports vBulletin®, 2022-2024