X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Flibs%2FStatusValue.php;h=e860ec491fff21fd003d3b311405764cf67c079c;hb=28b341ac3171f297d69c4791bbe1654ce1eebab7;hp=10d4c7135be9694e6fea39b49062b59671b4c163;hpb=671dad44894c8a6746c5ab3cba6b8c0e37e13afc;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/StatusValue.php b/includes/libs/StatusValue.php index 10d4c7135b..e860ec491f 100644 --- a/includes/libs/StatusValue.php +++ b/includes/libs/StatusValue.php @@ -58,7 +58,7 @@ class StatusValue { * Factory function for fatal errors * * @param string|MessageSpecifier $message Message key or object - * @return StatusValue + * @return static */ public static function newFatal( $message /*, parameters...*/ ) { $params = func_get_args(); @@ -71,7 +71,7 @@ class StatusValue { * Factory function for good results * * @param mixed $value - * @return StatusValue + * @return static */ public static function newGood( $value = null ) { $result = new static(); @@ -79,6 +79,34 @@ class StatusValue { return $result; } + /** + * Splits this StatusValue object into two new StatusValue objects, one which contains only + * the error messages, and one that contains the warnings, only. The returned array is + * defined as: + * [ + * 0 => object(StatusValue) # the StatusValue with error messages, only + * 1 => object(StatusValue) # The StatusValue with warning messages, only + * ] + * + * @return StatusValue[] + */ + public function splitByErrorType() { + $errorsOnlyStatusValue = clone $this; + $warningsOnlyStatusValue = clone $this; + $warningsOnlyStatusValue->ok = true; + + $errorsOnlyStatusValue->errors = $warningsOnlyStatusValue->errors = []; + foreach ( $this->errors as $item ) { + if ( $item['type'] === 'warning' ) { + $warningsOnlyStatusValue->errors[] = $item; + } else { + $errorsOnlyStatusValue->errors[] = $item; + } + }; + + return [ $errorsOnlyStatusValue, $warningsOnlyStatusValue ]; + } + /** * Returns whether the operation completed and didn't have any error or * warnings @@ -126,13 +154,13 @@ class StatusValue { } /** - * Change operation resuklt + * Change operation result * * @param bool $ok Whether the operation completed * @param mixed $value */ public function setResult( $ok, $value = null ) { - $this->ok = $ok; + $this->ok = (bool)$ok; $this->value = $value; } @@ -197,7 +225,9 @@ class StatusValue { /** * Returns a list of status messages of the given type * - * Each entry is a map of (message:string or MessageSpecifier,params:array)) + * Each entry is a map of: + * - message: string message key or MessageSpecifier + * - params: array list of parameters * * @param string $type * @return array @@ -244,8 +274,8 @@ class StatusValue { * Note, due to the lack of tools for comparing IStatusMessage objects, this * function will not work when using such an object as the search parameter. * - * @param IStatusMessage|string $source Message key or object to search for - * @param IStatusMessage|string $dest Replacement message key or object + * @param MessageSpecifier|string $source Message key or object to search for + * @param MessageSpecifier|string $dest Replacement message key or object * @return bool Return true if the replacement was done, false otherwise. */ public function replaceMessage( $source, $dest ) {