Merge pull request #3679 from yashodha/CRM-14951
[civicrm-core.git] / api / v3 / Extension.php
index 511aaef93af476be9855cce3224195dc517eacf4..8ea07d1a6dadf9b30da72323ad270277fc941ebe 100644 (file)
@@ -4,9 +4,9 @@ define('API_V3_EXTENSION_DELIMITER', ',');
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -34,7 +34,7 @@ define('API_V3_EXTENSION_DELIMITER', ',');
  * @package CiviCRM_APIv3
  * @subpackage API_Extension
  *
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * @version $Id$
  *
  */
@@ -68,6 +68,36 @@ function civicrm_api3_extension_install($params) {
   return civicrm_api3_create_success();
 }
 
+/**
+ * Upgrade an extension - runs upgrade_N hooks and system.flush
+ *
+ * @return array API result
+ * @static void
+ * @access public
+ *
+ */
+function civicrm_api3_extension_upgrade() {
+  CRM_Core_Invoke::rebuildMenuAndCaches(TRUE);
+  $queue = CRM_Extension_Upgrades::createQueue();
+  $runner = new CRM_Queue_Runner(array(
+    'title' => 'Extension Upgrades',
+    'queue' => $queue,
+    'errorMode' => CRM_Queue_Runner::ERROR_ABORT,
+  ));
+
+  try {
+    $result = $runner->runAll();
+  } catch (CRM_Extension_Exception $e) {
+    return civicrm_api3_create_error($e->getMessage());
+  }
+
+  if ($result === TRUE) {
+    return civicrm_api3_create_success();
+  } else {
+    return $result;
+  }
+}
+
 /**
  * Enable an extension
  *
@@ -145,15 +175,15 @@ function civicrm_api3_extension_uninstall($params) {
 /**
  * Download and install an extension
  *
- * @param  array       $params input parameters
+ * @param  array $params input parameters
  *                          - key: string, eg "com.example.myextension"
  *                          - url: string eg "http://repo.com/myextension-1.0.zip"
  *
+ * @throws API_Exception
  * @return array API result
  * @static void
  * @access public
  * @example ExtensionDownload.php
- *
  */
 function civicrm_api3_extension_download($params) {
   if (! array_key_exists('key', $params)) {
@@ -230,11 +260,12 @@ function civicrm_api3_extension_refresh($params) {
 /**
  * Get a list of available extensions
  *
+ * @param $params
+ *
  * @return array API result
  * @static void
  * @access public
  * @example ExtensionGet.php
- *
  */
 function civicrm_api3_extension_get($params) {
   $statuses = CRM_Extension_System::singleton()->getManager()->getStatuses();