Merge pull request #4819 from eileenmcnaughton/CRM-15680
[civicrm-core.git] / api / v3 / Extension.php
index 2e9d56857f6bd5ee7a43bf345991df5774f079cc..18e52ec3540902209e704c839f9ededcf6c7ac39 100644 (file)
@@ -1,10 +1,7 @@
 <?php
-
-define('API_V3_EXTENSION_DELIMITER', ',');
-
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
@@ -28,6 +25,9 @@ define('API_V3_EXTENSION_DELIMITER', ',');
  +--------------------------------------------------------------------+
  */
 
+define('API_V3_EXTENSION_DELIMITER', ',');
+
+
 /**
  * File for the CiviCRM APIv3 extension functions
  *
@@ -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
  *
@@ -230,7 +260,7 @@ function civicrm_api3_extension_refresh($params) {
 /**
  * Get a list of available extensions
  *
- * @param $params
+ * @param array $params
  *
  * @return array API result
  * @static void