Extension:مرشح الإساءة

This page is a translated version of the page Extension:AbuseFilter and the translation is 97% complete.
هذا الامتداد يأتي مع إصدار ميدياويكي 1.38 وما بعده. لذا لن تحتاج لتنزيل هذه السمة مرة أخرى. إلا أنك سوف تحتاج لاتباع التعليمات الأخرى المقدمة.
الدليل المرجعي لامتدادات ميدياويكي
AbuseFilter
حالة الإصدار مستقر
تنفيذ نشاط المستخدم , صفحة خاصة , واجهة برمجة التطبيقات
بيان يسمح بوضع قيود معينة "معتمدة على السلوك" على نشاط wiki
المؤلف/المؤلفون
سياسة التوافق تصدر اللقطات البرمجية مع ميدياويكي. الإصدار الرئيسي لا يتوافق مع الإصدارات السابقة.
MediaWiki >= 1.41.0
تغييرات قاعدة البيانات نعم
Composer mediawiki/abuse-filter
جداول abuse_filter
abuse_filter_action
abuse_filter_history
abuse_filter_log
ترخيص رخصة جنو العمومية 2.0 أو ما بعدها
التنزيل
  • $wgAbuseFilterActorTableSchemaMigrationStage
  • $wgAbuseFilterConditionLimit
  • $wgAbuseFilterRangeBlockSize
  • $wgAbuseFilterAnonBlockDuration
  • $wgAbuseFilterLogIPMaxAge
  • $wgAbuseFilterCentralDB
  • $wgAbuseFilterDefaultWarningMessage
  • $wgAbuseFilterEmergencyDisableAge
  • $wgAbuseFilterActionRestrictions
  • $wgAbuseFilterActions
  • $wgAbuseFilterLogIP
  • $wgAbuseFilterPrivateDetailsForceReason
  • $wgAbuseFilterEmergencyDisableCount
  • $wgAbuseFilterLogPrivateDetailsAccess
  • $wgAbuseFilterSlowFilterRuntimeLimit
  • $wgAbuseFilterEmergencyDisableThreshold
  • $wgAbuseFilterLocallyDisabledGlobalActions
  • $wgAbuseFilterBlockDuration
  • $wgAbuseFilterDefaultDisallowMessage
  • $wgAbuseFilterValidGroups
  • $wgAbuseFilterNotificationsPrivate
  • $wgAbuseFilterBlockAutopromoteDuration
  • $wgAbuseFilterIsCentral
  • $wgAbuseFilterNotifications
تنزيلات ربع سنوية 193 (Ranked 59th)
استخدام مواقع الويكي العمومية 2,939 (Ranked 186th)
ترجم الامتداد AbuseFilter لو كان متوفرا على translatewiki.net
المسائل المهام المفتوحة · الإبلاغ عن عطل تقني

AbuseFilter

2020 Coolest Tool
Award Winner

in the category
Quality


يسمح ملحق "AbuseFilter" للمستخدمين المتميزين بتعيين إجراءات معينة يتم اتخاذها عندما تتطابق إجراءات المستخدمين -مثل عمليات التحرير- مع معايير معينة.

على سبيل المثال، يمكن إنشاء "مُرشِّح" لمنع المستخدمين المجهولين من إضافة روابط خارجية، أو لحظر مستخدم يزيل أكثر من 2000 حرف.

التثبيت

  • نزّل الملف/الملفات وضعها في دليل يحمل اسم ‎AbuseFilter داخل مجلد ‎extensions/‎ لديك.
  • حينما تثبته مستخدما غت شغّل Composer كي تثبت اعتمادات بي إتش بي، وذلك عن طريق إصدار composer install --no-dev في مجلد الامتداد. (طالع مهمة T173141 لتطلع على التعقيدات المحتملة.)
  • أضف الكود التالي في الجزء الأسفل من ملف LocalSettings.php :
    wfLoadExtension( 'AbuseFilter' );
    
  • شغل نص التحديث البرمجي الذي سوف ينشئ تلقائيا جداول قاعدة البيانات الضرورية التي يحتاج إليها الامتداد.
  • أعدّ الملحق حسب ما هو مطلوب.
  •   تم التنفيذ – اذهب إلى Special:Version على موقع الويكي لديك كي تتحقق من أن الامتداد قد ثبت بنجاح.


