CRM-14449 stdise group api so it gets custom fields & works with getlist
[civicrm-core.git] / api / v3 / Group.php
index e5255d421655041abb125eb99563a89ba9177038..67f39f0d182225d0073e103890907e8eed2c4320 100644 (file)
@@ -1,11 +1,10 @@
 <?php
-// $Id$
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
  *
  * @package CiviCRM_APIv3
  * @subpackage API_Group
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * @version $Id: Group.php 30171 2010-10-14 09:11:27Z mover $
  */
 
-/**
- * Include utility functions
- */
-require_once 'CRM/Contact/BAO/Group.php';
-
 /**
  * create/update group
  *
@@ -59,17 +53,7 @@ require_once 'CRM/Contact/BAO/Group.php';
  * @access public
  */
 function civicrm_api3_group_create($params) {
-
-  $group = CRM_Contact_BAO_Group::create($params);
-
-  if (is_null($group)) {
-    return civicrm_api3_create_error('Group not created');
-  }
-  else {
-    $values = array();
-    _civicrm_api3_object_to_array_unique_fields($group, $values[$group->id]);
-    return civicrm_api3_create_success($values, $params, 'group', 'create', $group);
-  }
+  return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'Group');
 }
 
 /**
@@ -96,33 +80,16 @@ function _civicrm_api3_group_create_spec(&$params) {
  * @access public
  */
 function civicrm_api3_group_get($params) {
-
-  $options          = _civicrm_api3_get_options_from_params($params, TRUE, 'get');
-  $sort             = CRM_Utils_Array::value('sort', $options, NULL);
-  $offset           = CRM_Utils_Array::value('offset', $options);
-  $rowCount         = CRM_Utils_Array::value('limit', $options);
-  $returnProperties = CRM_Utils_Array::value('return', $options, NULL);
-  $inputParams      = CRM_Utils_Array::value('input_params', $options, array());
-  if(is_array($returnProperties) && !empty($returnProperties)){
-    // group function takes $returnProperties in non standard format & doesn't add id
-    $returnProperties['id'] = 1;
-    $returnProperties = array_keys($returnProperties);
-  }
-  if (CRM_Utils_Array::value('group_id', $inputParams)) {
-    $inputParams['id'] = $inputParams['group_id'];
-  }
-  $groupObjects = CRM_Contact_BAO_Group::getGroups($inputParams, $returnProperties, $sort, $offset, $rowCount);
-  if (empty($groupObjects)) {
-    return civicrm_api3_create_success(FALSE);
+  $options = _civicrm_api3_get_options_from_params($params, TRUE, 'group', 'get');
+  if(empty($options['return']) || !in_array('member_count', $options['return'])) {
+    return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, TRUE, 'Group');
   }
-  $groups = array();
-  foreach ($groupObjects as $group) {
-    _civicrm_api3_object_to_array($group, $groups[$group->id]);
-    _civicrm_api3_custom_data_get($groups[$group->id], 'Group', $group->id);
-  }
-
 
-  return civicrm_api3_create_success($groups, $params, 'group', 'create');
+  $groups = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, FALSE, 'Group');
+  foreach ($groups as $id => $group) {
+    $groups[$id]['member_count'] = CRM_Contact_BAO_Group::memberCount($id);
+  }
+  return civicrm_api3_create_success($groups, $params, 'group', 'get');
 }
 
 /**