3 * File for the CiviCRM APIv3 API wrapper
5 * @package CiviCRM_APIv3
8 * @copyright CiviCRM LLC (c) 2004-2014
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();
26 * @param string $message
27 * The human friendly error message.
28 * @param mixed $error_code
29 * A computer friendly error code. By convention, no space (but underscore
30 * allowed) (ex: mandatory_missing, duplicate, invalid_format).
31 * @param array $extraParams
32 * Extra params to return. eg an extra array of ids. It is not mandatory,
33 * but can help the computer using the api. Keep in mind the api consumer
34 * isn't to be trusted. eg. the database password is NOT a good extra data.
35 * @param Exception|NULL $previous
36 * A previous exception which caused this new exception.
38 public function __construct($message, $error_code = 0, $extraParams = array(), Exception
$previous = NULL) {
39 // Using int for error code "old way") ?
40 if (is_numeric($error_code)) {
46 parent
::__construct(ts($message), $code, $previous);
47 $this->extraParams
= $extraParams +
array('error_code' => $error_code);
51 * custom string representation of object
54 public function __toString() {
55 return __CLASS__
. ": [{$this->code}]: {$this->message}\n";
61 public function getExtraParams() {
62 return $this->extraParams
;
68 public function getErrorCodes() {
70 2000 => '$params was not an array',
71 2001 => 'Invalid Value for Date field',
72 2100 => 'String value is longer than permitted length',
73 self
::UNAUTHORIZED
=> 'Unauthorized',
74 self
::NOT_IMPLEMENTED
=> 'Entity or method is not implemented',
81 * This api exception returns more information than the default one. We are using it rather than
82 * API_Exception from the api wrapper as the namespace is more generic
84 class CiviCRM_API3_Exception
extends Exception
{
85 private $extraParams = array();
88 * @param string $message
89 * The human friendly error message.
90 * @param mixed $error_code
91 * A computer friendly error code. By convention, no space (but underscore
92 * allowed) (ex: mandatory_missing, duplicate, invalid_format).
93 * @param array $extraParams
94 * Extra params to return. eg an extra array of ids. It is not mandatory,
95 * but can help the computer using the api. Keep in mind the api consumer
96 * isn't to be trusted. eg. the database password is NOT a good extra data.
97 * @param Exception|NULL $previous
98 * A previous exception which caused this new exception.
100 public function __construct($message, $error_code, $extraParams = array(), Exception
$previous = NULL) {
101 parent
::__construct(ts($message));
102 $this->extraParams
= $extraParams +
array('error_code' => $error_code);
106 * custom string representation of object
109 public function __toString() {
110 return __CLASS__
. ": [{$this->extraParams['error_code']}: {$this->message}\n";
116 public function getErrorCode() {
117 return $this->extraParams
['error_code'];
123 public function getExtraParams() {
124 return $this->extraParams
;