يمكنني القول على الأقل أن المشكلة لا تحدث فقط في الحالات التي تربط فيها المنشورات الأقدم منشورات أحدث.
لدي مثال واحد اكتشفت فيه المشكلة لأول مرة.
معرف المنشور الأصلي: 842948 يربط بالصفحة 22 من موضوع كان موجودًا بالفعل، وعلى الأقل المنشور الأول (&start=220) له معرف أقل من المنشور الرابط (842880).
بعد الاستيراد، يربط هذا المنشور الأصلي (الذي نُشر قبل أيام فقط من إنشاء نسخة الاحتياط) بموضوع عمره 7 سنوات، حيث يكون للمنشور الأول معرف أصلي هو 1353.
لا أستطيع العثور على أي أدلة تفسر سبب حدوث ذلك، ولا أرى أي أوجه تشابه في الأرقام بأي شكل من الأشكال… كان الرابط الأصلي مجرد رابط URL عادي نُشر وتمت ربطه تلقائيًا بواسطة phpBB. هذه الروابط عمومًا لا تسبب أي مشاكل - فهي تعمل في عدة أماكن أخرى.
بشكل عام، لا أتوقع أن يسير الاستيراد بسلاسة فورية. أنا سعيد جدًا بما تحقق حتى الآن، لكنني أفترض أن هذه المشكلة قد تكون من أصعب المشاكل التي يجب حلها، خاصةً لأنني لا أملك أي فكرة عن إعداد بيئة تطوير/تصحيح الأخطاء مع Discourse بعد. قد أحتاج إلى الخوض في ذلك قريبًا.
مرحباً،
بحسب ما أتذكر، كان مستورد phpbb يملأ تلقائياً اسم المستخدم الكامل في Discourse عن طريق التخمين بناءً على عنوان البريد الإلكتروني للمستخدم. هل هذا صحيح وما زال الأمر كذلك؟ لم أستطع العثور على أي شيء يتعلق بذلك في ملفات المستورد…
هذا شيء لا أود أن يحدث في المنتدى التالي الذي قد أقوم باستيراده.
أيضاً، لدي سؤال آخر.
في منتدى phpbb الحالي، توجد حقول مخصصة للمستخدمين (مثل روابط فيسبوك أو إنستغرام الخاصة بهم). أود استيراد هذه الحقول إلى حقول Discourse المخصصة. أظن أنني سأقوم أولاً بتثبيت وتكوين Discourse بإضافة هذه الحقول المخصصة للمستخدمين، ثم استيراد بيانات phpbb من خلال سكريبت الاستيراد المخصص الخاص بي؟
هل توجد طريقة موثوقة لتقدير حجم البريد الإلكتروني الشهري الذي سيرسله Discourse إلى المستخدمين بعد الترحيل من phpBB؟ مثل تسجيلات الأعضاء الجدد، والإشارات، والردود، والملخصات الأسبوعية، وما إلى ذلك… يرسل phpBB عددًا قليلًا جدًا من الرسائل الإلكترونية افتراضيًا، وأعتقد أننا سنضطر إلى تغيير مزود البريد الإلكتروني الحالي.
لا أملك حاليًا إحصائيات كثيرة من phpBB الفعلي. الموقع موجود منذ عام 2013، ويحتوي على 200,000 رسالة و5,500 عضو. يتم تسجيل أعضاء جدد يوميًا.
مع 20 منشورًا فقط يوميًا، أعتقد أنك ستتعامل على الأرجح مع حوالي 3000 بريد إلكتروني شهريًا على الأكثر، وهو ما يقع ضمن الخطة المجانية من Mailgun بسهولة.
ومع ذلك، ونظرًا لأنك تقوم بالهجرة مع وجود عدد كبير من المستخدمين، فإنني أنصحك بإيقاف رسائل البريد الإلكتروني الملخصة (digest emails) لجميع المستخدمين الذين لم يزوروا المنتدى خلال الشهر أو الشهرين الماضيين (يمكنهم دائمًا تفعيلها بأنفسهم إذا رغبوا في ذلك). يمكنك القيام بذلك عبر استعلام في وحدة تحكم Rails، لكن منذ أن قمت بذلك لمشروعي مرت عام، لذا لا أتذكر الكود الدقيق، آسف.
في رأيي، يجب أن تكون هذه المهمة شيئًا يمكن لنصيحة الاستيراد القيام به نيابةً عنك، ويفضل أن يكون ذلك مع إعداد للتحكم في الفترة الزمنية منذ آخر زيارة لتفعيل رسائل البريد الإلكتروني الملخصة.
في الواقع بعد استيراد phpbb الأول على منتداي الحالي، اضطررت إلى تقليل القيمة الافتراضية؛ لأن مزود البريد الإلكتروني قام بحظر العنوان المستخدم تلقائيًا بسبب جميع رسائل الملخصات المرسلة. تم تصنيفها كرسائل غير مرغوب فيها.
الأمر ليس نفسه تمامًا. أرى أن هناك فرقًا بين إرسال رسائل الملخص الإيميلية إلى شخص ما لعدة أشهر منذ آخر زيارة له بعد أن اشترك فيها - فمجرد عدم زيارته للمنتدى لا يعني أنه لا يقرأ رسائل الملخص - وبين إرسال رسائل الملخص إلى مستخدم لم يشترك فيها أبدًا لأنه سجل في المنتدى السابق، وهو ما قد لا يكون قانونيًا في بعض الولايات القضائية! يمكنك ببساطة إيقاف رسائل الملخص لجميع المستخدمين المنقولين، ويمكنهم تفعيلها لأنفسهم، أو يمكنك فعل ما فعلته أنا وإيقافها للجميع باستثناء أولئك الذين زاروا المنتدى خلال الشهر الماضي والذين رأوا بالتالي إعلانًا يقول “سنقوم بنقل المنتدى قريبًا”. أعتقد أن هذا حل وسط عادل.
كما أن الأمر عملي: فقد اكتسب منتدى phpBB لدينا آلاف حسابات المرسلين غير المرغوب فيهم خلال العام الماضي، وكان إرسال الملخص إليهم أربع مرات في الشهر سيستهلك كل الحد المخصص لدينا من Mailgun المجاني، ثم سيبدأ في التكلفة بشكل كبير. وقد أدى تقليل خيار “تنظيف المستخدمين غير النشطين بعد أيام” في النهاية إلى تنظيف هذه الحسابات.
لست متأكدًا مما إذا كان هذا ينتمي إلى هنا أم إلى موضوع منفصل. لكنه يتعلق بالانتقال من phpBB 3، لذا ها أنا ذا.
لقد نجحت في الانتقال إلى Discourse باستخدام قاعدة بيانات واحدة. ومع ذلك، لدي ثلاث مجتمعات مختلفة ومنفصلة (ثلاث لغات مختلفة، وثلاث تثبيتات مختلفة لـ phpBB)، والتي أود نظريًا دمجها جميعًا في منتدى Discourse واحد كبير ومبهج.
سؤالي هو: كيف يمكنني القيام بذلك؟ ما الذي أحتاج إلى تغييره في سكريبت الاستيراد / قاعدة بيانات phpBB 3 / أي مكان آخر؟
هناك بعض المستخدمين الذين لديهم حسابات على كلا المنتدىين (وربما بعض المستخدمين على جميع الثلاثة)، ولكن لا يوجد تسجيل دخول موحد، لذا فإن لديهم حسابًا مختلفًا في كل منتدى بنفس اسم المستخدم. جميعها تثبيتات وقواعد بيانات مختلفة.
لن يعمل ذلك بشكل مباشر، لأن سكريبت الاستيراد يخزن المعرفات الأصلية في قاعدة بيانات Discourse ولن يستورد البيانات من منتدى إضافي إذا وجد سجلاً يحمل نفس المعرف. ومع ذلك، يمكنني التفكير في طريقتين لحل هذه المشكلة:
الطريقة الصعبة: ستحتاج إلى تعديل سكريبت الاستيراد في عدة أماكن وإضافة بادئة لكل منتدى إلى حقول import_id المخصصة المخزنة للمشاركات والمواضيع والفئات والمستخدمين.
الطريقة الس легية، لكنك ستفقد القدرة على عمليات الاستيراد التدريجية: احذف الحقول المخصصة بعد كل عملية استيراد.
بعد الاختبارات الأولى قبل عيد الميلاد، نعود الآن إلى العمل في مشروع الهجرة. لا يزال أحد أكبر المشاكل هو إعادة كتابة الروابط الفاشلة، وأنا أفكر في أفضل طريقة للتعامل مع ذلك.
@gerhard معرفتي بالبرمجة أساسية جدًا، وليس لدي أي معرفة تقريبًا بـ Rails بشكل عام أو ببنية Discourse بالتفصيل، لذا أرجو أن تتفهم سؤالي: هل توجد أي فرصة للتعامل مع الحالة التي لا يجد فيها المصدّر منشورًا مستوردًا بالمعرّف (ID) المذكور في الرابط، وبدلاً من استبداله برابط خاطئ، نضيف نصًا يخبر المستخدم أو المسؤول ويجعل هذه الروابط المشكلة قابلة للعثور عليها بعد الاستيراد؟
مخاوفي الرئيسية من الطريقة الحالية هي أن هذه الروابط تبدو وكأنها تم استبدالها بنجاح، ولا توجد طريقة للعثور عليها وإصلاحها يدويًا بعد الاستيراد.
شكرًا لك على أي مساعدة يمكنك تقديمها - فهي مقدرة حقًا.
إحدى الطرق للقيام بذلك هي إعادة كتابة السكربت بحيث لا يستبدل تلك الروابط إلا بعد استيراد جميع المنشورات. إذا كنت بحاجة إلى مساعدة ولديك ميزانية، يمكنك التواصل معي أو النشر في Marketplace.
لسوء الحظ، هذا المشروع ذو ميزانية محدودة، وأعتقد أن المشكلة ليست مهمة بما يكفي لإنفاق المال عليها، لكن من الجيد بالتأكيد معرفة أنك متاح للمساعدة في ذلك.
سؤال آخر: لاحظت أن كود BB يُعالج بشكل مختلف عند الاستيراد. على سبيل المثال، يُترك وسم [size] كنص بينما يبدو أن وسم [color] يُحذف تمامًا. كنت أرغب في إعادة استخدام اللون ووجدت أن هناك إضافة لـ Discourse لذلك، لكنني لاحظت بعد ذلك أنه يُحذف أثناء الاستيراد. يشير المنشور الأول إلى أنه يمكن استيراد أكواد BB، لكنني لم أجد أي إعداد يتحكم في أي منها يمكن استيراده أو لا.
إذا كانت هناك فرصة، فأتفضّل إزالة وسوم الحجم بدلاً من ذلك والاحتفاظ باللون. هل هناك شيء أفتقده في كيفية معالجة هذا الأمر وكيف يمكن تغييره على الأرجح؟
أحاول فعل ذلك، لكنني أتعثر في التعليمات: أي ملف إعدادات تقصد هنا؟ ومتى أفعل ذلك؟ قبل الاستيراد أم بعده؟
شكرًا مقدّمًا!
تعديل: إذن أعتقد أنك تقصد ملفات إعدادات الرموز التعبيرية في لوحة تحكم المسؤول (Admin CP). هل هناك طريقة للقيام بذلك عن طريق استيراد ملف نصي أو شيء مشابه؟ لدي حوالي 100 رمز تعبيري مخصص، وأفضل لو أمكن نسخ هذا الربط إلى Discourse، هل هذا ممكن؟ (إذا أمكن نسخ ملف smily.pak من phpBB إلى إعدادات Discourse بطريقة ما؟)
أعتقد أن phpBB يتعامل مع المواضيع المقلمة بشكل مختلف عن المواضيع المحذوفة العادية. في هذه الحالة، لا يتم دعم ذلك حاليًا. ستحتاج إلى معرفة كيفية تحديد phpBB للمواضيع المقلمة كمحذوفة وتعديل سكريبت الاستيراد.
صحيح جداً! لقد مرّ وقت طويل منذ أن قمت بالتحويل الأول. لقد نسيت ذلك تماماً، شكراً لك!
بشأن المواضيع المقصوصة، نعم، اعتقدت أنها شيء من هذا القبيل. إنها ليست مشكلة كبيرة بالنسبة لمنتداي، لكنها كانت مفاجئة، وربما تكون تنبيهاً للآخرين بأن هذا قد يحدث.