4 * File for the CiviCRM APIv3 API wrapper
6 * @package CiviCRM_APIv3
8 * @copyright CiviCRM LLC (c) 2004-2017
12 * This api exception returns more information than the default one. The aim
13 * it let the api consumer know better what is exactly the error without
14 * having to parse the error message.
16 * If you consume an api that doesn't return an error_code or the extra data
17 * you need, consider improving the api and contribute.
19 class API_Exception
extends Exception
{
20 const UNAUTHORIZED
= 'unauthorized';
21 const NOT_IMPLEMENTED
= 'not-found';
23 private $extraParams = array();
28 * @param string $message
29 * The human friendly error message.
30 * @param mixed $error_code
31 * A computer friendly error code. By convention, no space (but underscore
32 * allowed) (ex: mandatory_missing, duplicate, invalid_format).
33 * @param array $extraParams
34 * Extra params to return. eg an extra array of ids. It is not mandatory,
35 * but can help the computer using the api. Keep in mind the api consumer
36 * isn't to be trusted. eg. the database password is NOT a good extra data.
37 * @param Exception|NULL $previous
38 * A previous exception which caused this new exception.
40 public function __construct($message, $error_code = 0, $extraParams = array(), Exception
$previous = NULL) {
41 // Using int for error code "old way") ?
42 if (is_numeric($error_code)) {
48 parent
::__construct(ts($message), $code, $previous);
49 $this->extraParams
= $extraParams +
array('error_code' => $error_code);
53 * Custom string representation of object.
57 public function __toString() {
58 return __CLASS__
. ": [{$this->code}]: {$this->message}\n";
62 * Get extra parameters.
66 public function getExtraParams() {
67 return $this->extraParams
;
75 public function getErrorCodes() {
77 2000 => '$params was not an array',
78 2001 => 'Invalid Value for Date field',
79 2100 => 'String value is longer than permitted length',
80 self
::UNAUTHORIZED
=> 'Unauthorized',
81 self
::NOT_IMPLEMENTED
=> 'Entity or method is not implemented',
88 * This api exception returns more information than the default one. We are using it rather than
89 * API_Exception from the api wrapper as the namespace is more generic
91 class CiviCRM_API3_Exception
extends Exception
{
92 private $extraParams = array();
97 * @param string $message
98 * The human friendly error message.
99 * @param mixed $error_code
100 * A computer friendly error code. By convention, no space (but underscore
101 * allowed) (ex: mandatory_missing, duplicate, invalid_format).
102 * @param array $extraParams
103 * Extra params to return. eg an extra array of ids. It is not mandatory,
104 * but can help the computer using the api. Keep in mind the api consumer
105 * isn't to be trusted. eg. the database password is NOT a good extra data.
106 * @param Exception|NULL $previous
107 * A previous exception which caused this new exception.
109 public function __construct($message, $error_code, $extraParams = array(), Exception
$previous = NULL) {
110 parent
::__construct(ts($message));
111 $this->extraParams
= $extraParams +
array('error_code' => $error_code);
115 * Custom string representation of object.
119 public function __toString() {
120 return __CLASS__
. ": [{$this->extraParams['error_code']}: {$this->message}\n";
128 public function getErrorCode() {
129 return $this->extraParams
['error_code'];
133 * Get extra parameters.
137 public function getExtraParams() {
138 return $this->extraParams
;