عند التثبيت من Git ، يرجى ملاحظة أن هذا الامتداد يتطلب دولارين.

لذلك ، بعد التثبيت من Git ، قم بتغيير الدليل الذي يحتوي على الامتداد على سبيل المثال $ 1 وتشغيل $ 2 ، أو عند التحديث: $ 3.

بدلاً من ذلك ، يُفضل إضافة السطر $ 1 إلى ملف "$ 2" في الدليل الجذر لموقع wiki الخاص بك مثل على سبيل المثال

{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/AbuseFilter/composer.json"
			]
		}
	}
}

الإعداد

مجموعات المستخدمين

بمجرد تثبيت الملحق، سيتعين عليك إعداد صلاحيات المستخدم في "LocalSettings.php".

الصلاحية الوصف Notes User groups that have this right by default
abusefilter-modify إنشاء أو تعديل عوامل تصفية إساءة الاستخدام Requires the abusefilter-view right sysop
abusefilter-view عرض مرشحات الإساءة *
abusefilter-log عرض سجل الإساءة *
abusefilter-log-detail عرض مدخلات سجل الإساءة المفصلة Requires the abusefilter-log right sysop
abusefilter-privatedetails عرض البيانات السرية في سجل الإساءة Prior to 1.34 this right was named abusefilter-private - Requires the abusefilter-log-detail right
abusefilter-modify-restricted عدل مرشحات الإساءة مع الأفعال المحظورة Requires the abusefilter-modify right sysop
abusefilter-modify-global إنشاء أو تعديل مرشحات الإساءة العالمية Requires the abusefilter-modify right
abusefilter-revert استرجع كل التعديلات لمرشح إساءة محدد. sysop
abusefilter-view-private اعرض مرشحات الإساءة المعلّمة كخاصة Requires the abusefilter-view right (not needed if the group already has the abusefilter-modify right) sysop
abusefilter-log-private عرض إدخالات السجل لمرشحات الإساءة المعلمة كخاصة Requires the abusefilter-log right (not needed if the group already has the abusefilter-modify or abusefilter-view-private rights) sysop
abusefilter-hide-log إخفاء إدخالات سجل الإساءة Requires the abusefilter-log right suppress
abusefilter-hidden-log عرض مدخلات سجل الإساءة المخفية Requires the abusefilter-log right suppress
abusefilter-privatedetails-log عرض سجل دخول التفاصيل الخاصة لمرشح الإساءة Prior to 1.34 this right was named abusefilter-private-log

على سبيل المثال، سيسمح النموذج التالي للإداريين sysops بالقيام بكل ما يريدونه باستخدام "مُرَشِّح" AbuseFilter، ويسمح للجميع بعرض السجل ومشاهدة إعدادات المُرشِّح العامة:

$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
$wgGroupPermissions['*']['abusefilter-view'] = true;
$wgGroupPermissions['*']['abusefilter-log'] = true;
$wgGroupPermissions['sysop']['abusefilter-privatedetails'] = true;
$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
لا يمكن عرض المرشحات التي تم تمييزها على أنها خاصة private إلا من خلال المستخدمين الذين لديهم إذن تعديل مرشح الإساءة أو إذن abusefilter-view-private.

معاملات

