Assembly line filters

From Apibot
Jump to: navigation, search

Often only some of the data elements supplied by a feeder should be processed. Sometimes they might need to be reordered. Sometimes the feeder might supply the same data elements more than once, and the processing must be done only once per element. Skipping the inappropriate elements, reordering them etc. is done by a group of line objects called filters.

The typical filter checks if a data element matches certain condition, and discards it if it doesn't. Signals whose data elements match this condition are let through, the rest are discarded. By combining filters you can build as complex conditions as you like. Such filters are called in Apibot parlance sieving.

Creating most sieving filters requires two parameters - a Core object and a array of 'parameters' - descriptions how to do the filtering. Some require only a Core object, as they do not need further tuning. Some (mostly these who filter by belonging to a diapazone) require three parameters - a Core object, a diapazone minimum value and a diapazone maximum value.

There are also filters that do not discard objects, but do other things with them - sort them according to some criterion, or group or ungroup them, etc. Such filters are called in Apibot parlance non- sieving.

All filters files are situated in the directory interfaces/line/filters.

Sieving filters

All of them are situated in the directory interfaces/line/filters/sieving.

Types of checks

Most sieving filters will make their check according to several algorithms:

Boolean check

There are two types of this algorithm:

  • True - will OK if the checked data elements property is true.
  • False - will OK if the checked data elements property is false (or empty).

By checking a list of values

There are two types of this algorithm:

  • Include - will OK if the checked data elements property is among the parameters values.
  • Exclude - will OK if the checked data elements property is not among the parameters values.

These filters require as a parameter an array of permitted / forbidden values. Some of them also support regex matching.

By matching regexes

There are typically four types of this algorithm:

  • Match_All - will OK if the checked data elements property matches all of the parameters values
  • Match_Any - will OK if the checked data elements property matches any of the parameters values
  • NotMatch_All - will OK if the checked data elements property does not match all of the parameters values
  • NotMatch_Any - will OK if the checked data elements property does not match any of the parameters values

These filters require as 'parameters' an array of regexes. All PHP regex matching extensions are supported, plus one additional. If a regex string starts with an exclamation mark, its meaning is inverted - the match is considered positive if the regex (sans the starting '!') doesn't match the property value.

By matching a diapazone

These require two 'parameter' values (min and max), who must be scalar (numerics or strings). If they are numeric, the value tested will be checked by numeric value. If they are strings, the value tested will be checked by alphabetical order.

These will consider a value to be OK if it is between the min and max parameters, including them.

If there is no min parameter, all values smaller or equal to the max parameters are OK.

If there is no max parameter, all values bigger or equal to the min parameters are OK.

If the max parameter is smaller than the min parameter, the values that are outside this diapazone, including min and max, are considered OK.

General data element filters

These filter objects by their properties (values in arrays, properties in objects...). There are defined classes for the most frequently found wiki object properties, as well as a class that allows specifying what property has to be checked. All of them are in the directory interfaces/line/filters/sieving/general and its subdirectories.

(For some types of wiki objects, eg. pages and users, there are far richer sets of filters, situated in other directories.)

By 'action'

Class name Defined in file Allows data elements whose property
Filter_General_Action_Exclude action/exclude.php Doesn't equal any of the given values
Filter_General_Action_Include action/include.php Equals any of the given values

By 'anonymous'

Class name Defined in file Allows data elements whose property
Filter_General_Anonymous_False anonymous/false.php Is not true
Filter_General_Anonymous_True anonymous/true.php Is true

By 'bot'

Class name Defined in file Allows data elements whose property
Filter_General_Bot_False bot/false.php Is not true
Filter_General_Bot_True bot/true.php Is true

By 'comment'

Class name Defined in file Allows data elements whose property
Filter_General_Comment_RegexesExist_All comment/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_General_Comment_RegexesExist_Any comment/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_General_Comment_RegexesNotExist_All comment/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_General_Comment_RegexesNotExist_Any comment/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By 'logaction'

