/** * Function to get the rule actions for the rule * * @return array $ruleActions * @access protected */ protected function getRuleActions() { $actionParams = array('is_active' => 1, 'rule_id' => $this->ruleId); $ruleActions = CRM_Civirules_BAO_RuleAction::getValues($actionParams); foreach ($ruleActions as $ruleActionId => $ruleAction) { $actionClass = CRM_Civirules_BAO_Action::getActionObjectById($ruleAction['action_id']); $actionClass->setRuleActionData($ruleAction); $ruleActions[$ruleActionId]['label'] = CRM_Civirules_BAO_Action::getActionLabelWithId($ruleAction['action_id']); $ruleActions[$ruleActionId]['actions'] = $this->setRuleActionActions($ruleActionId, $actionClass); $ruleActions[$ruleActionId]['formattedConditionParams'] = $actionClass->userFriendlyConditionParams(); $ruleActions[$ruleActionId]['formattedDelay'] = ''; if (!empty($ruleAction['delay'])) { $delayClass = unserialize($ruleAction['delay']); $ruleActions[$ruleActionId]['formattedDelay'] = $delayClass->getDelayExplanation(); } } return $ruleActions; }
/** * Logs a message to the logger * * @param $message * @param \CRM_Civirules_TriggerData_TriggerData|NULL $triggerData * @param string $level Should be one of \Psr\Log\LogLevel */ protected function logAction($message, CRM_Civirules_TriggerData_TriggerData $triggerData = null, $level = \Psr\Log\LogLevel::INFO) { $context = array(); $context['message'] = $message; $context['rule_id'] = $this->ruleAction['rule_id']; $rule = new CRM_Civirules_BAO_Rule(); $rule->id = $this->ruleAction['rule_id']; $context['rule_title'] = ''; if ($rule->find(true)) { $context['rule_title'] = $rule->label; } $context['rule_action_id'] = $this->ruleAction['id']; $context['action_label'] = CRM_Civirules_BAO_Action::getActionLabelWithId($this->ruleAction['action_id']); $context['action_parameters'] = $this->userFriendlyConditionParams(); $context['contact_id'] = $triggerData ? $triggerData->getContactId() : -1; $msg = "{action_label} (ID: {rule_action_id})\r\n\r\n{message}\r\n\r\nRule: '{rule_title}' with id {rule_id}"; if ($context['contact_id'] > 0) { $msg .= "\r\nFor contact: {contact_id}"; } CRM_Civirules_Utils_LoggerFactory::log($msg, $context, $level); }