اسم المتغير القيمة الافتراضية الوصف
$wgAbuseFilterActions
[
    'throttle' => true,
    'warn' => true,
    'disallow' => true,
    'blockautopromote' => true,
    'block' => true,
    'rangeblock' => false,
    'degroup' => false,
    'tag' => true
]
الإجراءات التي يمكن لمرشح الإساءة القيام بها. عند إضافة إجراء جديد، تحقق مما إذا كان مقيدًا في $wgAbuseFilterActionRestrictions ، وإذا كان كذلك، فلا تنس إضافة صلاحية abusefilter-modify-restricted إلى مجموعات المستخدمين المناسبة.
$wgAbuseFilterConditionLimit
1000
أقصى عدد من "الشروط" التي يمكن استخدامها في كل مرة يعمل فيها المرشح مقابل كل تغيير. (تتطلب المرشحات الأكثر تعقيدًا المزيد من "الشروط").
$wgAbuseFilterValidGroups
[
    'default'
]
قائمة "المجموعات" التي يمكن تقسيم المرشحات إليها. افتراضيا هناك مجموعة واحدة فقط. قد تضيف ملحقات أخرى مجموعات أخرى.
$wgAbuseFilterEmergencyDisableThreshold
[
    'default' => 0.05
]
قم بتعطيل عامل تصفية إذا كان يطابق أكثر من تعديلين ، مما يشكل أكثر من 5٪ من الإجراءات التي تم التحقق منها مقابل مجموعة عامل التصفية في الفترة "المرصودة" (يوم واحد على الأكثر) ، ما لم يتم تغيير الفلتر في آخر 86400 ثانية (يوم واحد). راجع الخنق في حالات الطوارئ.
$wgAbuseFilterEmergencyDisableCount
[
    'default' => 2
]
$wgAbuseFilterEmergencyDisableAge
[
    'default' => 86400
]
$wgAbuseFilterParserClass
'AbuseFilterParser'
اسم فئة المحلل اللغوي AbuseFilter.
$wgAbuseFilterActionRestrictions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => true,
	"block" => true,
	"rangeblock" => true,
	"degroup" => true,
	"tag" => false
]
يجب أن يكون لدى المستخدمين صلاحية المستخدم "abusefilter-edit-limited" وكذلك "abusefilter-edit" من أجل إنشاء أو تعديل عوامل التصفية التي تنفذ هذه الإجراءات.
$wgAbuseFilterNotifications
false
يسمح بتكوين الامتداد لإرسال إشعارات النتائج إلى Special: RecentChanges أو UDP. الخيارات المتاحة: rc, udp, rcandudp
For sending changes to abuse filters to Special:RecentChanges, use unset($wgLogRestrictions['abusefilter']);.
$wgAbuseFilterNotificationsPrivate
false
تمكين الإخطارات لفلاتر خاصة.
$wgAbuseFilterCentralDB
null
اسم قاعدة البيانات حيث سيتم تخزين عوامل تصفية إساءة الاستخدام العالمية (مدعومة فقط في أحدث إصدار مطور). يتطلب تثبيت CentralAuth وإلا فسوف تنكسر المرشحات العامة على wikifarm.
$wgAbuseFilterIsCentral
false
اضبط هذا المتغير على "true" للويكي حيث يتم تخزين AbuseFilters العام فيه (مدعوم فقط في أحدث إصدار ، تطوير). يتطلب تثبيت CentralAuth وإلا فسوف تنكسر المرشحات العامة على wikifarm.
$wgAbuseFilterLocallyDisabledGlobalActions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => false,
	"block" => false,
	"rangeblock" => false,
	"degroup" => false,
	"tag" => false
]
عدم السماح لمرشحات مركزية باتخاذ الإجراءات التي تم تعيينها على أنها صحيحة في هذا المتغير.
$wgAbuseFilterBlockDuration
'indefinite'
مدة الحظر التي تم إجراؤها بواسطة AbuseFilter.
اعتبارًا من 1.31.0-wmf.25 ، يمكن تحديد فترات الحظر لكل مرشح واحد وسوف يتجاوز هذا المتغير. يتم استخدام هذا المتغير فقط عند تمكين الحظر من أجل التحديد المسبق لمدة افتراضية.
$wgAbuseFilterAnonBlockDuration
null
مدة الحظر التي تم إجراؤها بواسطة AbuseFilter على المستخدمين الذين لم يقوموا بتسجيل الدخول. سيتم استخدام قيمة $ wgAbuseFilterBlockDuration إذا لم يتم تعيين هذا.
اعتبارًا من 1.31.0-wmf.25 ، يمكن تحديد فترات حظر لكل مرشح واحد وسوف يتجاوز هذا المتغير. يتم استخدام هذا المتغير فقط عند تمكين الحظر من أجل التحديد المسبق لمدة افتراضية.
$wgAbuseFilterBlockAutopromoteDuration
5
المدة ، بالأيام ، التي يتم فيها حظر الحركة التلقائية للمستخدمين بواسطة المرشحات.
$wgAbuseFilterCustomActionsHandlers
[]
وظائف رد الاتصال للإجراءات المخصصة. (متقادم في 1.36) استخدم الخطاف $ 1 بدلاً من ذلك.
$wgAbuseFilterDefaultWarningMessage
[
    'default' => 'abusefilter-warning'
]
رسائل التحذير الافتراضية ، لكل مجموعة تصفية
$wgAbuseFilterDefaultDisallowMessage
[
    'default' => 'abusefilter-disallowed'
]
عدم السماح تلقائيًا للرسائل ، لكل مجموعة تصفية
$wgAbuseFilterLogIPMaxAge
3 * 30 * 24 * 3600
العمر المستخدم كقطع عند مسح بيانات سجل IP القديم. الافتراضي لمدة 3 أشهر. المستخدمة من قبل purgeOldLogIPData.php البرنامج النصي للصيانة.
$wgAbuseFilterProfileActionsCap
10000
عدد الإجراءات التي تحدد وقت إعادة تعيين إحصائيات التوصيف.
$wgAbuseFilterLogPrivateDetailsAccess
false
ما إذا كان الوصول إلى المعلومات الخاصة من إدخال سجل عامل التصفية يتم تسجيله أم لا.
$wgAbuseFilterPrivateDetailsForceReason
false
ما إذا كان المستخدمون مجبرون على تقديم سبب للوصول إلى المعلومات الخاصة من إدخال سجل عامل التصفية.
$wgAbuseFilterSlowFilterRuntimeLimit
500
وقت التشغيل بالمللي ثانية قبل اعتبار الفلتر بطيئًا.
$wgAbuseFilterRangeBlockSize
[
    'IPv4' => '16',
    'IPv6' => '19',
]
حجم النطاق المحظور بواسطة إجراء "rangeblock".
$wgAbuseFilterLogIP
true
ما إذا كان سيتم تضمين IP في abuse_filter_log


