X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FCCase%2FSequenceListener.php;h=2709749a947ce9bcb6d8fc8e5139193d2b44d91f;hb=805ed04fce5afc5228073e9a07b3f24aedc952fd;hp=1bceea8c8f2e670f869d4c9df8839475fb09d548;hpb=87b743322324b0c46aa1cc70b2ce971846bf87e3;p=civicrm-core.git diff --git a/Civi/CCase/SequenceListener.php b/Civi/CCase/SequenceListener.php index 1bceea8c8f..2709749a94 100644 --- a/Civi/CCase/SequenceListener.php +++ b/Civi/CCase/SequenceListener.php @@ -33,6 +33,10 @@ class SequenceListener implements CaseChangeListener { } /** + * Triggers next case activity in sequence if current activity status is updated + * to type=COMPLETED(See CRM-21598). The adjoining activity is created according + * to the sequence configured in case type. + * * @param \Civi\CCase\Event\CaseChangeEvent $event * * @throws \CiviCRM_API3_Exception @@ -48,7 +52,7 @@ class SequenceListener implements CaseChangeListener { } $actTypes = array_flip(\CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name')); - $actStatuses = array_flip(\CRM_Core_PseudoConstant::activityStatus('name')); + $actStatuses = array_flip(\CRM_Activity_BAO_Activity::getStatusesByType(\CRM_Activity_BAO_Activity::COMPLETED)); $actIndex = $analyzer->getActivityIndex(array('activity_type_id', 'status_id')); @@ -59,7 +63,7 @@ class SequenceListener implements CaseChangeListener { $this->createActivity($analyzer, $actTypeXML); return; } - elseif (empty($actIndex[$actTypeId][$actStatuses['Completed']])) { + elseif (!in_array(key($actIndex[$actTypeId]), $actStatuses)) { // Haven't gotten past this step yet! return; } @@ -68,7 +72,7 @@ class SequenceListener implements CaseChangeListener { //CRM-17452 - Close the case only if all the activities are complete $activities = $analyzer->getActivities(); foreach ($activities as $activity) { - if ($activity['status_id'] != $actStatuses['Completed']) { + if (!in_array($activity['status_id'], $actStatuses)) { return; } }