$params * * @return */ function civicrm_group_contact_add(&$params) { return civicrm_group_contact_common($params, 'add'); } /** * * @param $params * * @return */ function civicrm_group_contact_remove(&$params) { return civicrm_group_contact_common($params, 'remove'); } /** * * @param $params * * @return */ function civicrm_group_contact_pending(&$params) { return civicrm_group_contact_common($params, 'pending'); } /** * * @param $params * @param $op * * @return */ function civicrm_group_contact_common(&$params, $op = 'add') { if (!is_array($params)) { return civicrm_create_error(ts('input parameter should be an array')); } $contactIDs = array(); $groupIDs = array(); foreach ($params as $n => $v) { if (substr($n, 0, 10) == 'contact_id') { $contactIDs[] = $v; } elseif (substr($n, 0, 8) == 'group_id') { $groupIDs[] = $v; } } if (empty($contactIDs)) { return civicrm_create_error(ts('contact_id is a required field')); } if (empty($groupIDs)) { return civicrm_create_error(ts('group_id is a required field')); } $method = CRM_Utils_Array::value('method', $params, 'API'); if ($op == 'add') { $status = CRM_Utils_Array::value('status', $params, 'Added'); } elseif ($op == 'pending') { $status = CRM_Utils_Array::value('status', $params, 'Pending'); } else { $status = CRM_Utils_Array::value('status', $params, 'Removed'); } $tracking = CRM_Utils_Array::value('tracking', $params); require_once 'CRM/Contact/BAO/GroupContact.php'; $values = array('is_error' => 0); if ($op == 'add' || $op == 'pending') { $values['total_count'] = $values['added'] = $values['not_added'] = 0; foreach ($groupIDs as $groupID) { list($tc, $a, $na) = CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIDs, $groupID, $method, $status, $tracking ); $values['total_count'] += $tc; $values['added'] += $a; $values['not_added'] += $na; } } else { $values['total_count'] = $values['removed'] = $values['not_removed'] = 0; foreach ($groupIDs as $groupID) { list($tc, $r, $nr) = CRM_Contact_BAO_GroupContact::removeContactsFromGroup($contactIDs, $groupID, $method, $status, $tracking ); $values['total_count'] += $tc; $values['removed'] += $r; $values['not_removed'] += $nr; } } return $values; } function civicrm_group_contact_update_status(&$params) { if (!is_array($params)) { return civicrm_create_error(ts('input parameter should be an array')); } if (empty($params['contact_id'])) { return civicrm_create_error(ts('contact_id is a required field')); } else { $contactID = $params['contact_id']; } if (empty($params['group_id'])) { return civicrm_create_error(ts('group_id is a required field')); } else { $groupID = $params['group_id']; } $method = CRM_Utils_Array::value('method', $params, 'API'); $tracking = CRM_Utils_Array::value('tracking', $params); require_once 'CRM/Contact/BAO/GroupContact.php'; CRM_Contact_BAO_GroupContact::updateGroupMembershipStatus($contactID, $groupID, $method, $tracking); return TRUE; }