الاختناق في حالات الطوارئ

يأتي AbuseFilter مزودًا بميزة تعمل تلقائيًا على تقييد (تعطيل) الفلاتر التي تم تعديلها مؤخرًا وتتوافق مع حد معين من الإجراءات الأخيرة.

يتم ذلك لمنع التعديلات الضارة على المرشحات لحظر كل مستخدم يقوم بإجراء على الويكي أو ما شابه.

يعتمد شرط تعطيل الفلتر على تلك المتغيرات:

  • $wgAbuseFilterEmergencyDisableThreshold - النسبة المئوية للمطابقات على المبلغ الإجمالي للإجراءات في الفترة المرصودة.
  • $wgAbuseFilterEmergencyDisableCount - عدد المطابقات للمرشح في الفترة الملاحظة.
  • $wgAbuseFilterEmergencyDisableAge - عمر المرشح لأخذه بعين الاعتبار. إذا كان التعديل الأخير للفلتر أقدم من هذا العدد من الثواني ، فلن يتم تقييد الفلتر ، إلا إذا كان قد تم تقييده بالفعل.
  • $wgAbuseFilterProfileActionsCap - العدد الأقصى للإجراءات الأخيرة ليتم احتسابها مقابل الحد الأدنى. لاحظ أن كل إجراء يؤدي إلى زيادة العداد ، وبمجرد وصول هذا العداد إلى هذه القيمة المكونة ، تتم إعادة تعيين هذا العداد وعدد الإجراءات الأخيرة التي تتطابق مع جميع عوامل التصفية إلى 0.

يمكن تحديد المرشحات الخانقة في قائمة المرشحات (Special: AbuseFilter) بالحالة $ 1. يحدث الاختناق بصمت ، ولا توجد طريقة لمعرفة متى يتم اختناق الفلتر.