Class name Defined in file Allows data elements whose property
Filter_General_Logaction_Exclude logaction/exclude.php Doesn't equal any of the given values
Filter_General_Logaction_Include logaction/include.php Equals any of the given values

By 'logid'

Class name Defined in file Allows data elements whose property
Filter_General_Logid_Diap logid/diap.php Matches the given diapazone
Filter_General_Logid_Exclude logid/exclude.php Doesn't equal any of the given values
Filter_General_Logid_Include logid/include.php Equals any of the given values

By 'logtype'

Class name Defined in file Allows data elements whose property
Filter_General_Logtype_Exclude logtype/exclude.php Doesn't equal any of the given values
Filter_General_Logtype_Include logtype/include.php Equals any of the given values

By 'minor'

Class name Defined in file Allows data elements whose property
Filter_General_Minor_False minor/false.php Is not true
Filter_General_Minor_True minor/true.php Is true

By 'new'

Class name Defined in file Allows data elements whose property
Filter_General_New_False new/false.php Is not true
Filter_General_New_True new/true.php Is true

By 'newlen'

Class name Defined in file Allows data elements whose property
Filter_General_Newlen_Diap newlen/diap.php Matches the given diapazone

By 'ns'

Class name Defined in file Allows data elements whose property
Filter_General_Namespace_Diap ns/diap.php Matches the given diapazone
Filter_General_Namespace_Exclude ns/exclude.php Doesn't equal any of the given values
Filter_General_Namespace_Include ns/include.php Equals any of the given values

By 'old_revid'

Class name Defined in file Allows data elements whose property
Filter_General_OldRevid_Diap old_revid/diap.php Matches the given diapazone
Filter_General_OldRevid_Exclude old_revid/exclude.php Doesn't equal any of the given values
Filter_General_OldRevid_Include old_revid/include.php Equals any of the given values

By 'oldlen'

Class name Defined in file Allows data elements whose property
Filter_General_Oldlen_Diap oldlen/diap.php Matches the given diapazone

By 'pageid'

Class name Defined in file Allows data elements whose property
Filter_General_Pageid_Diap pageid/diap.php Matches the given diapazone
Filter_General_Pageid_Exclude pageid/exclude.php Doesn't equal any of the given values
Filter_General_Pageid_Include pageid/include.php Equals any of the given values

By 'patrolled'

Class name Defined in file Allows data elements whose property
Filter_General_Patrolled_False patrolled/false.php Is not true
Filter_General_Patrolled_True patrolled/true.php Is true

By 'rcid'

Class name Defined in file Allows data elements whose property
Filter_General_Rcid_Diap rcid/diap.php Matches the given diapazone
Filter_General_Rcid_Exclude rcid/exclude.php Doesn't equal any of the given values
Filter_General_Rcid_Include rcid/include.php Equals any of the given values

By 'revid'

Class name Defined in file Allows data elements whose property
Filter_General_Revid_Diap revid/diap.php Matches the given diapazone
Filter_General_Revid_Exclude revid/exclude.php Doesn't equal any of the given values
Filter_General_Revid_Include revid/include.php Equals any of the given values

By 'size'

Class name Defined in file Allows data elements whose property
Filter_General_Size_Diap size/diap.php Matches the given diapazone

By 'timestamp'

Class name Defined in file Allows data elements whose property
Filter_General_Timestamp_Diap timestamp/diap.php Matches the given diapazone

By 'title'

Class name Defined in file Allows data elements whose property
Filter_General_Title_Diap title/diap.php Matches the given diapazone
Filter_General_Title_Exclude title/exclude.php Doesn't equal any of the given values
Filter_General_Title_Include title/include.php Equals any of the given values
Filter_General_Title_RegexesExist_All title/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_General_Title_RegexesExist_Any title/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_General_Title_RegexesNotExist_All title/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_General_Title_RegexesNotExist_Any title/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By 'type'

