Revert r46880, r46902. After issues with editing rights for pages in r46880, there...
authorSiebrand Mazeland <siebrand@users.mediawiki.org>
Fri, 6 Feb 2009 12:27:16 +0000 (12:27 +0000)
committerSiebrand Mazeland <siebrand@users.mediawiki.org>
Fri, 6 Feb 2009 12:27:16 +0000 (12:27 +0000)
includes/Title.php

index 845c3a5..7098510 100644 (file)
@@ -1166,49 +1166,6 @@ class Title {
 
                $errors = array();
 
-               // First stop is permissions checks, which fail most often, and which are easiest to test.
-               if ( $action == 'move' ) {
-                       if( !$user->isAllowed( 'move-rootuserpages' )
-                                       && $this->getNamespace() == NS_USER && !$this->isSubpage() )
-                       {
-                               // Show user page-specific message only if the user can move other pages
-                               $errors[] = array( 'cant-move-user-page' );
-                       }
-                       
-                       // Check if user is allowed to move files if it's a file
-                       if( $this->getNamespace() == NS_FILE && !$user->isAllowed( 'movefile' ) ) {
-                               $errors[] = array( 'movenotallowedfile' );
-                       }
-                       
-                       if( !$user->isAllowed( 'move' ) ) {
-                               // User can't move anything
-                               $errors[] = $user->isAnon() ? array ( 'movenologintext' ) : array ('movenotallowed');
-                       }
-               } elseif ( $action == 'create' ) {
-                       if( ( $this->isTalkPage() && !$user->isAllowed( 'createtalk' ) ) ||
-                               ( !$this->isTalkPage() && !$user->isAllowed( 'createpage' ) ) )
-                       {
-                               $errors[] = $user->isAnon() ? array ('nocreatetext') : array ('nocreate-loggedin');
-                       }
-               } elseif( !$user->isAllowed( $action ) ) {
-                       $return = null;
-                       $groups = array_map( array( 'User', 'makeGroupLinkWiki' ),
-                               User::getGroupsWithPermission( $action ) );
-                       if( $groups ) {
-                               $return = array( 'badaccess-groups',
-                                       array( implode( ', ', $groups ), count( $groups ) ) );
-                       } else {
-                               $return = array( "badaccess-group0" );
-                       }
-                       $errors[] = $return;
-               }
-
-               # Short-circuit point
-               if( $short && count($errors) > 0 ) {
-                       wfProfileOut( __METHOD__ );
-                       return $errors;
-               }
-
                // Use getUserPermissionsErrors instead
                if( !wfRunHooks( 'userCan', array( &$this, &$user, $action, &$result ) ) ) {
                        wfProfileOut( __METHOD__ );
@@ -1339,7 +1296,26 @@ class Title {
                                        $errors[] = array( 'titleprotected', User::whoIs($pt_user), $pt_reason );
                                }
                        }
+
+                       if( ( $this->isTalkPage() && !$user->isAllowed( 'createtalk' ) ) ||
+                               ( !$this->isTalkPage() && !$user->isAllowed( 'createpage' ) ) ) 
+                       {
+                               $errors[] = $user->isAnon() ? array ('nocreatetext') : array ('nocreate-loggedin');
+                       }
                } elseif( $action == 'move' ) {
+                       if( !$user->isAllowed( 'move' ) ) {
+                               // User can't move anything
+                               $errors[] = $user->isAnon() ? array ( 'movenologintext' ) : array ('movenotallowed');
+                       } elseif( !$user->isAllowed( 'move-rootuserpages' ) 
+                                       && $this->getNamespace() == NS_USER && !$this->isSubpage() ) 
+                       {
+                               // Show user page-specific message only if the user can move other pages
+                               $errors[] = array( 'cant-move-user-page' );
+                       }
+                       // Check if user is allowed to move files if it's a file
+                       if( $this->getNamespace() == NS_FILE && !$user->isAllowed( 'movefile' ) ) {
+                               $errors[] = array( 'movenotallowedfile' );
+                       }
                        // Check for immobile pages
                        if( !MWNamespace::isMovable( $this->getNamespace() ) ) {
                                // Specific message for this case
@@ -1363,6 +1339,17 @@ class Title {
                        } elseif( !$this->isMovable() ) {
                                $errors[] = array( 'immobile-target-page' );
                        }
+               } elseif( !$user->isAllowed( $action ) ) {
+                       $return = null;
+                       $groups = array_map( array( 'User', 'makeGroupLinkWiki' ),
+                               User::getGroupsWithPermission( $action ) );
+                       if( $groups ) {
+                               $return = array( 'badaccess-groups',
+                                       array( implode( ', ', $groups ), count( $groups ) ) );
+                       } else {
+                               $return = array( "badaccess-group0" );
+                       }
+                       $errors[] = $return;
                }
 
                wfProfileOut( __METHOD__ );