コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData)
 {
     $relationship = $triggerData->getEntityData('Relationship');
     if (empty($relationship)) {
         return true;
     }
     return false;
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
 /**
  * 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;
 }
コード例 #6
0
 public function isConditionValid(CRM_Civirules_TriggerData_TriggerData $triggerData)
 {
     $groupContact = $triggerData->getEntityData('GroupContact');
     if ($groupContact['group_id'] == $this->conditionParams['group_id']) {
         return true;
     }
     return false;
 }
コード例 #7
0
 /**
  * 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
 }
コード例 #8
0
 /**
  * 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;
 }
コード例 #9
0
 /**
  * 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;
 }
コード例 #10
0
    /**
     * 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;
    }
コード例 #11
0
 /**
  * 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;
 }
コード例 #12
0
 /**
  * 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;
 }
コード例 #13
0
 /**
  * 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;
 }
コード例 #14
0
 /**
  * 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;
 }
コード例 #15
0
 /**
  * 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;
     }
 }
コード例 #16
0
 /**
  * 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) {
     }
 }
コード例 #17
0
 /**
  * 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;
 }