Class name Defined in file Allows data elements whose property
Filter_General_Type_Exclude type/exclude.php Doesn't equal any of the given values
Filter_General_Type_Include type/include.php Equals any of the given values

By 'user'

Class name Defined in file Allows data elements whose property
Filter_General_User_Diap user/diap.php Matches the given diapazone
Filter_General_User_Exclude user/exclude.php Doesn't equal any of the given values
Filter_General_User_Include user/include.php Equals any of the given values
Filter_General_User_RegexesExist_All user/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_General_User_RegexesExist_Any user/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_General_User_RegexesNotExist_All user/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_General_User_RegexesNotExist_Any user/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By a specified property

The objects of these classes require an additional parameter - the name of the property that must be checked. This parameter comes before the $core parameter. If the data element is an array, this parameter will be the key in the array. If the data element is an object, this will be the name of the object property.

The parameter can also be an array. In this case, its values will be used as inlayed property names. For example, if you need to check $data_element['key1']['key2']['key3'], you would specify as the parameter an array ( 'key1', 'key2', 'key3' ). (This will also work to check $data_element->key1->key2->key3, or any mix of inlayed objects and arrays.)

If you need to check the entire data element, set the parameter to NULL.

Class name Defined in file Allows data elements whose property
Filter_General_SpecifiedProperty_Diap _specified_property/diap.php Matches the given diapazone
Filter_General_SpecifiedProperty_Exclude _specified_property/exclude.php Doesn't equal any of the given values
Filter_General_SpecifiedProperty_Include _specified_property/include.php Equals any of the given values
Filter_General_SpecifiedProperty_RegexesExist_All _specified_property/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_General_SpecifiedProperty_RegexesExist_Any _specified_property/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_General_SpecifiedProperty_RegexesNotExist_All _specified_property/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_General_SpecifiedProperty_RegexesNotExist_Any _specified_property/regexes_notexist_any.php Does not match any of the parameters (as regexes)

Page data element filters

If the property that is being checked is not available in the data element, these filters will try to auto-fetch the page with the specified title, pageid or revid from the wiki.

All of them are in the directory interfaces/line/filters/sieving/page and its subdirectories.

By 'comment'

Class name Defined in file Allows data elements whose property
Filter_Page_Comment_RegexesExist_All comment/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_Page_Comment_RegexesExist_Any comment/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_Page_Comment_RegexesNotExist_All comment/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_Page_Comment_RegexesNotExist_Any comment/regexes_notexist_any.php Does not match any of the parameters (as regexes)
Filter_Page_Comment_Size_Diap comment/size_diap.php Comment size matches the diapazone

By 'new'

Class name Defined in file Allows data elements whose property
Filter_Page_New_False new/false.php Is not true
Filter_Page_New_True new/true.php Is true

By 'pageid'

Class name Defined in file Allows data elements whose property
Filter_Page_Pageid_Diap pageid/diap.php Matches the given diapazone
Filter_Page_Pageid_Exclude pageid/exclude.php Doesn't equal any of the given values
Filter_Page_Pageid_Include pageid/include.php Equals any of the given values

By 'parentid'

Class name Defined in file Allows data elements whose property
Filter_Page_Parentid_Diap parentid/diap.php Matches the given diapazone
Filter_Page_Parentid_Exclude parentid/exclude.php Doesn't equal any of the given values
Filter_Page_Parentid_Include parentid/include.php Equals any of the given values

By 'redirect'

Class name Defined in file Allows data elements whose property
Filter_Page_Redirect_False redirect/false.php Is not true
Filter_Page_Redirect_True redirect/true.php Is true

By 'revid'

Class name Defined in file Allows data elements whose property
Filter_Page_Revid_Diap revid/diap.php Matches the given diapazone
Filter_Page_Revid_Exclude revid/exclude.php Doesn't equal any of the given values
Filter_Page_Revid_Include revid/include.php Equals any of the given values

By 'size'

Class name Defined in file Allows data elements whose property
Filter_Page_Size_Diap size/diap.php Matches the given diapazone

