Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

Benutzer:Rene/UserPageEditProtection: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Code: Fehler - Variable nicht global gemacht
Weiterleitung nach Benutzer:Rene/SGPack erstellt
 
Zeile 1: Zeile 1:
Die Erweiterung UserPageEditProtection schränkt die Schreibrechte der Benutzerseiten auf den Benutzer und die Gruppe der Sysop's ein. Eine genaue Beschreibung findet man auf der [http://www.mediawiki.org/wiki/Extension:UserPageEditProtection Homepage der Erweiterung].
#redirect [[Benutzer:Rene/SGPack]]
 
==Stargate Wiki Version==
Die in Stargate Wiki eingesetzte Version von UserPageEditProtection bietet zusätzlich die Möglichkeit nur die eigentliche Benutzerseite zu schützen, Unterseiten des Benutzers aber nicht. Damit besteht die Möglichkeit das Benutzer gemeinsam an Projekten im Namensraum eines Benutzers arbeiten.
 
Gesteuert wird dies über den Parameter
  <code>$wgOnlyUserEditUserPageStrict = true;</code>
Wird dieser in LocalSetting.php gesetzt so ist nur die eigentliche Benutzerseite geschützt. Der Parameter überschreibt dabei den eventuell gesetzten Parameter  <code>$wgOnlyUserEditUserPage</code>.
==Code==
<pre>
<?php
if(! defined( 'MEDIAWIKI' ) ) {
  echo( "This is an extension to the MediaWiki package and cannot be run standalone.\n" );
  die( -1 );
} else {
/**
* Extension: UserPageEditProtection.php
* Created: 6 December 2007
* Author: Lisa Ridley, Eric Gingell, Rene Raule
* Version: 2.0/sgw
* Copyright (C) 2007 Lisa Ridley
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You can find a copy of the GNU General Public License at http://www.gnu.org/copyleft/gpl.html
* A paper copy can be obtained by writing to:  Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* User Page Edit Protection
*
* Provides User Page Edit Protection to limit user page edits to User and to sysops.
*
*
* Usage:
* Save this file in your extensions folder of your MediaWiki installation.  Add the following to LocalSettings.php:
*    //turn on user page protection
*    $wgOnlyUserEditUserPage = true;
*    //turn on ONLY user page protection, subpages are not protected
*    $wgOnlyUserEditUserPageStrict = true;
*    //allow sysops to edit user pages by adding the following setting
*    $wgGroupPermissions['sysop']['editalluserpages'] = true;
*    require_once('extensions/UserPageEditProtection.php');
**/
global $wgHooks;
/* use the userCan hook to check user page edit permissions */
  $wgHooks[ 'userCan' ][] = 'fnUserPageEditProtection';
/* register extension */
$wgExtensionCredits['other'][] = array(
  'name' => 'UserPageEditProtection',
  'author' => 'Lisa Ridley, Eric Gingell, Rene Raule',
  'version' => '2.0/sgw',
  'url' => 'http://www.stargate-wiki.de/index.php/Benutzer:Rene/UserPageEditProtection',
  'description' => 'This Extension restricts editing on user pages to User and allowed editors');
function fnUserPageEditProtection( $title, $user, $action, &$result )
{
    global $wgOnlyUserEditUserPage;
    global $wgOnlyUserEditUserPageStrict;
    $lTitle = explode('/', $title->getText());
    if (!($action == 'edit'||$action == 'move')) {
            $result = null;
            return true;
        }
    if (NS_USER !== $title->mNamespace) {
            $result = null;
            return true;
    }
    if ($wgOnlyUserEditUserPageStrict) {
        if ($user->isAllowed('editalluserpages') || ($lTitle[0] == $user->getname()) || (count($lTitle) == 1)) {
            $result = null;
            return true;
        } else {
            $result = false;
            return false;
        }
    }
    if ($wgOnlyUserEditUserPage) {
        if ($user->isAllowed('editalluserpages') || ($lTitle[0] == $user->getname())) {
            $result = null;
            return true;
        } else {
            $result = false;
            return false;
        }
    }
    $result = null;
    return true;
}
}
</pre>