السلام عليكم
قبل فتره قمت ببرمجة هاك لقراءة الرسائل الخاصة للنسخة 3.6
بإلحاح من العملاء
وعند تجولي وتعمقي بهذا النظام
اكتشفت أن الرسالة الخاصة ممكن أن تختفي بالكامل عن الأنظار
إذا حذفت من المستقبل و المرسل وذلك بعد مرور ساعة واحدة فقط على ذلك
طبعاً
لجأت لحل لهذه المشكلة
الحل
افتح الملف cleanup2.php
الموجود على المسار vb/includes/cron
ابحث عن
كود PHP:
// Orphaned pmtext records are removed after one hour.
// When we delete PMs we only delete the pm record, leaving
// the pmtext record alone for this script to clean up
$pmtexts = $vbulletin->db->query_read("
SELECT pmtext.pmtextid
FROM " . TABLE_PREFIX . "pmtext AS pmtext
LEFT JOIN " . TABLE_PREFIX . "pm AS pm USING(pmtextid)
WHERE pm.pmid IS NULL
");
if ($vbulletin->db->num_rows($pmtexts))
{
$pmtextids = '0';
while ($pmtext = $vbulletin->db->fetch_array($pmtexts))
{
$pmtextids .= ",$pmtext[pmtextid]";
}
$vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "pmtext WHERE pmtextid IN($pmtextids)");
}
$vbulletin->db->free_result($pmtexts);
وقم بإزالته بالكامل
هنا ينتهي العمل
لكن السؤال
هل حقاً تريد تكديس الرسائل الخاصة وخاصة المقروءة؟
قمت بتوجيه هذا السؤال إلى نفسي
وتوجب حل هذا الخلل
وذلك بإضافة هذه العملية يدوياً
فقط قم بإستيراد هذا المنتج الفرعي pms_maintenance.xml (في المرفقات)
عن طريق الرابط
http://domain/vb/admincp/plugin.php?do=files
وإذهب إلى
الصيانة -> تحديث العدادات
أو على الرابط
http://domain/vb/admincp/diagnostic.php?do=list
بعدها ستجد في أسفل القائمة
(الصورة في المرفق)
حذف الرسائل اليتيمة
خارج الموضوع لكن ذا صلة
لإفراغ كافة الرسائل الخاصة
أزرع هذه الإستعلامات في القاعدة
كود:
UPDATE `user` SET `pmtotal` = '0', `pmunread` = '0' ;
TRUNCATE TABLE `pmtext` ;
TRUNCATE TABLE `pm` ;
TRUNCATE TABLE `pmreceipt` ;
التحذير:
أغلب المشاكل تنشاء بالخاص
ولا تريد أن تمتد المشكلة وتأثر على ثبات منتداك
ويجب عليك يا (عشاق قراءة الرسائل الخاصة )
أن تكون على علم بكلٍ شيء
مع إتخاذ الإجراءات التي تراها مناسبة
موفقين