142 lines
3.9 KiB
PHP
142 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* @file
|
|
* File for the CiviCRM APIv3 API wrapper
|
|
*
|
|
* @package CiviCRM_APIv3
|
|
*
|
|
* @copyright CiviCRM LLC (c) 2004-2017
|
|
*/
|
|
|
|
/**
|
|
* This api exception returns more information than the default one. The aim
|
|
* it let the api consumer know better what is exactly the error without
|
|
* having to parse the error message.
|
|
*
|
|
* If you consume an api that doesn't return an error_code or the extra data
|
|
* you need, consider improving the api and contribute.
|
|
*/
|
|
class API_Exception extends Exception {
|
|
const UNAUTHORIZED = 'unauthorized';
|
|
const NOT_IMPLEMENTED = 'not-found';
|
|
|
|
private $extraParams = array();
|
|
|
|
/**
|
|
* 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 = array(), Exception $previous = NULL) {
|
|
// Using int for error code "old way") ?
|
|
if (is_numeric($error_code)) {
|
|
$code = $error_code;
|
|
}
|
|
else {
|
|
$code = 0;
|
|
}
|
|
parent::__construct(ts($message), $code, $previous);
|
|
$this->extraParams = $extraParams + array('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 array(
|
|
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 = array();
|
|
|
|
/**
|
|
* 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, $extraParams = array(), Exception $previous = NULL) {
|
|
parent::__construct(ts($message));
|
|
$this->extraParams = $extraParams + array('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;
|
|
}
|
|
|
|
}
|