Provide Status::__toString()
authorsaper <saper@saper.info>
Tue, 26 Aug 2014 20:10:16 +0000 (22:10 +0200)
committersaper <saper@saper.info>
Tue, 11 Nov 2014 22:16:34 +0000 (23:16 +0100)
maintenance/eval.php is much easier to use now,
you can just print $statusInstance;

Change-Id: I068b0f54b16d618a1f6115133632885e8e45e897

includes/Status.php

index 0a8062c..265eae1 100644 (file)
@@ -369,14 +369,14 @@ class Status {
        }
 
        /**
-        * Returns a list of status messages of the given type
+        * Returns a list of status messages of the given type (or all if false)
         * @param string $type
         * @return array
         */
-       protected function getStatusArray( $type ) {
+       protected function getStatusArray( $type = false ) {
                $result = array();
                foreach ( $this->errors as $error ) {
-                       if ( $error['type'] === $type ) {
+                       if ( $type === false || $error['type'] === $type ) {
                                if ( $error['message'] instanceof Message ) {
                                        $result[] = array_merge(
                                                array( $error['message']->getKey() ),
@@ -462,4 +462,45 @@ class Status {
        public function getValue() {
                return $this->value;
        }
+
+       /**
+        * @return string
+        */
+       public function __toString() {
+               $status = $this->isOK() ? "OK" : "Error";
+               if ( count( $this->errors ) ) {
+                       $errorcount = "collected " . ( count($this->errors) ) . " error(s) on the way";
+               } else {
+                       $errorcount = "no errors detected";
+               }
+               if ( isset( $this->value ) ) {
+                       $valstr = gettype( $this->value ) . " value set";
+                       if ( is_object( $this->value ) ) {
+                               $valstr .= "\"" . get_class( $this->value ) . "\" instance";
+                       }
+               } else {
+                       $valstr = "no value set";
+               }
+               $out = sprintf( "<%s, %s, %s>",
+                       $status,
+                       $errorcount,
+                       $valstr
+               );
+               if ( count ($this->errors ) > 0 ) {
+                       $hdr = sprintf( "+-%'-4s-+-%'-25s-+-%'-40s-+\n", "", "", "" );
+                       $i = 1;
+                       $out .= "\n";
+                       $out .= $hdr;
+                       foreach( $this->getStatusArray() as $stat ) {
+                               $out .= sprintf( "| %4d | %-25.25s | %-40.40s |\n",
+                                       $i,
+                                       $stat[0],
+                                       implode(" ", array_slice( $stat, 1 ) )
+                               );
+                               $i += 1;
+                       }
+                       $out .= $hdr;
+               };
+               return $out;
+       }
 }