Extension:Multi-Category Search

This extension allows users to find pages which are included in several specified categories at once. By default a user can specify up to 5 categories, and optionally up to 3 categories to be excluded from search. Upon many requests, drop-down lists were introduced in version 1.3, and since version 1.5 it's now possible to fill drop-down lists automatically with subcategories of some parent category. Extension was first released on January 23, 2008‎.

Purpose and usage
The extension is indispensable, if you need, for example, to find all articles about american comedy movies released in 1990 on your cinema-related wiki. In this case you just need to go to Special:MultiCategorySearch special page, specify three categories there: "USA films", "Comedy films" and "1990 films", and click on search button. That's it - you get the list of movies.

Installation

 * 1) Download the extension .zip file.
 * 2) Unzip and save the source code files in a   subdirectory of your wiki's   directory.
 * 3) Change your wiki's LocalSettings.php file to include the line:

Configuration
General configuration settings are set in five variables in the beginning of MultiCategorySearch_body.php file. Here are sample settings and their description.

Maximum number of categories, that user can search for: var $inCategoriesNumber = 5; Maximum number of categories, which user can exclude from search: var $exCategoriesNumber = 3; When set to true, drop-down lists with predefined categories are shown on the search form. Categories for drop-down lists must be predefined in showDropdownLists function in the end of MultiCategorySearch_body.php script. var $useDropdownLists = false; When set to true, inserts MediaWiki:Edittools at the bottom of the search form. Edittools allow user to insert special characters in an easy way. Remember, that EditTools require Extension:CharInsert to be installed and AJAX to be enabled (global $wgUseAjax variable must be set to true in LocalSettings.php file). var $insertEditTools = false; Default HTTP method of passing parameters. Change it to 'get' if required. var $paramsPassMethod = 'post';

Transclusion
By transclusion the multi-category search results could be dynamically shown on some other page. Transclusion format is:

Database compatibility note
Extension won't work on some very old database engines, which don't support SQL subqueries. In that case, please, upgrade your database engine.

Version history

 * 1.63 — Update to suit MediaWiki 1.19. Drop-down lists configuration system has been simplified.
 * 1.62 — Update to suit MediaWiki 1.18.
 * 1.61 — Minor bugfix. Italian messages have been added.
 * 1.6 — Localized messages caching system has been updated.
 * 1.5 — Spanish messages have been added.
 * 1.5 — An option to fill drop-down lists automatically with subcategories of some parent category has been added. Minor bugfix.
 * 1.4 — A patch by William Moore has been applied, allowing Special:MultiCategorySearch page to be transcluded.
 * 1.38 — Minor bugfix.
 * 1.37 — Minor changes. French messages have been added.
 * 1.36 — Minor bugfixes.
 * 1.35 — Minor internal improvements.
 * 1.34 — Minor internal improvements.
 * 1.33 — Listing of articles, which are not included in specified categories, is now available even if no category was selected to search for.
 * 1.31 — Minor bugfix.
 * 1.3 — Optional drop-down list selection was added.
 * 1.21 — Edittools file has been added; German and Dutch translations were added; DB table prefixes recognition was enabled.
 * 1.01 — Minor bugfix.

Localization

 * Spanish messages by José Zarco
 * German messages by Astrid Kuhr
 * French messages by Thierry Giroux Veilleux
 * Dutch messages by Nanda Jansen
 * Russian messages by Iaroslav Vassiliev
 * Turkish messages by Helmut Oberdiek
 * Hebrew messages by Avner Pinchover
 * Polish messages by Dawid Kamola
 * Italian messages by Cristian Filagrossi

Contacts
If you would like to report a bug, request a feature, or if you could help with localization (extension messages translation), please, send me a letter to [mailto:codedriller@gmail.com codedriller@gmail.com]. By the way, if you need advanced bot functionality for your wiki, take a look at free DotNetWikiBot Framework, that I maintain.