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:- Upload the "bitfield_modattachstaffnotify.xml" file to /includes/xml/.
- 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). **
- Import product's XML file from AdminCP.
- 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:
History:- v3.7.100 14/01/2009 02:00 PM GMT: First initial public release.
Screen Shots:
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.
product-modattachstaffnotify-3.7.100.zip (75.9 KB, 23 downloads)
Screenshots
|