* Remove manual query building in search mysql
[lhc/web/wiklou.git] / includes / Status.php
index 08f7484..372f8c6 100644 (file)
@@ -17,7 +17,9 @@ class Status {
        var $value;
 
        /** Counters for batch operations */
-       var $successCount = 0, $failCount = 0;
+       public $successCount = 0, $failCount = 0;
+       /** Array to indicate which items of the batch operations failed */
+       public $success = array();
 
        /*semi-private*/ var $errors = array();
        /*semi-private*/ var $cleanCallback = false;
@@ -235,7 +237,7 @@ class Status {
        /**
         * Merge another status object into this one
         *
-        * @param $other Other Status object
+        * @param $other Status Other Status object
         * @param $overwriteValue Boolean: whether to override the "value" member
         */
        function merge( $other, $overwriteValue = false ) {
@@ -254,7 +256,7 @@ class Status {
         * @return Array
         */
        function getErrorsArray() {
-               return $this->getStatArray( "error" );
+               return $this->getStatusArray( "error" );
        }
 
        /**
@@ -263,7 +265,7 @@ class Status {
         * @return Array
         */
        function getWarningsArray() {
-               return $this->getStatArray( "warning" );
+               return $this->getStatusArray( "warning" );
        }
 
        /**
@@ -272,19 +274,38 @@ class Status {
         *
         * @return Array
         */
-       protected function getStatArray( $type ) {
+       protected function getStatusArray( $type ) {
                $result = array();
                foreach ( $this->errors as $error ) {
                        if ( $error['type'] === $type ) {
                                if( $error['params'] ) {
                                        $result[] = array_merge( array( $error['message'] ), $error['params'] );
                                } else {
-                                       $result[] = $error['message'];
+                                       $result[] = array( $error['message'] );
                                }
                        }
                }
                return $result;
        }
+       
+       /**
+        * Returns a list of status messages of the given type, with message and
+        * params left untouched, like a sane version of getStatusArray
+        * 
+        * @param $type String
+        *
+        * @return Array
+        */
+       public function getErrorsByType( $type ) {
+               $result = array();
+               foreach ( $this->errors as $error ) {
+                       if ( $error['type'] === $type ) {
+                               $result[] = $error;
+                       }               
+               }
+               return $result;
+       }
+
        /**
         * Returns true if the specified message is present as a warning or error
         *
@@ -299,4 +320,30 @@ class Status {
                }
                return false;
        }
+
+       /**
+        * 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.
+        */
+       function replaceMessage( $source, $dest ) {
+               $replaced = false;
+               foreach ( $this->errors as $index => $error ) {
+                       if ( $error['message'] === $source ) {
+                               $this->errors[$index]['message'] = $dest;
+                               $replaced = true;
+                       }
+               }
+               return $replaced;
+       }
+
+       /**
+        * Backward compatibility function for WikiError -> Status migration
+        *
+        * @return String
+        */
+       public function getMessage() {
+               return $this->getWikiText();
+       }
 }