By 'text'

These filters match what is found in the page text only. For example, if a category is declared for this page not in the page text, but in an included template, these filters will not find it. In the wiki, however, the page will still belong to that category.

Some of the filters will take as parameters arrays of strings or regexes. Most, however, will take arrays of regex parts sets. Each set is an associative array with the following keys:

  • 'colon' (a leading colon - valid in wikilinks)
  • 'wiki' (an interwiki part - valid in wikilinks, interwikis)
  • 'namespace' (a namespace - valid in wikilinks, interwikis, templates)
  • 'name' (a page title - valid in wikilinks, categories, filelinks, interwikis, templates)
  • 'anchor' (an anchor within the page text - valid in wikilinks)
  • 'text' (the visible text of a wikilink - valid in wikilinks, filelinks, as a sortkey in categories)

The values should be parts of regexes that will be auto-assembled into a complete regex while checking. (If you need to write the regex all by itself, use the Filter_Page_Text_Regexes classes.)

Class name Defined in file Allows data elements whose property
Filter_Page_Text_CategoriesExist_All text/categories_exist_all.php Categories match all of the parameters (as regex parts sets)
Filter_Page_Text_CategoriesExist_Any text/categories_exist_any.php Categories match any of the parameters (as regex parts sets)
Filter_Page_Text_CategoriesNotExist_All text/categories_notexist_all.php Categories do not match all of the parameters (as regex parts sets)
Filter_Page_Text_CategoriesNotExist_Any text/categories_notexist_any.php Categories do not match any of the parameters (as regex parts sets)
Filter_Page_Text_FilelinksExist_All text/filelinks_exist_all.php Filelinks match all of the parameters (as regex parts sets)
Filter_Page_Text_FilelinksExist_Any text/filelinks_exist_any.php Filelinks match any of the parameters (as regex parts sets)
Filter_Page_Text_FilelinksNotExist_All text/filelinks_notexist_all.php Filelinks do not match all of the parameters (as regex parts sets)
Filter_Page_Text_FilelinksNotExist_Any text/filelinks_notexist_any.php Filelinks do not match any of the parameters (as regex parts sets)
Filter_Page_Text_InterwikisExist_All text/interwikis_exist_all.php Interwikis match all of the parameters (as regex parts sets)
Filter_Page_Text_InterwikisExist_Any text/interwikis_exist_any.php Interwikis match any of the parameters (as regex parts sets)
Filter_Page_Text_InterwikisNotExist_All text/interwikis_notexist_all.php Interwikis do not match all of the parameters (as regex parts sets)
Filter_Page_Text_InterwikisNotExist_Any text/interwikis_notexist_any.php Interwikis do not match any of the parameters (as regex parts sets)
Filter_Page_Text_Redirect_False text/redirect_false.php Is not a redirect
Filter_Page_Text_Redirect_True text/redirect_true.php Is a redirect
Filter_Page_Text_RegexesExist_All text/regexes_exist_all.php Match all of the parameters (as regexes)
Filter_Page_Text_RegexesExist_Any text/regexes_exist_any.php Match any of the parameters (as regexes)
Filter_Page_Text_RegexesNotExist_All text/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_Page_Text_RegexesNotExist_Any text/regexes_notexist_any.php Does not match any of the parameters (as regexes)
Filter_Page_Text_StringsExist_All text/strings_exist_all.php Match all of the parameters (as strings)
Filter_Page_Text_StringsExist_Any text/strings_exist_any.php Match any of the parameters (as strings)
Filter_Page_Text_StringsNotExist_All text/strings_notexist_all.php Does not match all of the parameters (as strings)
Filter_Page_Text_StringsNotExist_Any text/strings_notexist_any.php Does not match any of the parameters (as strings)
Filter_Page_Text_TemplatesExist_All text/templates_exist_all.php Templates match all of the parameters (as regex parts sets)
Filter_Page_Text_TemplatesExist_Any text/templates_exist_any.php Templates match any of the parameters (as regex parts sets)
Filter_Page_Text_TemplatesNotExist_All text/templates_notexist_all.php Templates do not match all of the parameters (as regex parts sets)
Filter_Page_Text_TemplatesNotExist_Any text/templates_notexist_any.php Templates do not match any of the parameters (as regex parts sets)
Filter_Page_Text_WikilinksExist_All text/wikilinks_exist_all.php Wikilinks match all of the parameters (as regex parts sets)
Filter_Page_Text_WikilinksExist_Any text/wikilinks_exist_any.php Wikilinks match any of the parameters (as regex parts sets)
Filter_Page_Text_WikilinksNotExist_All text/wikilinks_notexist_all.php Wikilinks do not match all of the parameters (as regex parts sets)
Filter_Page_Text_WikilinksNotExist_Any text/wikilinks_notexist_any.php Wikilinks do not match any of the parameters (as regex parts sets)

