Merge pull request #9789 from fliespl/patch-2
[civicrm-core.git] / api / v3 / GroupContact.php
index e296e18297ad20c8cf3c66468f35954fbdb0353d..53f055e82b856ee0128c2fcc367c0c8c51a7cc14 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.                                    |
  |                                                                    |
@@ -140,14 +140,28 @@ function civicrm_api3_group_contact_create($params) {
  * Delete group contact record.
  *
  * @param array $params
- *
  * @return array
- *
+ * @throws API_Exception
+ * @throws CiviCRM_API3_Exception
  * @deprecated
  */
 function civicrm_api3_group_contact_delete($params) {
-  $groupContact = civicrm_api3('GroupContact', 'get', $params);
-  if ($groupContact['count'] == 0) {
+  $checkParams = $params;
+  if (!empty($checkParams['status']) && in_array($checkParams['status'], array('Removed', 'Deleted'))) {
+    $checkParams['status'] = array('IN' => array('Added', 'Pending'));
+  }
+  elseif (!empty($checkParams['status']) && $checkParams['status'] == 'Added') {
+    $checkParams['status'] = array('IN' => array('Pending', 'Removed'));
+  }
+  elseif (!empty($checkParams['status'])) {
+    unset($checkParams['status']);
+  }
+  $groupContact = civicrm_api3('GroupContact', 'get', $checkParams);
+  if ($groupContact['count'] == 0 && !empty($params['skip_undelete'])) {
+    $checkParams['status'] = array('IN' => array('Removed', 'Pending'));
+  }
+  $groupContact2 = civicrm_api3('GroupContact', 'get', $checkParams);
+  if ($groupContact['count'] == 0 && $groupContact2['count'] == 0) {
     throw new API_Exception('Cannot Delete GroupContact');
   }
   $params['status'] = CRM_Utils_Array::value('status', $params, empty($params['skip_undelete']) ? 'Removed' : 'Deleted');