Merge "Title: Add warning if newFromText is given non-string/non-null value"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 5 Nov 2015 22:08:35 +0000 (22:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 5 Nov 2015 22:08:35 +0000 (22:08 +0000)
1  2 
includes/Title.php

diff --combined includes/Title.php
@@@ -252,7 -252,7 +252,7 @@@ class Title 
         * Create a new Title from text, such as what one would find in a link. De-
         * codes any HTML entities in the text.
         *
-        * @param string $text The link text; spaces, prefixes, and an
+        * @param string|null $text The link text; spaces, prefixes, and an
         *   initial ':' indicating the main namespace are accepted.
         * @param int $defaultNamespace The namespace to use if none is specified
         *   by a prefix.  If you want to force a specific namespace even if
        public static function newFromText( $text, $defaultNamespace = NS_MAIN ) {
                if ( is_object( $text ) ) {
                        throw new InvalidArgumentException( '$text must be a string.' );
-               } elseif ( !is_string( $text ) ) {
+               }
+               if ( $text !== null && !is_string( $text ) ) {
                        wfDebugLog( 'T76305', wfGetAllCallers( 5 ) );
-                       wfWarn(
-                               __METHOD__ . ': $text must be a string. ' .
-                                       'This will throw an InvalidArgumentException in future.',
-                               2
-                       );
+                       return null;
+               }
+               if ( $text === null ) {
+                       return null;
                }
  
                try {
         */
        public static function newFromTextThrow( $text, $defaultNamespace = NS_MAIN ) {
                if ( is_object( $text ) ) {
-                       throw new MWException( 'Title::newFromTextThrow given an object' );
+                       throw new MWException( '$text must be a string, given an object' );
                }
  
                $cache = self::getTitleCache();
         *   - secure : does cheap and expensive checks, using the master as needed
         * @param array $ignoreErrors Array of Strings Set this to a list of message keys
         *   whose corresponding errors may be ignored.
 -       * @return array Array of arguments to wfMessage to explain permissions problems.
 +       * @return array Array of arrays of the arguments to wfMessage to explain permissions problems.
         */
        public function getUserPermissionsErrors(
                $action, $user, $rigor = 'secure', $ignoreErrors = array()
  
                // Remove the errors being ignored.
                foreach ( $errors as $index => $error ) {
 -                      $error_key = is_array( $error ) ? $error[0] : $error;
 +                      $errKey = is_array( $error ) ? $error[0] : $error;
  
 -                      if ( in_array( $error_key, $ignoreErrors ) ) {
 +                      if ( in_array( $errKey, $ignoreErrors ) ) {
 +                              unset( $errors[$index] );
 +                      }
 +                      if ( $errKey instanceof MessageSpecifier && in_array( $errKey->getKey(), $ignoreErrors ) ) {
                                unset( $errors[$index] );
                        }
                }
                } elseif ( $result !== '' && is_string( $result ) ) {
                        // A string representing a message-id
                        $errors[] = array( $result );
 +              } elseif ( $result instanceof MessageSpecifier ) {
 +                      // A message specifier representing an error
 +                      $errors[] = array( $result );
                } elseif ( $result === false ) {
                        // a generic "We don't want them to do that"
                        $errors[] = array( 'badaccess-group0' );