Fix CRM-19414.
authorAllen Shaw <allen@JoineryHQ.com>
Mon, 26 Sep 2016 23:50:38 +0000 (18:50 -0500)
committerAllen Shaw <allen@JoineryHQ.com>
Mon, 26 Sep 2016 23:50:38 +0000 (18:50 -0500)
api/v3/Extension.php

index 567046055026eb856dcb169c8d6b8614c347562a..931944edb4e26d8c81d3ce8da464e49bbef3e08f 100644 (file)
@@ -325,20 +325,22 @@ function _civicrm_api3_extension_refresh_spec(&$fields) {
  */
 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) {
-    //try {
-    //  $info = (array) $mapper->keyToInfo($key);
-    //} catch (CRM_Extension_Exception $e) {
-    $info = array();
+    try {
+      $obj = $mapper->keyToInfo($key);
+    }
+    catch (CRM_Extension_Exception $ex) {
+      CRM_Core_Session::setStatus(ts('Failed to read extension (%1). Please refresh the extension list.', array(1 => $key)));
+      continue;
+    }
+    $info = CRM_Extension_System::createExtendedInfo($obj);
     $info['id'] = $id++; // backward compatibility with indexing scheme
-    $info['key'] = $key;
-    //}
-    $info['status'] = $status;
     $result[] = $info;
   }
-  return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', array('id', 'key', 'status'));
+  return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', array());
 }
 
 /**