Difference between revisions of "Extension:CategoryHook.php"

From Organic Design wiki
m
Line 9: Line 9:
  
 
$wgExtensionCredits['parserhook'][] = array(
 
$wgExtensionCredits['parserhook'][] = array(
        'name'  => 'CategoryHook',
+
'name'  => 'CategoryHook',
        'author' => 'User:Nad',
+
'author' => 'User:Nad',
        'url'    => 'http://www.mediawiki.org/Extension:CategoryHook',
+
'url'    => 'http://www.mediawiki.org/Extension:CategoryHook',
        );
+
);
  
 
# Only process if action is submit, no changes to categories otherwise
 
# Only process if action is submit, no changes to categories otherwise
 
if ($_REQUEST['action'] == 'submit') {
 
if ($_REQUEST['action'] == 'submit') {
        $wgCategoryHookCatList = array();
+
$wgCategoryHookCatList = array();
        $wgHooks['ParserBeforeStrip'][] = 'wfCategoryHookProcess';
+
$wgHooks['ParserBeforeStrip'][] = 'wfCategoryHookProcess';
        $wgHooks['ParserAfterTidy'][]  = 'wfCategoryHookAdd';
+
$wgHooks['ParserAfterTidy'][]  = 'wfCategoryHookAdd';
        }
+
}
 +
 
 +
# Add the categories
 +
function wfCategoryHookAdd(&$parser,&$text) {
 +
global $wgCategoryHookCatList;
 +
foreach ($wgCategoryHookCatList as $dbkey => $item) {
 +
list($add,$sortkey) = $item;
 +
if ($add) $parser->mOutput->addCategory($dbkey,$sortkey);
 +
else unset($parser->mOutput->mCategories[$dbkey]);
 +
}
 +
return true;
 +
}
  
 
# Determine the additional categories from the article's raw wikitext
 
# Determine the additional categories from the article's raw wikitext
 
# - each item in the CatList is: catname => [ add(true) | del(false) , sortkey ]
 
# - each item in the CatList is: catname => [ add(true) | del(false) , sortkey ]
 
function wfCategoryHookProcess(&$parser,&$text) {
 
function wfCategoryHookProcess(&$parser,&$text) {
        global $wgCategoryHookCatList,$wgTitle;
+
global $wgCategoryHookCatList,$wgTitle;
        $defaultSortKey = $wgTitle->getDBkey();
+
$defaultSortKey = $wgTitle->getDBkey();
 
 
        # Articles containing trees
 
        $wgCategoryHookCatList['Articles_containing_trees']
 
                = array(preg_match('/\\{\\{#tree:/i',$text),$defaultSortKey);
 
  
        return true;
+
# Articles containing trees
        }
+
$wgCategoryHookCatList['Articles_containing_trees']
 +
= array(preg_match('/\\{\\{#tree:/i',$text),$defaultSortKey);
  
# Add the categories
+
return true;
function wfCategoryHookAdd(&$parser,&$text) {
+
}
        global $wgCategoryHookCatList;
 
        foreach ($wgCategoryHookCatList as $dbkey => $item) {
 
                list($add,$sortkey) = $item;
 
                if ($add) $parser->mOutput->addCategory($dbkey,$sortkey);
 
                else unset($parser->mOutput->mCategories[$dbkey]);
 
                }
 
        return true;
 
        }
 
 
?>
 
?>

Revision as of 09:25, 18 April 2007

<?

  1. CategoryHook Extension
  2. - Adds a hook allowing articles to be added to additional categories based on wikitext content
  3. - Version 0.1 (2007-04-18)
  4. - See http://www.mediawiki.org/wiki/Extension:CategoryHook for installation and usage details
  5. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  6. - Author: http://www.organicdesign.co.nz/nad
  7. {{#security:*|dev}}{{#security:view|*}}Template:Php

$wgExtensionCredits['parserhook'][] = array( 'name' => 'CategoryHook', 'author' => 'User:Nad', 'url' => 'http://www.mediawiki.org/Extension:CategoryHook', );

  1. Only process if action is submit, no changes to categories otherwise

if ($_REQUEST['action'] == 'submit') { $wgCategoryHookCatList = array(); $wgHooks['ParserBeforeStrip'][] = 'wfCategoryHookProcess'; $wgHooks['ParserAfterTidy'][] = 'wfCategoryHookAdd'; }

  1. Add the categories

function wfCategoryHookAdd(&$parser,&$text) { global $wgCategoryHookCatList; foreach ($wgCategoryHookCatList as $dbkey => $item) { list($add,$sortkey) = $item; if ($add) $parser->mOutput->addCategory($dbkey,$sortkey); else unset($parser->mOutput->mCategories[$dbkey]); } return true; }

  1. Determine the additional categories from the article's raw wikitext
  2. - each item in the CatList is: catname => [ add(true) | del(false) , sortkey ]

function wfCategoryHookProcess(&$parser,&$text) { global $wgCategoryHookCatList,$wgTitle; $defaultSortKey = $wgTitle->getDBkey();

# Articles containing trees $wgCategoryHookCatList['Articles_containing_trees'] = array(preg_match('/\\{\\{#tree:/i',$text),$defaultSortKey);

return true; } ?>