عندما يتم تقييد أحد الفلاتر ، فإنه لا يؤدي أي إجراء خطير (عادةً ما تقتصر الإجراءات على حقوق خاصة مثل حظر المستخدم ، أو إزالته من المجموعات ، التي يتحكم فيها $wgAbuseFilterActionRestrictions) ، ولا يُسمح إلا بالإجراءات "الآمنة" (تلك التي يمكنها تحذير أو منع الإجراء المستمر). لا يتم تمكين المرشحات الخانقة تلقائيًا. لتعطيل الخنق ، تحتاج إلى تعديل عامل التصفية. لاحظ أنك تحتاج بالفعل إلى تغيير شيء ما من الفلتر: تغيير شيء ما من ملاحظات الفلتر كافٍ.

لاحظ أن تحرير الفلتر يحدّث عمره ، ويمكن أن يتسبب في تعطيله إذا وصل مرة أخرى إلى الشروط التي سيتم تقييدها في فترة قصيرة منذ التعديل الأخير ، مما يؤدي إلى عامل تصفية غير قابل للاستخدام إذا كان الويكي الخاص بك يحتوي على تعديلات إساءة استخدام أكثر من تلك الشرعية.


إنشاء وإدارة المرشحات

بمجرد تثبيت الملحق، يمكن إنشاء المرشحات /اختبارها /تغييرها /حذفها ويمكن الوصول إلى السجلات من صفحة إدارة مرشحات الإساءة Special:AbuseFilter.

  • To import filters from Wikipedia: When you have installed the extension, go to w:Special:AbuseFilter, choose a filter (say w:Special:AbuseFilter/3), then click "Export this filter to another wiki", copy the text, go to "Special:AbuseFilter/import" on your wiki, paste the text.

API

يضيف AbuseFilter وحدتين من وحدات قائمة API ، واحدة للحصول على تفاصيل عوامل تصفية إساءة الاستخدام ("عوامل تصفية إساءة الاستخدام") والأخرى لسجل إساءة الاستخدام ، نظرًا لأنها منفصلة عن سجلات MediaWiki الأخرى ("abuselog"). لا يمكن إنشاء أو تعديل عوامل تصفية إساءة الاستخدام باستخدام واجهة برمجة التطبيقات.

list = abusefilters

سرد معلومات حول عوامل التصفية

Parameters
  • abfstartid - معرّف عامل التصفية الذي سيبدأ التعداد منه
  • abfendid - معرّف عامل التصفية الذي سيتم إيقاف التعداد عنده
  • abfdir - الاتجاه الذي يتم فيه التعداد (أقدم ، أحدث)
  • abfshow - إظهار عوامل التصفية التي تفي بهذه المعايير فقط (مُمكّن |! مُمكّن | محذوف |! محذوف | خاص |! خاص)
  • abflimit - أقصى عدد من المرشحات لإدراجها
  • abfprop - الخصائص التي يجب الحصول عليها (المعرف | الوصف | النمط | الإجراءات | الزيارات | التعليقات | lasteditor | lastedittime | الحالة | خاصة)

عندما تكون الفلاتر خاصة ، ستفقد بعض الخصائص المحددة باستخدام abfprop ما لم تكن لديك صلاحيات المستخدم المناسبة.

أمثلة

سرد عوامل تصفية إساءة الاستخدام غير الخاصة

النتيجة
{
    "batchcomplete": "",
    "continue": {
        "abfstartid": 18,
        "continue": "-||"
    },
    "query": {
        "abusefilters": [
            {
                "id": 1,
                "hits": 41430
            },
            {
                "id": 3,
                "hits": 957485
            },
            {
                "id": 5,
                "hits": 5931
            },
            {
                "id": 6,
                "hits": 19
            },
            {
                "id": 8,
                "hits": 7
            },
            {
                "id": 9,
                "hits": 41354
            },
            {
                "id": 11,
                "hits": 132971
            },
            {
                "id": 12,
                "hits": 139693
            },
            {
                "id": 14,
                "hits": 63
            },
            {
                "id": 15,
                "hits": 15
            }
        ]
    }
}

