class civicrm_api3 {
/**
- * @param array API configuration.
+ * Class constructor.
+ *
+ * @param array $config API configuration.
*/
- function __construct($config = NULL) {
+ public function __construct($config = NULL) {
$this->local = TRUE;
$this->input = array();
$this->lastResult = array();
else {
$this->uri .= '/sites/all/modules/civicrm/extern/rest.php';
}
- $this->uri .= '?json=1';
if (isset($config['key'])) {
$this->key = $config['key'];
}
return;
}
if (isset($config) && isset($config['conf_path'])) {
- define('CIVICRM_SETTINGS_PATH', $config['conf_path'] . '/civicrm.settings.php');
+ if (!defined('CIVICRM_SETTINGS_PATH')) {
+ define('CIVICRM_SETTINGS_PATH', $config['conf_path'] . '/civicrm.settings.php');
+ }
require_once CIVICRM_SETTINGS_PATH;
require_once 'CRM/Core/ClassLoader.php';
require_once 'api/api.php';
}
/**
+ * Convert to string.
+ *
* @return string
*/
public function __toString() {
}
/**
- * Perform action
+ * Perform action.
+ *
+ * @param $action
+ * @param $params
+ *
+ * @return bool
*/
public function __call($action, $params) {
// @TODO Check if it's a valid action.
}
/**
- * As of PHP 5.3.0
+ * Call via rest.
+ *
+ * @param $entity
+ * @param $action
+ * @param array $params
+ *
+ * @return \stdClass
*/
- public static function __callStatic($name, $arguments) {
- // Should we implement it ?
- echo "Calling static method '$name' " . implode(', ', $arguments) . "\n";
- }
+ private function remoteCall($entity, $action, $params = array()) {
+ $query = $this->uri . "?entity=$entity&action=$action";
+ $fields = http_build_query(array(
+ 'key' => $this->key,
+ 'api_key' => $this->api_key,
+ 'json' => json_encode($params),
+ ));
- /**
- * Call via rest
- * @return stdClass
- */
- function remoteCall($entity, $action, $params = array()) {
- $fields = "key={$this->key}&api_key={$this->api_key}";
- $query = $this->uri . "&entity=$entity&action=$action";
- foreach ($params as $k => $v) {
- $fields .= "&$k=" . urlencode($v);
- }
if (function_exists('curl_init')) {
// To facilitate debugging without leaking info, entity & action
// are GET, other data is POST.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $query);
- curl_setopt($ch, CURLOPT_POST, count($params) + 2);
+ curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
// CiviCRM expects to get back a CiviCRM error object.
if (curl_errno($ch)) {
- $res = new stdClass;
+ $res = new stdClass();
$res->is_error = 1;
$res->error_message = curl_error($ch);
$res->level = "cURL";
$result = file_get_contents($query . '&' . $fields);
}
if (!$res = json_decode($result)) {
- $res = new stdClass;
+ $res = new stdClass();
$res->is_error = 1;
$res->error_message = 'Unable to parse returned JSON';
$res->level = 'json_decode';
}
/**
+ * Call api function.
+ *
* @param $entity
* @param string $action
* @param array $params
*
* @return bool
*/
- function call($entity, $action = 'Get', $params = array()) {
+ private function call($entity, $action = 'Get', $params = array()) {
if (is_int($params)) {
$params = array('id' => $params);
}
/**
* Helper method for long running programs (eg bots).
*/
- function ping() {
+ public function ping() {
global $_DB_DATAOBJECT;
foreach ($_DB_DATAOBJECT['CONNECTIONS'] as & $c) {
if (!$c->connection->ping()) {
* Return the last error message.
* @return string
*/
- function errorMsg() {
+ public function errorMsg() {
return $this->lastResult->error_message;
}
/**
- * Initialize
+ * Initialize.
*/
- function init() {
+ public function init() {
CRM_Core_DAO::init($this->cfg->dsn);
}
/**
+ * Get attribute.
+ *
+ * @param $name
+ * @param null $value
+ *
* @return $this
*/
public function attr($name, $value = NULL) {
}
/**
+ * Is this an error.
+ *
* @return bool
*/
public function is_error() {
}
/**
- * @param $name
+ * Check if var is set.
+ *
+ * @param string $name
+ *
* @return bool
*/
public function is_set($name) {
}
/**
+ * Get object.
+ *
+ * @param string $name
+ *
* @return $this
*/
public function __get($name) {
public function result() {
return $this->lastResult;
}
+
}