My version is as follows:
<?php
$wgExtensionFunctions[] = 'OriginalAuthorHooks';
function OriginalAuthorHooks() { global $wgHooks; $wgHooks['userCan'][] = 'OriginalAuthorHooks_UserCan'; }
function OriginalAuthorHooks_UserCan(&$title, &$user, $action, &$result) { if ($action === 'edit') { $article = new Article($title, 0); //this loads the most recent version of article $result = ($user->getID() == $article->getUser()) ? true : false; } }
?>
This will only allow editing by the user who edited the most recent revision. To use it, save it as "OriginalAuthorEdit.php" in your 'extensions' subdirectory inside the MediaWiki installation root. Then, insert "require_once('OriginalAuthorEdit.php')" near the bottom of LocalSettings.php
Gregory Szorc gregory.szorc@gmail.com
On 5/3/06, Christophe PROME chprome@yahoo.fr wrote:
Hello Erin,
I don't know if it will help but i've juste wrote something similar... My extension check if the user which wants to edit a page belonging to a special namespace is the same person who edited it in first.
Well the code speaks for himself (sorry for the french comments) :
<?PHP $wgExtensionFunctions[] = 'Wikinsa_Hooks'; function Wikinsa_Hooks() { global $wgHooks; $wgHooks['userCan'][] = 'verifDroitsUsers'; } function verifDroitsUsers(&$title, &$user, $action, &$result) { //-------------------------------------------------------- // // Vérifie si il s'agit d'une requête d'EDITION // et si l'utilisateur n'est pas un SYSOP // //-------------------------------------------------------- if($action == 'edit' && !$user->isSysop()) { // ------------------------ // // --- Page UTILISATEUR --- // // ------------------------ // if($title->getNamespace() == NS_USER) { // --- Compare les noms -- // if ($user->getName() != $title->getText() ) { $result = false; } } // --------------------------- // // --- Expérience de Stage --- // // --------------------------- // if ($title->getNamespace() == 100) { // --- connexion au SGBD --- // $dbw =& wfGetDB( DB_MASTER ); // --- titre de la page --- // $titre_page = $title->getText(); $titre_page = str_replace(" ","_", $titre_page); // --- les tables de la base --- // $table_1 = $dbw->tableName( 'page' ); $table_2 = $dbw->tableName( 'revision' ); // --- 1ère requête : id de la page --- // $res1 = $dbw->query("SELECT page_id FROM $table_1 WHERE page_title=\"$titre_page\";"); $ligne = mysql_fetch_row($res1); $id_page = $ligne[0]; // ---- 2ème requête : nom de l'utilisateur ---/ $res2 = $dbw->query("SELECT rev_user_text FROM $table_2 WHERE rev_page = \"$id_page\" LIMIT 1;"); $ligne = mysql_fetch_row($res2); $nom_user = $ligne[0]; // --- Compare le nom du créateur et du visiteur --- / if($user->getName() != $nom_user && $nom_user != null) $result = false; } } } ?>
Christophe
MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l