list = abuselog

سرد الحالات التي أدت فيها الإجراءات إلى تشغيل عامل تصفية إساءة استخدام.

Parameters
  • aflstart - الطابع الزمني لبدء التعداد منه
  • aflend - الطابع الزمني لإيقاف التعداد عند
  • afldir - الاتجاه الذي يتم فيه التعداد (أقدم ، أحدث)
  • afluser - اعرض فقط الإدخالات التي حاول فيها مستخدم معين أو عنوان IP هذا الإجراء.
  • afltitle - اعرض فقط الإدخالات التي يتضمن الإجراء فيها صفحة معينة.
  • aflfilter - اعرض فقط الإدخالات التي أدت إلى تشغيل معرّف عامل التصفية المحدد
  • afllimit - الحد الأقصى لعدد الإدخالات في القائمة
  • aflprop - الخصائص التي يجب الحصول عليها: (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)
مثال

سرد الحالات التي تم فيها تشغيل عامل تصفية إساءة الاستخدام استجابةً لإجراءات من المستخدم "SineBot"

النتيجة
{
    "batchcomplete": "",
    "continue": {
        "aflstart": "2018-03-06T02:34:18Z",
        "continue": "-||"
    },
    "query": {
        "abuselog": [
            {
                "id": 27219261,
                "filter_id": "1073"
            },
            {
                "id": 26938051,
                "filter_id": ""
            },
            {
                "id": 23388942,
                "filter_id": "1"
            },
            {
                "id": 22044912,
                "filter_id": ""
            },
            {
                "id": 22032235,
                "filter_id": ""
            },
            {
                "id": 22032196,
                "filter_id": ""
            },
            {
                "id": 21983882,
                "filter_id": ""
            },
            {
                "id": 20594818,
                "filter_id": "904"
            },
            {
                "id": 20593489,
                "filter_id": "904"
            },
            {
                "id": 20590442,
                "filter_id": "904"
            }
        ]
    }
}

الأخطاء المحتملة

  • قد يواجه بعض المستخدمين فشل إنشاء عوامل تصفية جديدة أو تعديل عوامل التصفية القديمة ويتم إعادة توجيه المستخدم إلى الصفحة الأصلية. إذا كان Wiki يستخدم شهادات SSL ، فمن المحتمل أن يكون هذا الخطأ بسبب قيمة $ 1 ، والتي قد تستخدم "$ 2" بدلاً من "$ 3". سيكون مؤشر هذا الخطأ هو أن المتصفح يعطي تحذيرًا بـ https لصفحات $ 1. (2 $)

دمجه مع امتدادات أخرى

يمكنك دمج AbuseFilter مع امتداد آخر بطرق مختلفة.

إضافة متغيرات للتصفية

