X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Flibs%2FStatusValue.php;h=bff9abd61f47e5d52d5da705d9687a28619dee8e;hp=1d23f9d368a79d1fd08988ced53e0b35093fbc70;hb=f43fa6f4f0e2cb60b8543daad661b48a3e0653a9;hpb=47e2941bcda6b30ca2fca2c34e4f7dfba9d06647 diff --git a/includes/libs/StatusValue.php b/includes/libs/StatusValue.php index 1d23f9d368..bff9abd61f 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 array + */ + 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 @@ -246,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 ) {