version fixes
[civicrm-core.git] / api / v3 / UFGroup.php
index c08a63b15de5c0861f272613270beacb1e1859f1..89fb6c284ba49af4ead81e3bbe3bd941f4b315fb 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.6                                                |
+ | CiviCRM version 4.7                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014                                |
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
  */
 
 /**
- * File for the CiviCRM APIv3 user framework group functions
+ * This api exposes CiviCRM profile group.
  *
  * @package CiviCRM_APIv3
- * @subpackage API_UF
- *
- * @copyright CiviCRM LLC (c) 2004-2014
- * @version $Id: UFGroup.php 30171 2010-10-14 09:11:27Z mover $
- *
  */
 
 /**
+ * Adjust metadata for create action.
+ *
  * @param array $params
  */
 function _civicrm_api3_uf_group_create_spec(&$params) {
@@ -44,36 +41,34 @@ function _civicrm_api3_uf_group_create_spec(&$params) {
   $params['title']['api.required'] = 1;
   $params['is_active']['api.default'] = 1;
   $params['is_update_dupe']['api.default'] = 1;
-  $params['created_id']['api.default'] = 'user_contact_id';//the current user
+  // Default to the logged in user.
+  $params['created_id']['api.default'] = 'user_contact_id';
   $params['created_date']['api.default'] = 'now';
 }
+
 /**
- * Use this API to create a new group. See the CRM Data Model for uf_group property definitions
+ * Use this API to create a new group.
+ *
+ * See the CRM Data Model for uf_group property definitions
  *
  * @param array $params
- *   Array Associative array of property name/value pairs to insert in group.
+ *   Array per getfields metadata.
  *
  * @return array
  *   API result array
- *   {@getfields UFGroup_create}
- * @example UFGroupCreate.php
  */
 function civicrm_api3_uf_group_create($params) {
   return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params);
 }
 
 /**
- * Returns array of uf groups (profiles)  matching a set of one or more group properties
+ * Returns array of uf groups (profiles) matching a set of one or more group properties.
  *
  * @param array $params
- *   (reference) Array of one or more valid.
- *                       property_name=>value pairs. If $params is set
- *                       as null, all surveys will be returned
+ *   Array of properties. If empty, all records will be returned.
  *
  * @return array
  *   Array of matching profiles
- *   {@getfields UFGroup_get}
- * @example UFGroupGet.php
  */
 function civicrm_api3_uf_group_get($params) {
 
@@ -81,13 +76,85 @@ function civicrm_api3_uf_group_get($params) {
 }
 
 /**
- * Delete uf group
+ * Delete uf group.
  *
  * @param array $params
  *
- *
  * @return array
  */
 function civicrm_api3_uf_group_delete($params) {
   return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
 }
+
+/**
+ * Set default getlist parameters.
+ *
+ * @see _civicrm_api3_generic_getlist_defaults
+ *
+ * @param array $request
+ *
+ * @return array
+ */
+function _civicrm_api3_uf_group_getlist_defaults(&$request) {
+  return array(
+    'description_field' => array(
+      'description',
+      'group_type',
+    ),
+    'params' => array(
+      'is_active' => 1,
+    ),
+  );
+}
+
+/**
+ * Format getlist output
+ *
+ * @see _civicrm_api3_generic_getlist_output
+ *
+ * @param array $result
+ * @param array $request
+ * @param string $entity
+ * @param array $fields
+ *
+ * @return array
+ */
+function _civicrm_api3_uf_group_getlist_output($result, $request, $entity, $fields) {
+  $output = array();
+  if (!empty($result['values'])) {
+    foreach ($result['values'] as $row) {
+      $data = array(
+        'id' => $row[$request['id_field']],
+        'label' => $row[$request['label_field']],
+      );
+      if (!empty($request['description_field'])) {
+        $data['description'] = array();
+        foreach ((array) $request['description_field'] as $field) {
+          if (!empty($row[$field])) {
+            // Special formatting for group_type field
+            if ($field == 'group_type') {
+              $groupTypes = CRM_UF_Page_Group::extractGroupTypes($row[$field]);
+              $data['description'][] = CRM_UF_Page_Group::formatGroupTypes($groupTypes);
+              continue;
+            }
+            if (!isset($fields[$field]['pseudoconstant'])) {
+              $data['description'][] = $row[$field];
+            }
+            else {
+              $data['description'][] = CRM_Core_PseudoConstant::getLabel(
+                _civicrm_api3_get_BAO($entity),
+                $field,
+                $row[$field]
+              );
+            }
+          }
+        }
+      };
+      if (!empty($request['image_field'])) {
+        $data['image'] = isset($row[$request['image_field']]) ? $row[$request['image_field']] : '';
+      }
+      $output[] = $data;
+    }
+  }
+  return $output;
+}