By 'timestamp'

Class name Defined in file Allows data elements whose property
Filter_Page_Timestamp_Diap page/diap.php Matches the given diapazone

By 'title'

Class name Defined in file Allows data elements whose property
Filter_Page_Title_Diap title/diap.php Matches the given diapazone
Filter_Page_Title_Exclude title/exclude.php Doesn't equal any of the given values
Filter_Page_Title_Include title/include.php Equals any of the given values
Filter_Page_Title_RegexesExist_All title/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_Page_Title_RegexesExist_Any title/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_Page_Title_RegexesNotExist_All title/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_Page_Title_RegexesNotExist_Any title/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By 'user'

Class name Defined in file Allows data elements whose property
Filter_Page_User_Diap user/diap.php Matches the given diapazone
Filter_Page_User_Exclude user/exclude.php Doesn't equal any of the given values
Filter_Page_User_Include user/include.php Equals any of the given values
Filter_Page_User_RegexesExist_All user/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_Page_User_RegexesExist_Any user/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_Page_User_RegexesNotExist_All user/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_Page_User_RegexesNotExist_Any user/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By a specified property

The objects of these classes require an additional parameter - the name of the property that must be checked. This parameter comes before the $core parameter. (They can also simulate the specific wiki object filters for every wiki object property.)

If the page data element is an array, this will be the key in the array. If the page data element is an object, this will be the name of the object property. Like with the other page-specific filters, if the property is not found in the data element, an attempt will be made to auto-fetch this page data from the wiki.

Class name Defined in file Allows data elements whose property
Filter_Page_SpecifiedProperty_Diap _specified_property/diap.php Matches the given diapazone
Filter_Page_SpecifiedProperty_Exclude _specified_property/exclude.php Doesn't equal any of the given values
Filter_Page_SpecifiedProperty_Include _specified_property/include.php Equals any of the given values
Filter_Page_SpecifiedProperty_RegexesExist_All _specified_property/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_Page_SpecifiedProperty_RegexesExist_Any _specified_property/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_Page_SpecifiedProperty_RegexesNotExist_All _specified_property/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_Page_SpecifiedProperty_RegexesNotExist_Any _specified_property/regexes_notexist_any.php Does not match any of the parameters (as regexes)

User data element filters

If the property that is being checked is not available in the data element, these filters will try to auto-fetch the user with the specified name from the wiki.

All of them are in the directory interfaces/line/filters/sieving/user and its subdirectories.

By 'blockedby'

Class name Defined in file Allows data elements whose property
Filter_User_BlockedBy_Exclude blockedby/exclude.php Doesn't equal any of the given values
Filter_User_BlockedBy_Include blockedby/include.php Equals any of the given values

By 'blockexpiry'

Class name Defined in file Allows data elements whose property
Filter_User_BlockExpiry_Diap blockexpiry/diap.php Matches the given diapazone

By 'blockreason'

Class name Defined in file Allows data elements whose property
Filter_User_BlockReason_RegexesExist_All blockreason/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_User_BlockReason_RegexesExist_Any blockreason/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_User_BlockReason_RegexesNotExist_All blockreason/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_User_BlockReason_RegexesNotExist_Any blockreason/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By 'editcount'

