From af95f0c2a4c1593cd5a07bd584e90c5d3ba2d4b6 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap@edeveloper.nl> Date: Wed, 11 Mar 2015 15:24:42 +0100 Subject: [PATCH] update other op in post event are possible --- CRM/Civirules/Event/EditEntity.php | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/CRM/Civirules/Event/EditEntity.php b/CRM/Civirules/Event/EditEntity.php index db0d452..454fc84 100644 --- a/CRM/Civirules/Event/EditEntity.php +++ b/CRM/Civirules/Event/EditEntity.php @@ -25,21 +25,30 @@ class CRM_Civirules_Event_EditEntity { } public static function post( $op, $objectName, $objectId, &$objectRef ) { - if ($op != 'edit') { + if ($op != 'edit' && $op != 'create' && $op != 'delete' && $op != 'trash' && $op != 'restore') { return; } - //set data - $data = array(); - CRM_Core_DAO::storeValues($objectRef, $data); - $entity = self::convertObjectNameToEntity($objectName); - $oldData = self::getPreData($entity, $objectId); - $rules = CRM_Civirules_BAO_Rule::findRulesByObjectnameAndAction($objectName, $op); - foreach($rules as $rule) { + if ($op == 'edit') { + //set data + $data = array(); + CRM_Core_DAO::storeValues($objectRef, $data); + //set also original data with an edit event + $oldData = self::getPreData($entity, $objectId); $eventData = new CRM_Civirules_EventData_Edit($entity, $objectId, $data, $oldData); - CRM_Civirules_Engine::triggerRule($eventData, $rule['rule_id'], $rule['event_id']); + } else { + //set data + $data = array(); + CRM_Core_DAO::storeValues($objectRef, $data); + $eventData = new CRM_Civirules_EventData_EventData_Post($entity, $objectId, $data); + } + + //find matching rules for this objectName and op + $rules = CRM_Civirules_BAO_Rule::findRulesByObjectNameAndOp($objectName, $op); + foreach($rules as $rule) { + CRM_Civirules_Engine::triggerRule(clone $eventData, $rule['rule_id'], $rule['event_id']); } } -- GitLab