تحديد المستخدمين في مجموعات متعددة باستخدام AND بدلاً من OR؟

من السهل استخدام الفئات والفئات الفرعية للسماح للمستخدمين بعرضها بناءً على منطق “OR” - أي إذا كان المستخدم في المجموعة X أو المجموعة Y فيمكنه رؤية الفئة أو الفئة الفرعية.
هل من الممكن استخدام منطق “AND” بفعالية، بحيث يجب أن يكون المستخدم في كل من المجموعة X والمجموعة Y لكي يتمكن من رؤية فئة / فئة فرعية؟

حالة الاستخدام لدينا هي أن لدينا ثلاث مستويات من الوصول. من الأسهل التفكير فيها كطلاب السنة الأولى، وطلاب السنة الثانية، وطلاب السنة الثالثة. السنة الأولى يمكنهم فقط رؤية محتوى السنة الأولى، والسنة الثانية يمكنهم رؤية محتوى السنة الأولى والسنة الثانية، والسنة الثالثة يمكنهم رؤية كل المحتوى. هذا يعمل بشكل رائع.
نريد إضافة طبقة أخرى، من خلال مكافأة المستخدمين في مستوى الثقة 3 بالوصول المبكر إلى أحداث وموارد معينة.
حاولت أولاً القيام بذلك عن طريق استخدام أحداث غير مدرجة في مستويات السنة المختلفة، وإرسال رابط إلى تلك الأحداث للمستخدمين في مستوى الثقة 3، ومع ذلك يمكن لأي شخص لديه إشعارات مضبوطة لمراقبة السنة الأولى أو السنة الثانية أو السنة الثالثة رؤية تلك الأحداث على الفور، وليس مقصورًا على مستوى الثقة 3.
طريقة أخرى للقيام بذلك ستكون إنشاء فئة تسمى “مكافآت مستوى الثقة 3”، ووجود فئات فرعية للسنة الأولى والسنة الثانية والسنة الثالثة، ولكن ليس من الممكن تقييد الأذونات بهذه الطريقة؛ نظرًا لأن السنة الأولى والسنة الثانية والسنة الثالثة يجب أن يكون لديها رؤية للفئة، مرة أخرى، يمكن لجميع المستخدمين في تلك المجموعات (بأي مستوى من الثقة) رؤية الفئات الفرعية.

ستكون طريقة بدائية جدًا للقيام بذلك هي تصدير المستخدمين في مستوى الثقة 3، ثم تصدير المستخدمين في (على سبيل المثال) السنة الثانية، ودمجهم في Excel للعثور على التكرارات، ثم استيراد تلك التكرارات إلى مجموعة تسمى شيئًا مثل “مستوى الثقة 3 والسنة 2”. سيعمل هذا، ولكنه سيتطلب قدرًا كبيرًا من العمل اليدوي في كل مرة، وهو إجراء نريد القيام به بانتظام.

أي أفكار حول طرق أخرى لتحقيق نفس النتيجة؟ هل يمكن لمكون إضافي أو برنامج نصي مخصص على الأقل أتمتة عملية التصدير والاستيراد؟

شكرا مقدما.

إعجابَين (2)

إن إنشاء مجموعة جديدة تحتوي على مستخدمي المجموعة المستهدفة الذين لديهم المستوى الاستئماني 3 هو الطريقة الوحيدة التي يمكنني التفكير بها لتحقيق ذلك. لا يمتلك Discourse قاعدة “و” يمكن استخدامها مع أذونات أمان الفئات. لقد ظهر سؤال مشابه عدة مرات حول إنشاء قاعدة فئة تستثني أعضاء مجموعة واحدة أو أكثر.