Class name Defined in file Allows data elements whose property
Filter_User_Editcount_Diap editcount/diap.php Matches the given diapazone

By 'gender'

In addition to "female" and "male", gender also can be not specified. For this reason, there are Include and Exclude filters instead of binary ones.

Class name Defined in file Allows data elements whose property
Filter_User_Gender_Exclude gender/exclude.php Doesn't equal any of the given values
Filter_User_Gender_Include gender/include.php Equals any of the given values

By 'groups'

Class name Defined in file Allows data elements whose property
Filter_User_Groups_Exist_All groups/exist_all.php Matches all of the parameters
Filter_User_Groups_Exist_Any groups/exist_any.php Matches any of the parameters
Filter_User_Groups_NotExist_All groups/exist_all.php Does not match all of the parameters
Filter_User_Groups_NotExist_Any groups/exist_any.php Does not match any of the parameters

By 'implicitgroups'

Class name Defined in file Allows data elements whose property
Filter_User_ImplicitGroups_Exist_All implicitgroups/exist_all.php Matches all of the parameters
Filter_User_ImplicitGroups_Exist_Any implicitgroups/exist_any.php Matches any of the parameters
Filter_User_ImplicitGroups_NotExist_All implicitgroups/exist_all.php Does not match all of the parameters
Filter_User_ImplicitGroups_NotExist_Any implicitgroups/exist_any.php Does not match any of the parameters

By 'name'

Class name Defined in file Allows data elements whose property
Filter_User_Name_Diap name/diap.php Matches the given diapazone
Filter_User_Name_Exclude name/exclude.php Doesn't equal any of the given values
Filter_User_Name_Include name/include.php Equals any of the given values
Filter_User_Name_RegexesExist_All name/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_User_Name_RegexesExist_Any name/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_User_Name_RegexesNotExist_All name/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_User_Name_RegexesNotExist_Any name/regexes_notexist_any.php Does not match any of the parameters (as regexes)

By 'registration'

Class name Defined in file Allows data elements whose property
Filter_User_Registration_Diap registration/diap.php Matches the given diapazone

By 'userid'

Class name Defined in file Allows data elements whose property
Filter_User_Userid_Diap userid/diap.php Matches the given diapazone
Filter_User_Userid_Exclude userid/exclude.php Doesn't equal any of the given values
Filter_User_Userid_Include userid/include.php Equals any of the given values

By a specified property

The objects of these classes require an additional parameter - the name of the property that must be checked. This parameter comes before the $core parameter. (They can also simulate the specific wiki object filters for every wiki object property.)

If the user data element is an array, this will be the key in the array. If the user data element is an object, this will be the name of the object property. Like with the other user-specific filters, if the property is not found in the data element, an attempt will be made to auto-fetch this user data from the wiki.

Class name Defined in file Allows data elements whose property
Filter_User_SpecifiedProperty_Diap _specified_property/diap.php Matches the given diapazone
Filter_User_SpecifiedProperty_Exclude _specified_property/exclude.php Doesn't equal any of the given values
Filter_User_SpecifiedProperty_Include _specified_property/include.php Equals any of the given values
Filter_User_SpecifiedProperty_RegexesExist_All _specified_property/regexes_exist_all.php Matches all of the parameters (as regexes)
Filter_User_SpecifiedProperty_RegexesExist_Any _specified_property/regexes_exist_any.php Matches any of the parameters (as regexes)
Filter_User_SpecifiedProperty_RegexesNotExist_All _specified_property/regexes_notexist_all.php Does not match all of the parameters (as regexes)
Filter_User_SpecifiedProperty_RegexesNotExist_Any _specified_property/regexes_notexist_any.php Does not match any of the parameters (as regexes)

Feed-related filters

These filters discard the signals / data elements according to position in a feed, etc.

