public static function logError($reason, $original_error, CRM_Civirules_TriggerData_TriggerData $triggerData, $context = array()) { $logger = CRM_Civirules_Utils_LoggerFactory::getLogger(); if (empty($logger)) { return; } $error = "Rule: '{rule_title}' with id {rule_id} failed for contact {contact_id} because of {reason}"; $context['rule_id'] = $triggerData->getTrigger()->getRuleId(); $context['rule_title'] = $triggerData->getTrigger()->getRuleTitle(); $context['original_error'] = $original_error; $context['contact_id'] = $triggerData->getContactId(); $context['reason'] = $reason; $logger->error($error, $context); }
/** * 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 logCondition($message, CRM_Civirules_TriggerData_TriggerData $triggerData = null, $level = \Psr\Log\LogLevel::INFO) { $context = array(); $context['message'] = $message; $context['rule_id'] = $this->ruleCondition['rule_id']; $rule = new CRM_Civirules_BAO_Rule(); $rule->id = $this->ruleCondition['rule_id']; $context['rule_title'] = ''; if ($rule->find(true)) { $context['rule_title'] = $rule->label; } $context['rule_condition_id'] = $this->ruleCondition['id']; $context['condition_label'] = CRM_Civirules_BAO_Condition::getConditionLabelWithId($this->ruleCondition['condition_id']); $context['condition_parameters'] = $this->userFriendlyConditionParams(); $context['contact_id'] = $triggerData ? $triggerData->getContactId() : -1; $msg = "{condition_label} (ID: {rule_condition_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); }
/** * Executes a delayed action * * @param \CRM_Queue_TaskContext $ctx * @param \CRM_Civirules_Action $action * @param \CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public static function executeDelayedAction(CRM_Queue_TaskContext $ctx, CRM_Civirules_Action $action, CRM_Civirules_TriggerData_TriggerData $triggerData) { try { if ($action->ignoreConditionsOnDelayedProcessing()) { $processAction = true; } else { $processAction = self::areConditionsValid($triggerData); } if ($processAction) { $action->processAction($triggerData); } } catch (Exception $e) { CRM_Civirules_Utils_LoggerFactory::logError("Failed to execute delayed action", $e->getMessage(), $triggerData); } return true; }