هاك تنبيه الإداريين بالمرفقات المراقبة

Eng Ahmed

ادارة المنتدى
9 مارس 2008
3,318
11
38
www.support-ar.com
الاسم: تنبيه الإداريين بالمرفقات المراقبة - الإصدار: 3.8.100

الوصف: هذا المنتج يسمح بمراسلة الإداريين عند رفع مرفقات جديدة مراقبة.


متوافق مع: جميع إصدارات المنتدى 3.6/3.7/3.8 بكافة فروعها.


متطلبات المنتج:


المزايا والخواص:
  • يعتمد على متغيرات اللغات بشكل كامل.
  • يعمل بشكل تلقائى كلياً.
  • مدعم رسمياً.
  • دقيق فى برمجياً.
  • مبرمج بإحترافية عالية.
  • يتبع نفس آليات المنتدى الإفتراضية وستخدم كافة تقنياته بشكل كامل.
  • يمكن التحكم بخيار "تنبيه الإداريين بالمرفقات المراقبة" لكل قسم بالمنتدى على حدى.
  • يمكن التحكم بخيار "تلقي بريد إلكترونى عند رفع مرفق جديد مراقب" لكل مشرف/مراقب/إدارى على حدى.
  • يمكن الإختيار ما بين خيارين: إما "مراسلة المشرفين" فقط أو "مراسلة المشرفين والمراقبين والإداريين".


خطوات التنصيب:
  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. انتهى :fruits_cherry:.


خيارات التحكم:
  • لوحة تحكم إدارة المنتدى -> خيارات المنتدى -> تنبيه الإداريين بالمرفقات المراقبة
  • لوحة تحكم إدارة المنتدى -> المنتديات والمراقبين -> عرض كافة المراقبين -> من جانب أى مشرف/مراقب انقر على "تعديل التراخيص" -> تلقي بريد إلكترونى عند رفع مرفق جديد مراقب
  • لوحة تحكم إدارة المنتدى -> المنتديات والمراقبين -> التحكم بأقسام المنتدى -> إختيار القسم -> عناوين البريد الإلكترونى للمراسلة عند رفع مرفقات جديدة مراقبة

ساعد بـ:
  • اقتراحاتك لتطوير المنتج.
  • مساهماتك بتحديثات وترقيات المنتج وتطوير بعض المزايا الجديدة.
  • ترجماتك للمنتج للغات أخرى غير متوفرة لتعم الفائدة بقطاع أكبر من المستخدمين (حقوق الترجمة تحفظ لصاحبها).
  • بنشر المنتج. أجل، لك كامل الحرية فى نشر المنتج كما هو أينما تشاء.


إشكاليات مكتشفة:
  • لا شئ حتى الآن.


السجل:
  • v3.8.100 14/01/2009 02:00 PM GMT: أول إصدار عام للنشر.


Screen Shots:
  • متوفرة بالأسفل.


ملاحظات تقنية:
  • الملفات الجديدة: 1
  • الملحقات البرمجية الجديدة: 6
  • العبارات الجديدة: 10
  • القوالب الجديدة: 0
  • تعديلات القوالب: 0
  • إعدادات المنتدى الجديدة: 2
  • إعدادات المنتدى الجديدة: 1
  • الصلاحيات الجديدة لمجموعات الأعضاء: 0
  • الصلاحيات الجديدة للمشرفين: 1
  • الصلاحيات الجديدة للإداريين: 0
  • الإعدادات الجديدة للأقسام: 1
  • الجداول الجديدة لقاعدة البيانات: 0
  • تعديلات قاعدة البيانات: 2
  • المهام المجدولة الجديدة: 0
    -----------------
  • مستوى التنصيب: سهل
  • متوسط وقت التنصيب: 30~50 ثانية
💕
 

المرفقات

  • product-modattachstaffnotify-3.6.100.zip
    75.9 KB · المشاهدات: 128
  • product-modattachstaffnotify-3.7.100.zip
    75.9 KB · المشاهدات: 133
  • product-modattachstaffnotify-3.8.100.zip
    75.9 KB · المشاهدات: 143
  • modattachstaffnotify_admincp_settings.png
    modattachstaffnotify_admincp_settings.png
    12.1 KB · المشاهدات: 153
  • modattachstaffnotify_admincp_foptions.png
    modattachstaffnotify_admincp_foptions.png
    4.7 KB · المشاهدات: 137

UaQ - lover

:: Coder ::
Coder/Designer
26 أغسطس 2008
2,103
5
0
U@E In UaQ
تسلم اخوي

و الله يعطيك الف العافية

اخوك :UaQ - lover