شرح سكربت vCharset Converter
تقدمة ميلاد @ الملتقى الطبي السوري
الوصف:
تقوم هذه السكربت بتحويل قواعد بيانات منتديات vBulletin من وإلى أي من الترميزات المدعومة من قبل iconv، ولديه القدرة أيضاً على تحويل جداول الهاكات الّمركّبة على المنتدى.
تحذير:
هذا إصدار تجريبي، أقدّمه كما هو بدون أي ضمانات، جرّبه باستخدام نسخة عن قاعدة بيانات منتداك وليس باستخدام نسخة منتداك الحية، وطالما أنّ هذا المنتج تجريبي (بيتا) فاستخدمه لغرض التجريب فقط.
ما هذا المنتج؟
كان ترميز منتداي windows-1256، ولذلك لم أكن قادراً على الاستفادة من مزايا الـ AJAX (كالرد السريع والتحرير السريع) دون مشاكل في الترميز، ولذلك قرّرت أن أحوّل الترميز وبنيت هذه السكربت.
لقد قمت بتحويل منتداي منذ النسخة beta 2 من هذا المنتج.
ولكن إيّاك ثمّ إيّاك أن تحوّل نسختك 3.6 قبل أن تجرّب هذه الهاك مرّاتٍ عديدة على نسخة من قاعدة بياناتك (أي ليس على موقعك الحي)، وأن تعطيني رأيك وخبراتك المتكرّرة مع الهاك والأخطاء الّتي واجهتها.
هذا المنتج لن يتطور دون تجريبك له وإعطاء خبرتك حوله، لأنّني أطوّره لأجلك، فلقد انتهيت منه.
المتطلبات:
- نسخة منتدى vBulletin 3.6.4 أو أحدث.
- iconv PHP extension يجب أن يكون منصّباً على سيرفرك أو أن تكون نسخة الـ PHP 5 أو أعلى، (إذا لم تعرف ما هذا فهو امتداد من امتدادات الـ php المتضمنة للـ GD والـ imap والـ openssl إلخ)
الترميزات المدعومة
انظر هنا: http://www.gnu.org/software/libiconv/#introduction وهي بالطبع تتضمن الترميز العربي windows-1256
التنصيب:
- حمّل الملفات الموجودة في مجلد upload إلى أماكنها المناسبة على سيرفرك.
- استورد المنتج product-charset_converter.xml من لوحة التحكم ولا تنسى أن تختار (نعم) لترقيته إذا كنت قد نصبته من الأول.
- حدّث صفحة لوحة التحكم ليظهر ضمن القوائم في لوحة التحكم باسم vCharset Converter
طريقة الاستعمال:
- اذهب إلى vCharset Converter->Settings وعيّن الترميز المصدر Source Charset Encoding والترميز الهدف Destination Charset Encoding واضغط حفظ. (إذا كنت ستحول من windows-1256 إلى utf-8) فهذا الإعداد جاهز.
- اذهب إلى vBulletin Options -> Censorship Options -> Blank Character Stripper فرّغ القيم هنا واحفظ.
- أغلق منتداك.
- خذ نسخة احتياطية عن قاعدة البيانات.
- أضف لغة جديدة وادعُها مثلاً English وعيّن ترميزها بنفس الترميز الهدف الذي سنحول إليه وهو هنا utf-8
- عيّن اللغة الجديدة كلغة افتراضية لك كعضو profile.php?do=editoptions، لكي تستطيع التعامل مع لوحة التحكم أثناء عملية التحويل حيث لن تتمكن من فهم شيء من الكلام العربي حتى تمام التحويل.
- غيّر ترميز كل اللغات الموجودة قديماً في منتداك إلى الترميز الهدف وهو هنا utf-8
- إذهب إلى إدارة الجداول vCharset Converter -> Manage tables.
إذا واجهتك الرسالة التالية:
فهذا يعني أن iconv غير مفعّل لديك وعليك أن تطلب من مدير السيرفر تفعيله أو تنصيبه.كود PHP:
The iconv PHP module is not presented, please contact your system administrator to enable/install it.
- يقوم هذا المنتج بالتعرف على جداول المنتدى الافتراضية ويشير إلى حالتها أيضاً، بالطبع سنحوّل الجداول المضافة من قبل الهاكات المتنوعة الأُخرى إذا كانت تحتاج إلى ذلك.
اسأل في هذا الموضوع عن المنتجات الّتي لديك أو اكتب معلوماتها هنا إذا كنت تعرفها.- حرّر الجدول userfield وأضف إليه أي قيم للحقول المخصصة الموجودة في موقعك إليه (هناك أربع حقول موجودة بشكل افتراضي وهي field1, field2, field3 and field4 ويمكنك إضافة المزيد، تحقّق منها في User Profile Fields -> User Profile Field Manager)
- اذهب إلى vCharset Converter -> vCharset Converter
- سوف تشاهد قائمة منسدلة، اختر منها الجدول الذي تريد أن تحوّله وحدّد عدد السجلات الّتي سيتم تحويلها في الدورة الواحدة (1000 بشكل افتراضي) واضغط على submit إرسال.
- أعد الكرة مع كل جدول في القائمة المنسدلة.
- عندما ينتهي تحويل جدول ما لن يظهر مرة ثانية في القائمة المنسدلة.
- اذهب إلى الإصلاحات -> تحديث العدادت Maintenance -> Update Counters وقم بإعادة بناء كاش المشاركات Rebuild Post Cache (لن ترى هذا الخيار إذا لم تكن تستعمل كاش المشاركات) وأيضاً تفريغ كاش التواقيع Empty Signature Cache
- اختبر منتداك.
- جرّب البحث عن كلمات غير إنجليزية، إذا لم تحصل على النتائج المتوقعة أو لم تحصل على أي نتائج فعندها اقرأ قسم "مشاكل البحث".
- افتح منتداك.
- عند انتهائك أخبرني عن انطباعك وأفكارك والمشاكل التّي واجهتك.
ملاحظات حول إدارة الجداول:
تظهر الجداول في صفحة الإدارة بعد حالات وهي:
1- الجدول جاهز للتحويل.
2- الجدول محوّل. وهنا لا يمكنك القيام بأي عمل للجدول.
3- الجدول لا يحتاج إلى أية عملية وهنا أيضاً لا يوجد خيارات.
4- الجدول غير معروف أي أنه ليس من جداول vBulletin الافتراضية. وهنا يمكنك جعله على أنه لا يحتاج إلى تعديل. أو إضافته إلى الجداول الّتي بحاجة إلى تحويل وهنا نكتب العمود المسؤول عن الـ primaryid في مكانه المخصص، ونكتب أسماء أعمدة الجدول الّتي بحاجة إلى تحويل عادةً تكون من النوع text أو varchar.
مع الوقت سوف يصبح لدينا قائمة بجداول الهاكات وكيفية التعامل مع كل جدول، وهذا يتطلب تعاون منّا جميعاً لذلك اسأل عن جداول هاكاتك. وإذا كنت تعرف اكتبه هنا .. الهاك يتطلب تعاون جماعي وإلا لن يتمكن أحد من الاستفادة منه.
مشاكل البحث
ما هي المشكلة؟
بعد التحويل ربّما لا تحصل على النتائج المتوقعة بالبحث، لقد واجهت هذه المشكلة بعد التحويل إلى utf-8
ما هي ظروفك وقتها؟
Mysql 4.1.x وبحث معتمد على Full-Text وكنت قد حوّلت إلى utf-8
ما هو السبب؟
هناك بعض القيود للبحث Full-Text المعتمد على MySQL وهو يقول: "all columns in a FULLTEXT index must use the same character set and collation." يجب أن تستخدم كل الأعمدة في فهرس FULLTEXT نفس مجموعة الترميز والـ collation
الحل؟
إذا كنت تستخدم البحث Full-Text مع MySQL 4.1 أو أعلى وحوّلت إلى utf-8 عندها نفذ الاستعلامات التالية (بعد تحويل جدولي post & thraed)
لا تنسَ أن تضيف لاحقة الجدول لديك إذا كانت لديك لاحقة (انظر config.php) ونفذ الاستعلامات من phpmyadmin مثلاً.كود:ALTER TABLE post MODIFY pagetext mediumtext COLLATE utf8_unicode_ci ALTER TABLE post MODIFY title VARCHAR(250) COLLATE utf8_unicode_ci ALTER TABLE thread MODIFY title VARCHAR(250) COLLATE utf8_unicode_ci
- إذا كنت تستعمل محرك البحث المبيّت في vBulletin (مع اي نسخة من MySQL) فضع بعين الاعتبار أن تعيد بناء فهرس البحث لديك. Maintenance -> Update Counters -> Rebuild Search Index
إصلاح -> تحديث العدادات -> إعادة بناء فهرس البحث.
يُمكنك أن تقرأ هذا الموضوع أيضاً http://www.vbulletin.com/forum/showthread.php?t=191315
مشاكل البريد الإلكتروني
بعد التحويل، اشتكى الأعضاء من أنهم لا يتمكنون من قراءة رسائل التنبيه بالبريد الإلكتروني، تُرسل الإيميلات بترميز utf-8 والمشكلة هنا بشركات الإيميل حيث تكون صفحتهم بترميز iso مثلاً وترميز الرسالة utf-8 فلا تظهر الرسالة كما يجب.
لسوء الحظ لا يعرف كل المستخدمين كيف يغيرون ترميز الصفحات، ولذلك من الأفضل أن تعلمهم، وهذا الحل الوحيد حالياً.
لقد تأكدت من وجود المشكلة في الـ hotmail وأظن أنها غير موجودة في windows live mail
لم أتأكد من وجودها في yahoo mail
المشكلة غير موجودة في gmail تأكدت بنفسي أيضاً.
هذه المشكلة ستزول مع الوقت عند قيام شركات البريد الإلكتروني بالدعم الكامل لـ utf-8 فالمسألة مسألة وقت لا أكثر.
مثال عن تعليم الأعضاء كيفية تغيير الترميز في البريد الإلكتروني http://www.syrianmeds.net/forum/showthread.php?t=3616
المشاكل المعروفة
- بعد التحويل تختفي ألقاب الأعضاء users titles
منتديات قامت بالتحويل باستخدام هذه السكربت: (اطلب مني إضافة منتداك)
- http://www.syrianmeds.net/forum/ من windows-1256 إلى utf-8
أخيراً
هل يستحق الأمر أن أخوض الانتقال إلى utf-8؟
نعم يستحق .. العالم كله يتجه نحو utf-8 وسيأتي يوم سيتوقف فيه استعمال باقي الترميزات وستصبح دقة قديمة ... أنا برأيي أن نواكب الموجة التقنية أوّل بأوّل ... فضلاً عن مزايا الأجاكس الّتي ستستعملها وأنت مرتاح .. يُقال أنّ محركات البحث وخاصةً google يحب utf-8 ويقال أن ترميز utf-8 أفضل لـ google adsense ولا أعرف مدى مصداقية هذه المعلومات حول جووجل.
أيضاً يمكنك أن تطلب مني تحويل قاعدة بيانات منتداك مقابل سعر محدّد، يعتمد على حجم قاعدة بياناتك.
بالتوفيق للجميع
ميلاد