<?php
/**
* Special page to assist creating numbered KB articles - present page with next-higher number in namespace 'KB'
* Make sure you add the namespace first! E.g. add this to LocalSettings.php:
* $wgExtraNamespaces[100] = "KB";
* $wgContentNamespaces[] = 100;
* For more info see http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces
*
* To install, place the file into your extensions directory and add this line to LocalSettings.php:
* require_once("extensions/SpecialKB.php");
*
* Author: Barry Brannan
* Date: August 2007
* Released into public domain.
*
*/
define('KB_PAD_LENGTH', 5); // pad numbers eg 00013 instead of 13 - set to 0 for no padding
define('KB_NAMESPACE', 'KB'); // change to different namespace if you like
if( defined( 'MEDIAWIKI' ) ) {
require_once( 'SpecialPage.php' );
$wgExtensionFunctions[] = 'efKBExtn';
$wgExtensionCredits['specialpage'][] = array(
'name' => 'Knowledgebase',
'author' => 'Barrylb',
'url' => 'http://www.mediawiki.org/wiki/Extension:Knowledgebase',
'description' => 'Create next-higher integer article number in namespace KB' );
function efKBExtn() {
global $wgMessageCache;
SpecialPage::addPage( new KnowledgeBaseExtn() );
$wgMessageCache->addMessage( 'knowledgebase', 'Add Knowledge Base Article' );
}
class KnowledgeBaseExtn extends IncludableSpecialPage {
function KnowledgeBaseExtn() {
SpecialPage::SpecialPage( 'Knowledgebase', '', true, false, 'default', true );
}
function execute( $par ) {
global $wgOut, $wgContLang;
$ns_id = $wgContLang->getNsIndex( constant('KB_NAMESPACE') );
if ($ns_id == '')
$ns_id = NS_MAIN;
$dbr = wfGetDB( DB_SLAVE );
$page = $dbr->tableName( 'page' );
$sql = "SELECT max(cast(page_title as unsigned))+1 page_title
FROM $page
WHERE page_namespace = $ns_id";
$res = $dbr->query( $sql );
$row = $dbr->fetchObject( $res );
if ($row->page_title == '') // nothing returned, create starting with number 1
$title_text = '1';
else
$title_text = $row->page_title;
$title_text = str_pad($title_text, constant('KB_PAD_LENGTH'), '0', STR_PAD_LEFT);
$title = Title::makeTitleSafe( $ns_id, $title_text );
$wgOut->redirect( $title->getFullUrl() );
}
}
} else {
echo( "This is an extension to the MediaWiki package and cannot be run standalone.\n" );
die( -1 );
}