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;
 }