extraParams = $extraParams + ['error_code' => $error_code]; } /** * Custom string representation of object. * * @return string */ public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } /** * Get extra parameters. * * @return array */ public function getExtraParams() { return $this->extraParams; } /** * Get error codes. * * @return array */ public function getErrorCodes() { return [ 2000 => '$params was not an array', 2001 => 'Invalid Value for Date field', 2100 => 'String value is longer than permitted length', self::UNAUTHORIZED => 'Unauthorized', self::NOT_IMPLEMENTED => 'Entity or method is not implemented', ]; } } /** * This api exception returns more information than the default one. We are using it rather than * API_Exception from the api wrapper as the namespace is more generic */ class CiviCRM_API3_Exception extends Exception { private $extraParams = []; /** * Class constructor. * * @param string $message * The human friendly error message. * @param mixed $error_code * A computer friendly error code. By convention, no space (but underscore * allowed) (ex: mandatory_missing, duplicate, invalid_format). * @param array $extraParams * Extra params to return. eg an extra array of ids. It is not mandatory, * but can help the computer using the api. Keep in mind the api consumer * isn't to be trusted. eg. the database password is NOT a good extra data. * @param Exception|NULL $previous * A previous exception which caused this new exception. */ public function __construct($message, $error_code = 0, $extraParams = [], Exception $previous = NULL) { parent::__construct(ts($message)); $this->extraParams = $extraParams + ['error_code' => $error_code]; } /** * Custom string representation of object. * * @return string */ public function __toString() { return __CLASS__ . ": [{$this->extraParams['error_code']}: {$this->message}\n"; } /** * Get error code. * * @return mixed */ public function getErrorCode() { return $this->extraParams['error_code']; } /** * Get extra parameters. * * @return array */ public function getExtraParams() { return $this->extraParams; } }