All of them are in the directory interfaces/line/filters/sieving/feed.

Class name Defined in file Allows data elements whose property
Filter_Feed_Head (v0.40.22+) head.php Are among the first N (if N is negative - NOT among the first N) elements in a feed
Filter_Feed_Tail (v0.40.23+) head.php Are among the last N (if N is negative - NOT among the last N) elements in a feed

Directory entry data element filters

These filters work by properties typical for directory entries, eg. fetched by a Feeder_Directory feeder.

All of them are in the directory interfaces/line/filters/sieving/dir_entry.

Class name Defined in file Allows data elements whose property is dir entry's
Filter_DirEntry_File_ATime atime.php File last access time (by a diapazone)
Filter_DirEntry_File_Basename basename.php File basename (by regexes)
Filter_DirEntry_File_Blksize blksize.php File(system) block size (by diapazone)
Filter_DirEntry_File_Blocks blocks.php File blocks count (by diapazone)
Filter_DirEntry_File_CTime ctime.php File last change time (by a diapazone)
Filter_DirEntry_File_Dirname dirname.php File dirname (by regexes)
Filter_DirEntry_File_Devno devno.php File device No. (by a diapazone)
Filter_DirEntry_File_Extension extension.php File extension (by regexes)
Filter_DirEntry_File_Filename filename.php File name proper (by regexes)
Filter_DirEntry_File_GID gid.php File group ID (by a diapazone)
Filter_DirEntry_File_Group group.php File group name (by regexes)
Filter_DirEntry_File_Ino ino.php File inode No. (by a diapazone)
Filter_DirEntry_File_MTime mtime.php File last modify time (by a diapazone)
Filter_DirEntry_File_NLink nlink.php File links number (by a diapazone)
Filter_DirEntry_File_NotGroup notgroup.php NOT File group name (by regexes)
Filter_DirEntry_File_NotOwner notowner.php NOT File owner name (by regexes)
Filter_DirEntry_File_NotType nottype.php NOT File type (by regexes)
Filter_DirEntry_File_Owner owner.php File owner name (by regexes)
Filter_DirEntry_File_Permissions permissions.php File permissions (by permissions check)
Filter_DirEntry_File_Size size.php File size, in bytes (by a diapazone)
Filter_DirEntry_File_Type type.php File type (by regexes)
Filter_DirEntry_File_UID uid.php File user ID (by a diapazone)
Filter_DirEntry_Symlink_ATime latime.php Symlink last access time (by a diapazone)
Filter_DirEntry_Symlink_Blksize lblksize.php Symlink block size (by diapazone)
Filter_DirEntry_Symlink_Blocks lblocks.php Symlink blocks count (by diapazone)
Filter_DirEntry_Symlink_CTime lctime.php Symlink last change time (by a diapazone)
Filter_DirEntry_Symlink_Devno ldevno.php Symlink device No. (by a diapazone)
Filter_DirEntry_Symlink_GID lgid.php Symlink group ID (by a diapazone)
Filter_DirEntry_Symlink_Group lgroup.php Symlink group name (by regexes)
Filter_DirEntry_Symlink_Ino lino.php Symlink inode No. (by a diapazone)
Filter_DirEntry_Symlink_MTime lmtime.php Symlink last modify time (by a diapazone)
Filter_DirEntry_Symlink_NotGroup lnotgroup.php NOT Symlink group name (by regexes)
Filter_DirEntry_Symlink_NotOwner lnotowner.php NOT Symlink owner name (by regexes)
Filter_DirEntry_Symlink_NotType lnottype.php NOT Symlink type (by regexes)
Filter_DirEntry_Symlink_Owner lowner.php Symlink owner name (by regexes)
Filter_DirEntry_Symlink_Permissions lpermissions.php Symlink permissions (by permissions check)
Filter_DirEntry_Symlink_Size lsize.php Symlink size, in bytes (by a diapazone)
Filter_DirEntry_Symlink_UID luid.php Symlink user ID (by a diapazone)

