~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!  :       (www.phpkd.net) !
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


:
~~~~~
   *       kevinh     .        .             Creative Commons - Attribution-Noncommercial-Share Alike 3.0,        .


:
~~~~
   *    


:
~~~~~
   * 3.6.100


:
~~~~~
   *          .


 :
~~~~~
   *    3.6/3.7/3.8  .


 :
~~~~~~~~~~~~~~~~~
   *      :
       
     http://www.vbulletin.org/forum/misc.php?do=producthelp&pid=attach_moderation


 :
~~~~~~~~~~
   *      .
   *    .
   *  .
   *   .
   *   .
   *          .
   *    "   "     .
   *    "       "  //  .
   *     :  " "   "   ".



 :
~~~~~~~~~
   1.    "bitfield_modattachstaffnotify.xml"   "/includes/xml/".
   2.    :
         "includes/class_dm_threadpost.php"     :
      ---------------------------------------------------------------------------------
	function email_moderators($fields)
      ---------------------------------------------------------------------------------


          :
      ---------------------------------------------------------------------------------
	/**
	* 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);
		}
	}
      ---------------------------------------------------------------------------------
      **     "includes/class_dm_threadpost.php"        . **



         "includes/functions_newpost.php"     :
      ---------------------------------------------------------------------------------
/**
* 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)
      ---------------------------------------------------------------------------------


          :
      ---------------------------------------------------------------------------------
/**
* 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;
}
      ---------------------------------------------------------------------------------
      **     "includes/functions_newpost.php"        . **


   3.         .
   4.  :).



:
~~~~~
   *     ->   ->    
   *     ->   ->    ->    /   " " ->        
   *     ->   ->    ->   ->         


:
~~~~~~
   * Creative Commons - Attribution-Noncommercial-Share Alike 3.0
     http://creativecommons.org/licenses/by-nc-sa/3.0/


 :
~~~~~
   *   .
   *        .
   *             (   ).
   *  .           .


 :
~~~~~~~~~
   *    .


:
~~~~~
   * v3.6.100 14/01/2009 02:00 PM GMT:    .


 :
~~~~~~~~~~
   *    screenshots.


 :
~~~~~~~~
   *  : 1
   *   : 6
   *  : 10
   *  : 0
   *  : 0
   *  : 2
   *   : 1
   *    : 0
   *   : 1
   *   : 0
   *   : 1
   *     : 0
   *   : 2
   *   : 0
     -----------------
   *  : 
   *   : 30~50 


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!  :       (www.phpkd.net) !
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~