public static function emptyConditionLinkForFirstCondition($rule_id)
 {
     $conditionParams = array('is_active' => 1, 'rule_id' => $rule_id);
     $ruleConditions = CRM_Civirules_BAO_RuleCondition::getValues($conditionParams);
     if (count($ruleConditions)) {
         $ruleCondition = reset($ruleConditions);
         $ruleCondition['condition_link'] = 'null';
         CRM_Civirules_BAO_RuleCondition::add($ruleCondition);
     }
 }
 /**
  * Function to get the rule conditions for the rule
  *
  * @return array $ruleConditions
  * @access protected
  */
 protected function getRuleConditions()
 {
     $conditionParams = array('is_active' => 1, 'rule_id' => $this->ruleId);
     $ruleConditions = CRM_Civirules_BAO_RuleCondition::getValues($conditionParams);
     foreach ($ruleConditions as $ruleConditionId => $ruleCondition) {
         $conditionClass = CRM_Civirules_BAO_Condition::getConditionObjectById($ruleCondition['condition_id']);
         $conditionClass->setRuleConditionData($ruleCondition);
         $ruleConditions[$ruleConditionId]['name'] = CRM_Civirules_BAO_Condition::getConditionLabelWithId($ruleCondition['condition_id']);
         $ruleConditions[$ruleConditionId]['actions'] = $this->setRuleConditionActions($ruleConditionId, $conditionClass);
         $ruleConditions[$ruleConditionId]['formattedConditionParams'] = $conditionClass->userFriendlyConditionParams();
     }
     return $ruleConditions;
 }
 /**
  * Method to check if all conditions are valid
  *
  * @param object CRM_Civirules_TriggerData_TriggerData $triggerData
  * @return bool
  * @access protected
  * @static
  */
 protected static function areConditionsValid(CRM_Civirules_TriggerData_TriggerData $triggerData)
 {
     $isValid = true;
     $firstCondition = true;
     $conditionParams = array('rule_id' => $triggerData->getTrigger()->getRuleId());
     $ruleConditions = CRM_Civirules_BAO_RuleCondition::getValues($conditionParams);
     foreach ($ruleConditions as $ruleConditionId => $ruleCondition) {
         $isConditionValid = self::checkCondition($ruleCondition, $triggerData);
         if ($firstCondition) {
             $isValid = $isConditionValid ? true : false;
             $firstCondition = false;
         } elseif ($ruleCondition['condition_link'] == 'AND') {
             if ($isConditionValid && $isValid) {
                 $isValid = true;
             } else {
                 $isValid = false;
             }
         } elseif ($ruleCondition['condition_link'] == 'OR') {
             if ($isConditionValid || $isValid) {
                 $isValid = true;
             } else {
                 $isValid = false;
             }
         } else {
             $isValid = false;
             //we should never reach this statement
         }
     }
     return $isValid;
 }