Merge pull request #3679 from yashodha/CRM-14951
[civicrm-core.git] / api / v3 / Extension.php
index 2e9d56857f6bd5ee7a43bf345991df5774f079cc..8ea07d1a6dadf9b30da72323ad270277fc941ebe 100644 (file)
@@ -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
  *