/** * Returns the value of the field for the condition * For example: I want to check if age > 50, this function would return the 50 * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return * @access protected * @abstract */ protected function getFieldValue(CRM_Civirules_TriggerData_TriggerData $triggerData) { $entity = $this->conditionParams['entity']; $field = $this->conditionParams['field']; $data = $triggerData->getEntityData($entity); if (isset($data[$field])) { return $this->normalizeValue($data[$field]); } if (strpos($field, 'custom_') === 0) { $custom_field_id = str_replace("custom_", "", $field); try { $params['entityID'] = $data['id']; $params[$field] = 1; $values = CRM_Core_BAO_CustomValueTable::getValues($params); if (!empty($values[$field])) { return $this->normalizeValue($values[$field]); } elseif (!empty($values['error_message'])) { $custom_values = $triggerData->getCustomFieldValues($custom_field_id); if (!empty($custom_values)) { return $this->normalizeValue(reset($custom_values)); } } } catch (Exception $e) { //do nothing } } return null; }
public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $contribution = $triggerData->getEntityData('Contribution'); if ($contribution['contribution_status_id'] == $this->conditionParams['contribution_status_id']) { return true; } return false; }
public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $relationship = $triggerData->getEntityData('Relationship'); if (empty($relationship)) { return true; } return false; }
/** * Method to check if the condition is valid, will check if the contact * has an activity of the selected type * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool * @access public */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $ActivityContact = $triggerData->getEntityData('ActivityContact'); if ($ActivityContact['record_type_id'] == $this->conditionParams['record_type_id']) { return true; } return false; }
/** * Method to check if the condition is valid, will check if the contact * has an activity of the selected type * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool * @access public */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $activity = $triggerData->getEntityData('Activity'); if ($activity['activity_type_id'] == $this->conditionParams['activity_type_id']) { return true; } return false; }
public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $groupContact = $triggerData->getEntityData('GroupContact'); if ($groupContact['group_id'] == $this->conditionParams['group_id']) { return true; } return false; }
/** * Returns value of the field * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return mixed * @access protected */ protected function getFieldValue(CRM_Civirules_TriggerData_TriggerData $triggerData) { $contribution = $triggerData->getEntityData('Contribution'); if (isset($contribution['total_amount'])) { return (double) $contribution['total_amount']; } return (double) 0.0; //undefined birth date }
/** * Returns the value of the field for the condition * For example: I want to check if age > 50, this function would return the 50 * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return mixed * @access protected */ protected function getFieldValue(CRM_Civirules_TriggerData_TriggerData $triggerData) { $field = 'status_id'; $data = $triggerData->getEntityData('Case'); if (isset($data[$field])) { return $data[$field]; } return null; }
/** * Method to determine if the condition is valid * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $isConditionValid = FALSE; $recurring = $triggerData->getEntityData('ContributionRecur'); if ($this->conditionParams['end_date'] == 0 && empty($recurring['end_date'])) { $isConditionValid = TRUE; } if ($this->conditionParams['end_date'] == 1 && !empty($recurring['end_date'])) { $isConditionValid = TRUE; } return $isConditionValid; }
/** * Method to determine if the condition is valid * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $isConditionValid = FALSE; $contribution = $triggerData->getEntityData('Contribution'); /* * retrieve count of completed contributions for donor where recurring_contribution_id is not empty */ $query = 'SELECT COUNT(*) AS recurringContributions FROM civicrm_contribution WHERE contact_id = %1 AND civicrm_contribution.contribution_recur_id > %2 AND contribution_status_id = %3'; $params = array(1 => array($contribution['contact_id'], 'Positive'), 2 => array(0, 'Positive'), 3 => array(CRM_Civirules_Utils::getContributionStatusIdWithName('Completed'), 'String')); $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { switch ($this->conditionParams['operator']) { case 1: if ($dao->recurringContributions != $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; case 2: if ($dao->recurringContributions > $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; case 3: if ($dao->recurringContributions >= $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; case 4: if ($dao->recurringContributions < $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; case 5: if ($dao->recurringContributions <= $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; default: if ($dao->recurringContributions == $this->conditionParams['no_of_recurring']) { $isConditionValid = TRUE; } break; } } return $isConditionValid; }
/** * Method to determine if the condition is valid * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $isConditionValid = FALSE; $membership = $triggerData->getEntityData('Membership'); switch ($this->conditionParams['operator']) { case 0: if ($membership['membership_type_id'] == $this->conditionParams['membership_type_id']) { $isConditionValid = TRUE; } break; case 1: if ($membership['membership_type_id'] != $this->conditionParams['membership_type_id']) { $isConditionValid = TRUE; } break; } return $isConditionValid; }
/** * Method to determine if the condition is valid * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $isConditionValid = FALSE; $contribution = $triggerData->getEntityData('Contribution'); switch ($this->conditionParams['operator']) { case 0: if ($contribution['financial_type_id'] == $this->conditionParams['financial_type_id']) { $isConditionValid = TRUE; } break; case 1: if ($contribution['financial_type_id'] != $this->conditionParams['financial_type_id']) { $isConditionValid = TRUE; } break; } return $isConditionValid; }
/** * Method to determine if the condition is valid * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $isConditionValid = FALSE; $this->buildWhereClauses($triggerData->getEntityData('Contribution')); if (!empty($this->whereClauses)) { $query = 'SELECT COUNT(*) as countContributions FROM civicrm_contribution WHERE ' . implode(' AND ', $this->whereClauses); $dao = CRM_Core_DAO::executeQuery($query, $this->whereParams); if ($dao->fetch()) { switch ($this->conditionParams['count_operator']) { case 1: if ($dao->countContributions != $this->conditionParams['no_of_contributions']) { $isConditionValid = TRUE; } break; case 2: if ($dao->countContributions > $this->conditionParams['no_of_contributions']) { $isConditionValid = TRUE; } break; case 3: if ($dao->countContributions >= $this->conditionParams['no_of_contributions']) { $isConditionValid = TRUE; } break; case 4: if ($dao->countContributions < $this->conditionParams['no_of_contributions']) { $isConditionValid = TRUE; } break; case 5: if ($dao->countContributions <= $this->conditionParams['no_of_contributions']) { $isConditionValid = TRUE; } break; default: if ($dao->countContributions == $this->conditionParams['no_of_contribution']) { $isConditionValid = TRUE; } break; } } } return $isConditionValid; }
/** * Returns the value of the field for the condition * For example: I want to check if age > 50, this function would return the 50 * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return * @access protected * @abstract */ protected function getFieldValue(CRM_Civirules_TriggerData_TriggerData $triggerData) { $entity = $this->conditionParams['entity']; $field = $this->conditionParams['field']; $data = $triggerData->getEntityData($entity); if (isset($data[$field])) { return $this->normalizeValue($data[$field]); } if ($this->isRelativeDate($field)) { $relativeDate = $this->parseRelativeDate($field); $field = $relativeDate['field']; $interval = $relativeDate['interval']; if (isset($data[$field])) { $date = new DateTime($data[$field]); $today = new DateTime("now"); $diff = $date->diff($today); return $this->normalizeValue($diff->format('%' . $interval)); } } if (strpos($field, 'custom_') === 0) { $custom_field_id = str_replace("custom_", "", $field); try { $params['entityID'] = $data['id']; $params[$field] = 1; $values = CRM_Core_BAO_CustomValueTable::getValues($params); $value = null; if (!empty($values[$field])) { $value = $this->normalizeValue($values[$field]); } elseif (!empty($values['error_message'])) { $value = $triggerData->getCustomFieldValue($custom_field_id); } if ($value !== null) { $value = $this->convertMultiselectCustomfieldToArray($custom_field_id, $value); return $this->normalizeValue($value); } } catch (Exception $e) { //do nothing } } return null; }
/** * Method is mandatory and checks if the condition is met * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @return bool * @access public */ public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData) { $contactId = $triggerData->getContactId(); $contributionParams = array('contact_id' => $contactId); $countContributions = civicrm_api3('Contribution', 'getcount', $contributionParams); switch ($countContributions) { case 0: return TRUE; break; case 1: $existingContribution = civicrm_api3('Contribution', 'Getsingle', array('contact_id' => $contactId)); $triggerContribution = $triggerData->getEntityData('Contribution'); if ($triggerContribution['contribution_id'] == $existingContribution['contribution_id']) { return TRUE; } break; default: return FALSE; break; } }
/** * Method processAction to execute the action * * @param CRM_Civirules_TriggerData_TriggerData $triggerData * @access public * */ public function processAction(CRM_Civirules_TriggerData_TriggerData $triggerData) { $contribution = $triggerData->getEntityData('Contribution'); $actionParams = $this->getActionParameters(); switch ($actionParams['thank_you_radio']) { case 1: if (!empty($actionParams['number_of_days'])) { $thankYouDate = new DateTime(); $thankYouDate->modify('+' . $actionParams['number_of_days'] . ' day'); } break; case 2: $thankYouDate = new DateTime($actionParams['thank_you_date']); break; default: $thankYouDate = new DateTime(); break; } $params = array('id' => $contribution['id'], 'thankyou_date' => $thankYouDate->format('Ymd')); try { civicrm_api3('Contribution', 'Create', $params); } catch (CiviCRM_API3_Exception $ex) { } }
/** * Method to get the field data * * @param object CRM_Civirules_TriggerData_TriggerData $triggerData * @return mixed|null * @access protected */ protected function getFieldData(CRM_Civirules_TriggerData_TriggerData $triggerData) { $entity = $this->getEntity(); $data = $triggerData->getEntityData($entity); $field = $this->getField(); if (isset($data[$field])) { return $this->transformFieldData($data[$field]); } return null; }