Merge pull request #9727 from eileenmcnaughton/BAO_Updates
[civicrm-core.git] / api / v3 / Extension.php
index 567046055026eb856dcb169c8d6b8614c347562a..3862ac0cec739a4b5ca03a4e9fb7a4ca681f2ee8 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.7                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2016                                |
+ | Copyright CiviCRM LLC (c) 2004-2017                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -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());
 }
 
 /**