إذا كانت إضافة مستكشف البيانات متاحة على موقعك، يمكنك استخدام استعلام مستكشف البيانات الذي يُرجع قائمة بجميع مستخدمي المجموعة المستهدفة الذين لديهم المستوى الاستئماني 3. إذا لم تكن تتعامل مع عدد كبير من المستخدمين، فيجب أن تكون قادرًا على نسخ/لصق أسماء المستخدمين التي تم إرجاعها من الاستعلام مباشرة في نموذج إضافة المستخدمين للمجموعة. يبدو أن Discourse يتعامل مع إضافة أسماء المستخدمين الموجودة بالفعل في مجموعة إلى هذا النموذج، لذلك إذا قمت بتشغيل الاستعلام بشكل دوري، فيجب أن تكون قادرًا على الاستمرار في نسخ أسماء المستخدمين التي تم إرجاعها إلى نموذج إضافة المستخدمين للمجموعة. ملاحظة، لست متأكدًا من الحد الأقصى لعدد أسماء المستخدمين التي يمكن لصقها في النموذج. لقد اختبرتها للتو مع 80 مستخدمًا وهذا يعمل دون مشكلة. أيضًا، إذا حاولت لصق قائمة متطابقة تمامًا من المستخدمين في نموذج إضافة المستخدمين، يبدو أن Discourse يُرجع خطأ. يمكن تجاهل الخطأ مع ذلك.

إليك الاستعلام الذي اختبرته. تحتاج إلى توفير اسم المجموعة، على سبيل المثال ‘year_2’، قبل تشغيل الاستعلام.

--[params]
-- string :group_name

SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3

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

سيكون من المثير للاهتمام أن تكون قادرًا على تنفيذ بعض أنواع الإجراءات مباشرة على نتائج استعلام مستكشف البيانات. على سبيل المثال، مع استعلام يُرجع قائمة بأسماء المستخدمين، أضف جميع المستخدمين إلى مجموعة دون الحاجة إلى المرور بخطوة النسخ واللصق.

4 إعجابات

شكرا!
لم ألعب بـ Data Explorer، ولكنه على قائمتي من الأشياء التي يجب استكشافها، ويبدو هذا طريقة معقولة للقيام بما أحاول القيام به. سألقي نظرة…
شكرا أيضا على الاستعلام.

إعجابَين (2)

مرحباً @CC_people،
لست متأكدًا مما إذا كان هذا سيساعدك، ولكن فقط في حال:

3 إعجابات

سيكون الخيار الآخر هو إضافة مخصصة تضيف المستخدم إلى المجموعة الخاصة عند استيفاء الشروط.

إعجابَين (2)

فقط أقدم تقريرًا عما قمنا به هنا، في حال كان مفيدًا للآخرين. باختصار، نقوم بالتصدير إلى Excel، ونجعل Excel يحدد من يناسب معايير “AND” الخاصة بنا، ثم نضيف هؤلاء المستخدمين بشكل جماعي إلى مجموعة.
لقد طلبنا من مساعدنا التقني البحث عن إضافة مخصصة للقيام بنفس الشيء، ولكن يبدو أنها صعبة بعض الشيء، لذلك في الوقت الحالي سنبقى مع Excel.

مزيد من التفاصيل:

  1. تصدير قاعدة بيانات المستخدمين بالكامل.
  2. استيراد إلى Excel. استخدم ISNUMBER و SEARCH لاستخراج المستخدمين في مجموعة معينة في الورقة الأولى إلى ورقة ثانية.
  3. استخدم ISNUMBER و SEARCH مرة أخرى لاستخراج المستخدمين في المجموعة المحددة الثانية إلى ورقة ثالثة.
  4. إضافة هؤلاء المستخدمين بشكل جماعي إلى مجموعاتهم المناسبة.

أتخيل أن هناك طريقة أفضل لتحقيق نفس النتيجة، ومع ذلك، الآن بعد أن تم إعداده، أصبح الأمر مجرد مسألة لصق البيانات المصدرة في كل مرة، ثم استيراد النتائج، دون الحاجة إلى التفكير في الأمر أثناء العملية.
نحن نستخدم هذا النظام لمكافأة مستخدمي tl3 “المنتظمين” بامتيازات إضافية والوصول المبكر إلى الأشياء، وله التأثير المطلوب في تشجيع استخدام أعلى جودة وكمية. لذا، نجاح، على الرغم من أنه غير منظم وغير مؤتمت بعض الشيء. لدينا وظيفة “هذه المجموعة و تلك المجموعة”.

يمكنك استخدام البرنامج النصي الجديد للأتمتة ‘عضوية مجموعة المستخدمين من خلال الشارة’ لربط هذا الأمر ربما؟ خاصة إذا كانت لديك شارات مشغلة مخصصة ممكّنة.

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.