من الممكن إضافة متغيرات جديدة لاستخدامها في مرشحات إساءة الاستخدام. قائمة الأمثلة Template:$ 1. للقيام بذلك ، يجب عليك:

  • أضف معالجًا للخطاف AbuseFilter-builder . لإضافة متغير ، يجب استخدام $ 1 ، حيث $ 2 هو اسم المتغير ، و $ 3 هو جزء من مفتاح i18n . سيكون المفتاح الكامل هو abusefilter-edit-builder-vars-{$your_key}.
  • أضف رسائل i18n التي اخترتها في النقطة السابقة.
  • اختر معالج الخطاف حيث سيتم حساب المتغير. اعتمادًا على حالة الاستخدام الخاصة بك ، يمكنك:
    • تنفيذ الخطاف AbuseFilter-generateTitleVars ؛ يتم التفكير في هذا بشكل خاص للمتغيرات المتعلقة بالصفحة ؛
    • تنفيذ الخطاف AbuseFilter-generateUserVars ؛ يتم التفكير في هذا بشكل خاص للمتغيرات المتعلقة بالمستخدم ؛
    • تنفيذ الخطاف AbuseFilter-generateGenericVars ؛ هذا للمتغيرات غير المرتبطة بصفحة أو مستخدم معين ؛
    • تنفيذ الخطاف AbuseFilterAlterVariables ؛ هذا أكثر مرونة قليلاً من الخطافات الأخرى ، لكن له جانبًا سلبيًا: لن يكون المتغير متاحًا عند فحص إدخالات RecentChanges السابقة. إذا كنت ترغب في تنفيذ هذه الميزة (ويوصى بذلك) ، يجب عليك استخدام أحد الخطافات المذكورة أعلاه ، واستخدام المعلمة الثالثة ($ 1).
  • داخل معالج الخطاف ، توجد طريقتان لإضافة متغير:
    • الطريقة "المباشرة" هي استدعاء $vars->setVar( 'var_name', var_value );. هذا مثالي فقط عندما تكون القيمة سهلة وسريعة الحساب: يتم حساب القيمة حتى لو لم يستخدمها أي مرشح نشط.
    • الطريقة "الكسولة" هي استدعاء $vars->setLazyLoadVar( 'var_name', 'method_name', $params );. هنا ، "اسم_الطريقة" هو معرف (فريد) سيتم استخدامه لحساب المتغير (يوصى ببدءه باسم الامتداد الخاص بك). لتسجيل الطريقة ، يجب عليك إضافة معالج للخطاف $ 1 ؛ هنا ، يجب عليك التحقق مما إذا كانت الطريقة $ التي تم تمريرها تطابق اسم_الطريقة الخاصة بك ، وإذا كان الأمر كذلك ، فاحسب المتغير. أخيرًا ، المعلمات $ عبارة عن مجموعة من المعلمات التي ستحتاجها لحساب المتغير ؛ يتم تمرير هذه إلى معالج الخطاف computeVariable. للحصول على مثال على ذلك ، يمكنك التحقق من global_user_groups الخاص بـ CentralAuth.

إضافة الإجراءات المخصصة

يمكنك إضافة معالجات الإجراءات المخصصة ، بحيث يمكن لكل عامل تصفية تنفيذ إجراءات أخرى. To do that, you choose a name for the action ('my-action' from now on), and then:

  • قم بإنشاء فئة باسم على سبيل المثال $ 1 ، يجب أن يمتد ذلك إلى $ 2 ، والذي يمكنه أيضًا تنفيذ $ 3 أو $ 4
  • أضف مشتركًا إلى الخطاف $ 1 ؛ يجب على المشترك توفير رد نداء كما هو موثق في توثيق الخطاف ، والذي يقوم بإرجاع مثيل للفئة التي تم إنشاؤها أعلاه ، على سبيل المثال:
class MyAction extends \MediaWiki\Extension\AbuseFilter\Consequence {
    public function run() {
        throw new \Exception( 'Write me' );
    }
}
public function onAbuseFilterCustomActions( &$actions ) {
    $actions[] = function ( \MediaWiki\Extension\AbuseFilter\Consequence\Parameters $params, array $rawParams ) : MyConsequence {
        return new MyAction( $params, $rawParams );
    };
}

ثم يجب عليك إضافة رسائل i18n التالية ؛ يمكنك استبدال "$ 1" على سبيل المثال "$ 2" لمعرفة الغرض من الرسائل:

  • 'abusefilter-edit-action-${my_action}'
  • 'abusefilter-action-${my_action}'

إضافة مجموعات القواعد

يمكنك أيضًا إضافة مجموعات قواعد إضافية ، والتي يمكن استخدامها لتجميع عوامل تصفية إساءة الاستخدام الحالية. لاحظ أنه في الوقت الحالي ، يمكن أن يكون كل مرشح في مجموعة واحدة فقط (T116642). حاليًا ، المستهلك الوحيد المعروف لهذه الميزة هو Extension:StructuredDiscussions . للقيام بذلك ، يجب عليك:

  • إلحاق اسم المجموعة بـ $ groups
  • إضافة بعض التعليمات البرمجية لتشغيل المرشحات مع مجموعتك. لاحظ أن AbuseFilter لن يفعل ذلك بمفرده. للقيام بذلك ، يجب عليك إنشاء كائن $ ، وتمرير اسم مجموعتك.

انظر أيضا