From: Tyler Anthony Romeo Date: Tue, 7 Aug 2012 17:03:55 +0000 (-0400) Subject: Changed Status class to allow passing of Message objects. X-Git-Tag: 1.31.0-rc.0~21490 X-Git-Url: http://git.cyclocoop.org/%22.%24image2.%22?a=commitdiff_plain;h=444dc790342e3b009ad584fbf9f461e2898a4078;p=lhc%2Fweb%2Fwiklou.git Changed Status class to allow passing of Message objects. Adjusted internal Status functions so that a Message object can be passed as an error message instead of just a string. Also removed deprecated message functions in the process. Change-Id: Icb4b5edeb25190f0aba4f3096a9ea94f22c27bda Signed-off-by: Tyler Romeo --- diff --git a/includes/Status.php b/includes/Status.php index 763c95cd2c..2553f54074 100644 --- a/includes/Status.php +++ b/includes/Status.php @@ -47,7 +47,7 @@ class Status { /** * Factory function for fatal errors * - * @param $message String: message name + * @param $message String|Message: message name or object * @return Status */ static function newFatal( $message /*, parameters...*/ ) { @@ -103,7 +103,7 @@ class Status { /** * Add a new warning * - * @param $message String: message name + * @param $message String|Message: message name or object */ function warning( $message /*, parameters... */ ) { $params = array_slice( func_get_args(), 1 ); @@ -117,7 +117,7 @@ class Status { * Add an error, do not set fatal flag * This can be used for non-fatal errors * - * @param $message String: message name + * @param $message String|Message: message name or object */ function error( $message /*, parameters... */ ) { $params = array_slice( func_get_args(), 1 ); @@ -131,7 +131,7 @@ class Status { * Add an error and set OK to false, indicating that the operation * as a whole was fatal * - * @param $message String: message name + * @param $message String|Message: message name or object */ function fatal( $message /*, parameters... */ ) { $params = array_slice( func_get_args(), 1 ); @@ -183,7 +183,7 @@ class Status { } } if ( count( $this->errors ) == 1 ) { - $s = $this->getWikiTextForError( $this->errors[0], $this->errors[0] ); + $s = $this->getErrorMessage( $this->errors[0] ); if ( $shortContext ) { $s = wfMessage( $shortContext, $s )->plain(); } elseif ( $longContext ) { @@ -191,7 +191,7 @@ class Status { } } else { $s = '* '. implode("\n* ", - $this->getWikiTextArray( $this->errors ) ) . "\n"; + $this->getErrorMessageArray( $this->errors ) ) . "\n"; if ( $longContext ) { $s = wfMessage( $longContext, $s )->plain(); } elseif ( $shortContext ) { @@ -202,7 +202,7 @@ class Status { } /** - * Return the wiki text for a single error. + * Return the message for a single error. * @param $error Mixed With an array & two values keyed by * 'message' and 'params', use those keys-value pairs. * Otherwise, if its an array, just use the first value as the @@ -210,19 +210,22 @@ class Status { * * @return String */ - protected function getWikiTextForError( $error ) { + protected function getErrorMessage( $error ) { if ( is_array( $error ) ) { - if ( isset( $error['message'] ) && isset( $error['params'] ) ) { - return wfMessage( $error['message'], - array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) ) )->plain(); + if( isset( $error['message'] ) && $error['message'] instanceof Message ) { + $msg = $error['message']; + } elseif ( isset( $error['message'] ) && isset( $error['params'] ) ) { + $msg = wfMessage( $error['message'], + array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) ) ); } else { - $message = array_shift($error); - return wfMessage( $message, - array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ) )->plain(); + $msgName = array_shift( $error ); + $msg = wfMessage( $msgName, + array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ) ); } } else { - return wfMessage( $error )->plain(); + $msg = wfMessage( $error ); } + return $msg->plain(); } /** @@ -239,8 +242,8 @@ class Status { * @param $errors Array * @return Array */ - function getWikiTextArray( $errors ) { - return array_map( array( $this, 'getWikiTextForError' ), $errors ); + protected function getErrorMessageArray( $errors ) { + return array_map( array( $this, 'getErrorMessage' ), $errors ); } /** @@ -287,7 +290,9 @@ class Status { $result = array(); foreach ( $this->errors as $error ) { if ( $error['type'] === $type ) { - if( $error['params'] ) { + if( $error['message'] instanceof Message ) { + $result[] = $error['message']; + } elseif( $error['params'] ) { $result[] = array_merge( array( $error['message'] ), $error['params'] ); } else { $result[] = array( $error['message'] ); @@ -318,6 +323,9 @@ class Status { /** * Returns true if the specified message is present as a warning or error * + * Note, due to the lack of tools for comparing Message objects, this + * function will not work when using a Message object as a parameter. + * * @param $msg String: message name * @return Boolean */ @@ -334,9 +342,12 @@ class Status { * If the specified source message exists, replace it with the specified * destination message, but keep the same parameters as in the original error. * - * Return true if the replacement was done, false otherwise. + * Note, due to the lack of tools for comparing Message objects, this + * function will not work when using a Message object as the search parameter. * - * @return bool + * @param $source Message|String: Message key or object to search for + * @param $dest Message|String: Replacement message key or object + * @return bool Return true if the replacement was done, false otherwise. */ function replaceMessage( $source, $dest ) { $replaced = false;