wp/wp-includes/class-wp-error.php
changeset 9 177826044cd9
parent 7 cf61fcea0001
child 16 a86126ab1dd4
equal deleted inserted replaced
8:c7c34916027a 9:177826044cd9
    50 	 * @param string|int $code Error code
    50 	 * @param string|int $code Error code
    51 	 * @param string $message Error message
    51 	 * @param string $message Error message
    52 	 * @param mixed $data Optional. Error data.
    52 	 * @param mixed $data Optional. Error data.
    53 	 */
    53 	 */
    54 	public function __construct( $code = '', $message = '', $data = '' ) {
    54 	public function __construct( $code = '', $message = '', $data = '' ) {
    55 		if ( empty($code) )
    55 		if ( empty( $code ) ) {
    56 			return;
    56 			return;
    57 
    57 		}
    58 		$this->errors[$code][] = $message;
    58 
    59 
    59 		$this->errors[ $code ][] = $message;
    60 		if ( ! empty($data) )
    60 
    61 			$this->error_data[$code] = $data;
    61 		if ( ! empty( $data ) ) {
       
    62 			$this->error_data[ $code ] = $data;
       
    63 		}
    62 	}
    64 	}
    63 
    65 
    64 	/**
    66 	/**
    65 	 * Retrieve all error codes.
    67 	 * Retrieve all error codes.
    66 	 *
    68 	 *
    67 	 * @since 2.1.0
    69 	 * @since 2.1.0
    68 	 *
    70 	 *
    69 	 * @return array List of error codes, if available.
    71 	 * @return array List of error codes, if available.
    70 	 */
    72 	 */
    71 	public function get_error_codes() {
    73 	public function get_error_codes() {
    72 		if ( empty($this->errors) )
    74 		if ( ! $this->has_errors() ) {
    73 			return array();
    75 			return array();
    74 
    76 		}
    75 		return array_keys($this->errors);
    77 
       
    78 		return array_keys( $this->errors );
    76 	}
    79 	}
    77 
    80 
    78 	/**
    81 	/**
    79 	 * Retrieve first error code available.
    82 	 * Retrieve first error code available.
    80 	 *
    83 	 *
    83 	 * @return string|int Empty string, if no error codes.
    86 	 * @return string|int Empty string, if no error codes.
    84 	 */
    87 	 */
    85 	public function get_error_code() {
    88 	public function get_error_code() {
    86 		$codes = $this->get_error_codes();
    89 		$codes = $this->get_error_codes();
    87 
    90 
    88 		if ( empty($codes) )
    91 		if ( empty( $codes ) ) {
    89 			return '';
    92 			return '';
       
    93 		}
    90 
    94 
    91 		return $codes[0];
    95 		return $codes[0];
    92 	}
    96 	}
    93 
    97 
    94 	/**
    98 	/**
    97 	 * @since 2.1.0
   101 	 * @since 2.1.0
    98 	 *
   102 	 *
    99 	 * @param string|int $code Optional. Retrieve messages matching code, if exists.
   103 	 * @param string|int $code Optional. Retrieve messages matching code, if exists.
   100 	 * @return array Error strings on success, or empty array on failure (if using code parameter).
   104 	 * @return array Error strings on success, or empty array on failure (if using code parameter).
   101 	 */
   105 	 */
   102 	public function get_error_messages($code = '') {
   106 	public function get_error_messages( $code = '' ) {
   103 		// Return all messages if no code specified.
   107 		// Return all messages if no code specified.
   104 		if ( empty($code) ) {
   108 		if ( empty( $code ) ) {
   105 			$all_messages = array();
   109 			$all_messages = array();
   106 			foreach ( (array) $this->errors as $code => $messages )
   110 			foreach ( (array) $this->errors as $code => $messages ) {
   107 				$all_messages = array_merge($all_messages, $messages);
   111 				$all_messages = array_merge( $all_messages, $messages );
       
   112 			}
   108 
   113 
   109 			return $all_messages;
   114 			return $all_messages;
   110 		}
   115 		}
   111 
   116 
   112 		if ( isset($this->errors[$code]) )
   117 		if ( isset( $this->errors[ $code ] ) ) {
   113 			return $this->errors[$code];
   118 			return $this->errors[ $code ];
   114 		else
   119 		} else {
   115 			return array();
   120 			return array();
       
   121 		}
   116 	}
   122 	}
   117 
   123 
   118 	/**
   124 	/**
   119 	 * Get single error message.
   125 	 * Get single error message.
   120 	 *
   126 	 *
   124 	 * @since 2.1.0
   130 	 * @since 2.1.0
   125 	 *
   131 	 *
   126 	 * @param string|int $code Optional. Error code to retrieve message.
   132 	 * @param string|int $code Optional. Error code to retrieve message.
   127 	 * @return string
   133 	 * @return string
   128 	 */
   134 	 */
   129 	public function get_error_message($code = '') {
   135 	public function get_error_message( $code = '' ) {
   130 		if ( empty($code) )
   136 		if ( empty( $code ) ) {
   131 			$code = $this->get_error_code();
   137 			$code = $this->get_error_code();
   132 		$messages = $this->get_error_messages($code);
   138 		}
   133 		if ( empty($messages) )
   139 		$messages = $this->get_error_messages( $code );
       
   140 		if ( empty( $messages ) ) {
   134 			return '';
   141 			return '';
       
   142 		}
   135 		return $messages[0];
   143 		return $messages[0];
   136 	}
   144 	}
   137 
   145 
   138 	/**
   146 	/**
   139 	 * Retrieve error data for error code.
   147 	 * Retrieve error data for error code.
   141 	 * @since 2.1.0
   149 	 * @since 2.1.0
   142 	 *
   150 	 *
   143 	 * @param string|int $code Optional. Error code.
   151 	 * @param string|int $code Optional. Error code.
   144 	 * @return mixed Error data, if it exists.
   152 	 * @return mixed Error data, if it exists.
   145 	 */
   153 	 */
   146 	public function get_error_data($code = '') {
   154 	public function get_error_data( $code = '' ) {
   147 		if ( empty($code) )
   155 		if ( empty( $code ) ) {
   148 			$code = $this->get_error_code();
   156 			$code = $this->get_error_code();
   149 
   157 		}
   150 		if ( isset($this->error_data[$code]) )
   158 
   151 			return $this->error_data[$code];
   159 		if ( isset( $this->error_data[ $code ] ) ) {
       
   160 			return $this->error_data[ $code ];
       
   161 		}
       
   162 	}
       
   163 
       
   164 	/**
       
   165 	 * Verify if the instance contains errors.
       
   166 	 *
       
   167 	 * @since 5.1.0
       
   168 	 *
       
   169 	 * @return bool
       
   170 	 */
       
   171 	public function has_errors() {
       
   172 		if ( ! empty( $this->errors ) ) {
       
   173 			return true;
       
   174 		}
       
   175 		return false;
   152 	}
   176 	}
   153 
   177 
   154 	/**
   178 	/**
   155 	 * Add an error or append additional message to an existing error.
   179 	 * Add an error or append additional message to an existing error.
   156 	 *
   180 	 *
   158 	 *
   182 	 *
   159 	 * @param string|int $code Error code.
   183 	 * @param string|int $code Error code.
   160 	 * @param string $message Error message.
   184 	 * @param string $message Error message.
   161 	 * @param mixed $data Optional. Error data.
   185 	 * @param mixed $data Optional. Error data.
   162 	 */
   186 	 */
   163 	public function add($code, $message, $data = '') {
   187 	public function add( $code, $message, $data = '' ) {
   164 		$this->errors[$code][] = $message;
   188 		$this->errors[ $code ][] = $message;
   165 		if ( ! empty($data) )
   189 		if ( ! empty( $data ) ) {
   166 			$this->error_data[$code] = $data;
   190 			$this->error_data[ $code ] = $data;
       
   191 		}
   167 	}
   192 	}
   168 
   193 
   169 	/**
   194 	/**
   170 	 * Add data for error code.
   195 	 * Add data for error code.
   171 	 *
   196 	 *
   174 	 * @since 2.1.0
   199 	 * @since 2.1.0
   175 	 *
   200 	 *
   176 	 * @param mixed $data Error data.
   201 	 * @param mixed $data Error data.
   177 	 * @param string|int $code Error code.
   202 	 * @param string|int $code Error code.
   178 	 */
   203 	 */
   179 	public function add_data($data, $code = '') {
   204 	public function add_data( $data, $code = '' ) {
   180 		if ( empty($code) )
   205 		if ( empty( $code ) ) {
   181 			$code = $this->get_error_code();
   206 			$code = $this->get_error_code();
   182 
   207 		}
   183 		$this->error_data[$code] = $data;
   208 
       
   209 		$this->error_data[ $code ] = $data;
   184 	}
   210 	}
   185 
   211 
   186 	/**
   212 	/**
   187 	 * Removes the specified error.
   213 	 * Removes the specified error.
   188 	 *
   214 	 *