From 370e83bb0dfd0c70de268c93bf07ad5ee0897192 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 15 Aug 2008 01:29:47 +0200 Subject: Update auf 1.13.0 --- includes/Status.php | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 includes/Status.php (limited to 'includes/Status.php') diff --git a/includes/Status.php b/includes/Status.php new file mode 100644 index 00000000..185ea6e5 --- /dev/null +++ b/includes/Status.php @@ -0,0 +1,194 @@ +ok = false; + return $result; + } + + static function newGood( $value = null ) { + $result = new self; + $result->value = $value; + return $result; + } + + function setResult( $ok, $value = null ) { + $this->ok = $ok; + $this->value = $value; + } + + function isGood() { + return $this->ok && !$this->errors; + } + + function isOK() { + return $this->ok; + } + + function warning( $message /*, parameters... */ ) { + $params = array_slice( func_get_args(), 1 ); + $this->errors[] = array( + 'type' => 'warning', + 'message' => $message, + 'params' => $params ); + } + + /** + * Add an error, do not set fatal flag + * This can be used for non-fatal errors + */ + function error( $message /*, parameters... */ ) { + $params = array_slice( func_get_args(), 1 ); + $this->errors[] = array( + 'type' => 'error', + 'message' => $message, + 'params' => $params ); + } + + /** + * Add an error and set OK to false, indicating that the operation as a whole was fatal + */ + function fatal( $message /*, parameters... */ ) { + $params = array_slice( func_get_args(), 1 ); + $this->errors[] = array( + 'type' => 'error', + 'message' => $message, + 'params' => $params ); + $this->ok = false; + } + + protected function cleanParams( $params ) { + if ( !$this->cleanCallback ) { + return $params; + } + $cleanParams = array(); + foreach ( $params as $i => $param ) { + $cleanParams[$i] = call_user_func( $this->cleanCallback, $param ); + } + return $cleanParams; + } + + protected function getItemXML( $item ) { + $params = $this->cleanParams( $item['params'] ); + $xml = "<{$item['type']}>\n" . + Xml::element( 'message', null, $item['message'] ) . "\n" . + Xml::element( 'text', null, wfMsgReal( $item['message'], $params ) ) ."\n"; + foreach ( $params as $param ) { + $xml .= Xml::element( 'param', null, $param ); + } + $xml .= "type}>\n"; + return $xml; + } + + /** + * Get the error list as XML + */ + function getXML() { + $xml = "\n"; + foreach ( $this->errors as $error ) { + $xml .= $this->getItemXML( $error ); + } + $xml .= "\n"; + return $xml; + } + + /** + * Get the error list as a wikitext formatted list + * @param string $shortContext A short enclosing context message name, to be used + * when there is a single error + * @param string $longContext A long enclosing context message name, for a list + */ + function getWikiText( $shortContext = false, $longContext = false ) { + if ( count( $this->errors ) == 0 ) { + if ( $this->ok ) { + $this->fatal( 'internalerror_info', + __METHOD__." called for a good result, this is incorrect\n" ); + } else { + $this->fatal( 'internalerror_info', + __METHOD__.": Invalid result object: no error text but not OK\n" ); + } + } + if ( count( $this->errors ) == 1 ) { + $params = array_map( 'wfEscapeWikiText', $this->cleanParams( $this->errors[0]['params'] ) ); + $s = wfMsgReal( $this->errors[0]['message'], $params, true, false, false ); + if ( $shortContext ) { + $s = wfMsgNoTrans( $shortContext, $s ); + } elseif ( $longContext ) { + $s = wfMsgNoTrans( $longContext, "* $s\n" ); + } + } else { + $s = ''; + foreach ( $this->errors as $error ) { + $params = array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) ); + $s .= '* ' . wfMsgReal( $error['message'], $params, true, false, false ) . "\n"; + } + if ( $longContext ) { + $s = wfMsgNoTrans( $longContext, $s ); + } elseif ( $shortContext ) { + $s = wfMsgNoTrans( $shortContext, "\n* $s\n" ); + } + } + return $s; + } + + /** + * Merge another status object into this one + */ + function merge( $other, $overwriteValue = false ) { + $this->errors = array_merge( $this->errors, $other->errors ); + $this->ok = $this->ok && $other->ok; + if ( $overwriteValue ) { + $this->value = $other->value; + } + $this->successCount += $other->successCount; + $this->failCount += $other->failCount; + } + + function getErrorsArray() { + $result = array(); + foreach ( $this->errors as $error ) { + if ( $error['type'] == 'error' ) + $result[] = $error['message']; + } + return $result; + } + + /** + * Returns true if the specified message is present as a warning or error + */ + function hasMessage( $msg ) { + foreach ( $this->errors as $error ) { + if ( $error['message'] === $msg ) { + return true; + } + } + return false; + } +} -- cgit v1.2.3-54-g00ecf