نحن نستخدم Discourse لمنظمة تطوعية قائمة على الأعضاء، وأود معرفة ما إذا كانت هناك طريقة سريعة للحصول على تقرير عن عضوية المجموعات.
لدينا حاليًا حوالي 60 مستخدمًا و20 مجموعة، حيث نستخدم Discourse لمساعدتنا في إدارة منظمتنا، خاصة في الحالات التي تظهر فيها قصور البريد الإلكتروني في مناقشات المجموعات.
أجد أن بعض جوانب التفاعل مع صلاحيات Discourse مقيدة بعض الشيء أحيانًا. أنا قادم من خلفية إدارة الأنظمة في مجال تقنية المعلومات، لذا فأنا معتاد على القدرة على تداخل المجموعات في أنظمة مثل Active Directory، لكنني آمل ألا أكون أقوم بإسقاط الكثير من هذا المفهوم على Discourse، لأنها بالتأكيد أشياء مختلفة جدًا.
آمل أن أتمكن بسهولة من إنتاج تقرير يحتوي على قائمة بأعضاء كل مجموعة لمساعدتي في تنظيم فئاتنا وتقليل الوقت المستغرق.
أعلم أن هذا ممكن فقط إذا حافظت على تحديث عضوية المجموعات، لكن هذه أفضل طريقة أعرفها.
أفترض أن تداخل المجموعات غير ممكن؟
ما هو المنطق وراء وجود الآلية التي تسبب هذا الخطأ؟
أنا أفهم أنك لا ترغب في أن تكون الفئة الفرعية قابلة للوصول عندما لا تكون الفئة الأصلية قابلة للوصول (هذا مقبول في محرك شبكة مشترك، لكنه لا معنى له في Discourse).
لكن هل يمكنك تغييره إلى تنبيه يفيد بأن المجموعة المعنية غير قابلة للوصول من قبل الفئة الأصلية، وأنه عند المتابعة مع هذا التغيير، سيتم إضافتها مع الحد الأدنى من الصلاحيات المطلوبة (أو مستوى قابل للاختيار)؟
إذا كانت هذه المعلومات هي ما تحتاجه، فإن هذه الاستعلامات يمكن أن تساعدك.
قائمة أسماء المجموعات
SELECT
g.name group_name,
user_count
FROM groups g
ORDER BY g.name ASC
قائمة المجموعات والأعضاء
-- [params]
-- string :group_name
SELECT
g.name group_name,
u.username user_name,
gu.owner group_owner
FROM group_users gu
LEFT JOIN groups g ON gu.group_id = g.id
LEFT JOIN users u ON gu.user_id = u.id
WHERE user_id > 0
AND g.name LIKE '%'||:group_name||'%'
ORDER BY g.name ASC, gu.owner DESC
قائمة جميع المجموعات والأعضاء
SELECT
g.name group_name,
u.username user_name,
gu.owner group_owner
FROM group_users gu
LEFT JOIN groups g ON gu.group_id = g.id
LEFT JOIN users u ON gu.user_id = u.id
WHERE user_id > 0
ORDER BY g.name ASC, gu.owner DESC