From a6ebc13fc4190436bb7ef57d2c3ef2612b47c572 Mon Sep 17 00:00:00 2001 From: Kirk Jackson Date: Mon, 29 Jul 2019 11:58:03 +0100 Subject: [PATCH] Delete repeat activities that are selected for deletion --- CRM/Activity/Form/Activity.php | 36 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/CRM/Activity/Form/Activity.php b/CRM/Activity/Form/Activity.php index c89b52f6c3..dc6718406b 100644 --- a/CRM/Activity/Form/Activity.php +++ b/CRM/Activity/Form/Activity.php @@ -909,19 +909,33 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { */ public function postProcess($params = NULL) { if ($this->_action & CRM_Core_Action::DELETE) { - $deleteParams = ['id' => $this->_activityId]; - $moveToTrash = CRM_Case_BAO_Case::isCaseActivity($this->_activityId); - CRM_Activity_BAO_Activity::deleteActivity($deleteParams, $moveToTrash); - - // delete tags for the entity - $tagParams = [ - 'entity_table' => 'civicrm_activity', - 'entity_id' => $this->_activityId, - ]; + // Look up any repeat activities to be deleted. + $activityIds = array_column(CRM_Core_BAO_RecurringEntity::getEntitiesFor($this->_activityId, 'civicrm_activity', TRUE, NULL), 'id'); + if (!$activityIds) { + // There are no repeat activities to delete - just this one. + $activityIds = [$this->_activityId]; + } + + // Delete each activity. + foreach ($activityIds as $activityId) { + $deleteParams = ['id' => $activityId]; + $moveToTrash = CRM_Case_BAO_Case::isCaseActivity($activityId); + CRM_Activity_BAO_Activity::deleteActivity($deleteParams, $moveToTrash); + + // delete tags for the entity + $tagParams = [ + 'entity_table' => 'civicrm_activity', + 'entity_id' => $activityId, + ]; - CRM_Core_BAO_EntityTag::del($tagParams); + CRM_Core_BAO_EntityTag::del($tagParams); + } + + CRM_Core_Session::setStatus( + ts("Selected Activity has been deleted successfully.", ['plural' => '%count Activities have been deleted successfully.', 'count' => count($activityIds)]), + ts('Record Deleted', ['plural' => 'Records Deleted', 'count' => count($activityIds)]), 'success' + ); - CRM_Core_Session::setStatus(ts("Selected Activity has been deleted successfully."), ts('Record Deleted'), 'success'); return NULL; } -- 2.25.1