[Mediawiki-l] Limit editing to original author

Erin Spiceland erin at spiceland.org
Wed May 3 18:13:34 UTC 2006


Hi! Thanks for posting this! I'm not familiar at all with extensions in
mediawiki... How do I use this code? Also, does it actually prevent
users who didn't create the page from editing it?

Thanks,

Erin


On Wed, 2006-05-03 at 19:24 +0200, Christophe PROME 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 at Wikimedia.org
> http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
> 
> 




More information about the MediaWiki-l mailing list