The permissions check is matching the permissions string (that 'rwxr-xr-x' you see often while doing ls -l :-) ) against a check string. The check string looks exactly like the permissions string, with the difference that it may contain a '?' character, which matches anything. Thus, for example, a 'rwx??????' check string will match any permissions string that starts with 'rwx'.

Unique filters

These filters only let through unique data. All data elements whose specified element is the same as that of a previously permitted data element will be discarded.

They are situated in the interfaces/line/filters/sieving/unique directory.

Class name Defined in file Lets through data elements unique by
Filter_Unique_Blockid blockid.php 'blockid' property
Filter_Unique_ByUser by_user.php 'by_user' property
Filter_Unique_ByUserid by_userid.php 'by_userid' property
Filter_Unique_Expiry expiry.php 'expiry' property
Filter_Unique_User by_user.php 'by_user' property
Filter_Unique_Extlink extlink.php 'extlink' property
Filter_Unique_Logid logid.php 'logid' property
Filter_Unique_Nsid nsid.php 'nsid' property
Filter_Unique_Pageid pageid.php 'pageid' property
Filter_Unique_Rcid rcid.php 'rcid' property
Filter_Unique_Revid revid.php 'revid' property
Filter_Unique_Size size.php 'size' property
Filter_Unique_Timestamp timestamp.php 'timestamp' property
Filter_Unique_User user.php 'user' property
Filter_Unique_Userid userid.php 'userid' property
Filter_Unique_Uniqueid unique_id.php A data unique Id, or the best attempt to generate such one

Non-sieving filters

All of them are situated in the directory interfaces/line/filters/non-sieving.

Sorting filters

These filters sort signals / data elements according to some criteria. All of them are in the directory interfaces/line/filters/non-sieving/sort directory and its subdirectories.

The elements to be sorted are stored in the memory until the end of the feed. Therefore, use these filters with long feeds and/or large data elements only if you have enough of RAM!

All of these filters have the public property $reverse. By default it is false. If set to true, the data will be sorted in reverse order.

Sorting general objects

Class name Defined in file Sorts data elements by
Filter_Sort_ByDataElement general/data_element.php The entire data element (should be a scalar, or the sorting will fail)

Sorting wiki objects

Class name Defined in file Sorts data elements by
Filter_Sort_Blockid wiki/blockid.php 'blockid' property
Filter_Sort_ByUser wiki/by_user.php 'by_user' property
Filter_Sort_ByUserid wiki/by_userid.php 'by_userid' property
Filter_Sort_Expiry wiki/expiry.php 'expiry' property
Filter_Sort_User wiki/by_user.php 'by_user' property
Filter_Sort_Extlink wiki/extlink.php 'extlink' property
Filter_Sort_Logid wiki/logid.php 'logid' property
Filter_Sort_Nsid wiki/nsid.php 'nsid' property
Filter_Sort_Pageid wiki/pageid.php 'pageid' property
Filter_Sort_Rcid wiki/rcid.php 'rcid' property
Filter_Sort_Revid wiki/revid.php 'revid' property
Filter_Sort_Size wiki/size.php 'size' property
Filter_Sort_Timestamp wiki/timestamp.php 'timestamp' property
Filter_Sort_User wiki/user.php 'user' property
Filter_Sort_Userid wiki/userid.php 'userid' property
Filter_Sort_Uniqueid wiki/unique_id.php A data unique Id, or the best attempt to generate such one
Filter_Sort_Property wiki/property.php A property specified while creating the filter (as a second parameter)

Miscellaneous filters

These filters do not fall into any of the previous categories. They are situated in the interfaces/line/filters/non-sieving/misc directory and its subdirectories.

Class name Defined in file Does
Filter_Delay misc/delay.php Delays execution by a specified number of tenths of a second
Filter_Group misc/group.php Groups data into array of specified size (the last array may be smaller)
Filter_Ungroup misc/ungroup.php Ungroups an array of data into separate elements and sends them one by one