*
* @param array $params
* Input parameters.
- * - key: string, eg "com.example.myextension"
- * - keys: mixed; array of string, eg array("com.example.myextension1", "com.example.myextension2") or string with comma-delimited list
- * Using 'keys' should be more performant than making multiple API calls with 'key'.
+ * - key: string, eg "com.example.myextension"
+ * - keys: array of string, eg array("com.example.myextension1", "com.example.myextension2")
+ *
+ * Using 'keys' should be more performant than making multiple API calls with 'key'
*
* @return array
- * API result
*/
function civicrm_api3_extension_install($params) {
$keys = _civicrm_api3_getKeys($params);
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_install_spec(&$fields) {
+ $fields['keys'] = array(
+ 'title' => 'Extension Key(s)',
+ 'api.required' => 1,
+ 'api.aliases' => array('key'),
+ 'type' => CRM_Utils_Type::T_STRING,
+ 'description' => 'Fully qualified name of one or more extensions',
+ );
+}
+
/**
* Upgrade an extension - runs upgrade_N hooks and system.flush.
*
*
* @param array $params
* Input parameters.
- * - key: string, eg "com.example.myextension"
- * - keys: mixed; array of string, eg array("com.example.myextension1", "com.example.myextension2") or string with comma-delimited list
- * using 'keys' should be more performant than making multiple API calls with 'key'
+ * - key: string, eg "com.example.myextension"
+ * - keys: array of string, eg array("com.example.myextension1", "com.example.myextension2")
+ *
+ * Using 'keys' should be more performant than making multiple API calls with 'key'
*
* @return array
- * API result
*/
function civicrm_api3_extension_enable($params) {
$keys = _civicrm_api3_getKeys($params);
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_enable_spec(&$fields) {
+ _civicrm_api3_extension_install_spec($fields);
+}
+
/**
* Disable an extension.
*
* @param array $params
* Input parameters.
- * - key: string, eg "com.example.myextension"
- * - keys: mixed; array of string, eg array("com.example.myextension1", "com.example.myextension2") or string with comma-delimited list
- * using 'keys' should be more performant than making multiple API calls with 'key'
+ * - key: string, eg "com.example.myextension"
+ * - keys: array of string, eg array("com.example.myextension1", "com.example.myextension2")
+ *
+ * Using 'keys' should be more performant than making multiple API calls with 'key'
*
* @return array
- * API result
*/
function civicrm_api3_extension_disable($params) {
$keys = _civicrm_api3_getKeys($params);
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_disable_spec(&$fields) {
+ _civicrm_api3_extension_install_spec($fields);
+}
+
/**
* Uninstall an extension.
*
* @param array $params
* Input parameters.
- * - key: string, eg "com.example.myextension"
- * - keys: array of string, eg array("com.example.myextension1", "com.example.myextension2")
- * using 'keys' should be more performant than making multiple API calls with 'key'
- * - removeFiles: bool, whether to remove source tree; default: FALSE
+ * - key: string, eg "com.example.myextension"
+ * - keys: array of string, eg array("com.example.myextension1", "com.example.myextension2")
+ *
+ * Using 'keys' should be more performant than making multiple API calls with 'key'
+ *
+ * @todo: removeFiles as optional param
*
* @return array
- * API result
*/
function civicrm_api3_extension_uninstall($params) {
$keys = _civicrm_api3_getKeys($params);
return civicrm_api3_create_success();
}
- // TODO // $removeFiles = CRM_Utils_Array::value('removeFiles', $params, FALSE);
CRM_Extension_System::singleton()->getManager()->uninstall($keys);
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_uninstall_spec(&$fields) {
+ _civicrm_api3_extension_install_spec($fields);
+ //$fields['removeFiles'] = array(
+ // 'title' => 'Remove files',
+ // 'description' => 'Whether to remove the source tree. Default FALSE.',
+ // 'type' => CRM_Utils_Type::T_BOOLEAN,
+ //);
+}
+
/**
* Download and install an extension.
*
* API result
*/
function civicrm_api3_extension_download($params) {
- if (!array_key_exists('key', $params)) {
- throw new API_Exception('Missing required parameter: key');
- }
-
if (!array_key_exists('url', $params)) {
if (!CRM_Extension_System::singleton()->getBrowser()->isEnabled()) {
- throw new API_Exception('Automatic downloading is diabled. Try adding parameter "url"');
+ throw new API_Exception('Automatic downloading is disabled. Try adding parameter "url"');
}
if ($reqs = CRM_Extension_System::singleton()->getBrowser()->checkRequirements()) {
$first = array_shift($reqs);
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_download_spec(&$fields) {
+ $fields['key'] = array(
+ 'title' => 'Extension Key',
+ 'api.required' => 1,
+ 'type' => CRM_Utils_Type::T_STRING,
+ 'description' => 'Fully qualified name of the extension',
+ );
+ $fields['url'] = array(
+ 'title' => 'Download URL',
+ 'type' => CRM_Utils_Type::T_STRING,
+ 'description' => 'Optional as the system can determine the url automatically for public extensions',
+ );
+}
+
/**
* Download and install an extension.
*
* API result
*/
function civicrm_api3_extension_refresh($params) {
- $defaults = array('local' => TRUE, 'remote' => TRUE);
- $params = array_merge($defaults, $params);
-
$system = CRM_Extension_System::singleton(TRUE);
if ($params['local']) {
return civicrm_api3_create_success();
}
+/**
+ * Spec function for getfields
+ * @param $fields
+ */
+function _civicrm_api3_extension_refresh_spec(&$fields) {
+ $fields['local'] = array(
+ 'title' => 'Rescan Local',
+ 'api.default' => 1,
+ 'type' => CRM_Utils_Type::T_BOOLEAN,
+ 'description' => 'Whether to rescan the local filesystem (default TRUE)',
+ );
+ $fields['remote'] = array(
+ 'title' => 'Rescan Remote',
+ 'api.default' => 1,
+ 'type' => CRM_Utils_Type::T_BOOLEAN,
+ 'description' => 'Whether to rescan the remote repository (default TRUE)',
+ );
+}
+
/**
* Get a list of available extensions.
*
*/
function civicrm_api3_extension_get($params) {
$statuses = CRM_Extension_System::singleton()->getManager()->getStatuses();
- $mapper = CRM_Extension_System::singleton()->getMapper();
$result = array();
$id = 0;
foreach ($statuses as $key => $status) {