Skip to content
Snippets Groups Projects
Commit 19c1ab07 authored by Erik Hommel's avatar Erik Hommel
Browse files

added condition FirstContribution

parent b5996a4b
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,7 @@ class CRM_Civirules_Upgrader extends CRM_Civirules_Upgrader_Base {
$this->addCondition('CRM_CivirulesConditions_PrimaryEmailChanged', 'primary_email_changed', ts('Primary e-mail addres is changed'));
$this->addCondition('CRM_CivirulesConditions_AgeComparison', 'age_comparison', ts('Age comparison'));
$this->addCondition('CRM_CivirulesConditions_BirthdayChanged', 'birthday_changed', ts('Birthday changed'));
$this->addCondition('CRM_CivirulesConditions_FirstContribution', 'first_contribution_of_contact', ts('First Contribution of a Contact'));
$this->addAction('CRM_CivirulesActions_GroupContact', 'GroupContact', 'Add contact to group', 'GroupContact', 'create');
}
......
<?php
/**
* Class for CiviRule Condition FirstContribution
*
* @author Erik Hommel (CiviCooP) <erik.hommel@civicoop.org>
* @license http://www.gnu.org/licenses/agpl-3.0.html
*/
class CRM_CivirulesConditions_FirstContribution extends CRM_Civirules_Condition {
/**
* Method is mandatory and checks if the condition is met
*
* @param CRM_Civirules_EventData_EventData $eventData
* @return bool
* @access public
*/
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData)
{
$contactId = $eventData->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));
$eventContribution = $eventData->getEntityData('Contribution');
if ($eventContribution['contribution_id'] == $existingContribution['contribution_id']) {
return TRUE;
}
break;
default:
return FALSE;
break;
}
}
/**
* Method is mandatory, in this case no additional data input is required
* so it returns FALSE
*
* @param int $ruleConditionId
* @return bool
* @access public
*/
public function getExtraDataInputUrl($ruleConditionId) {
return FALSE;
}
/**
* Returns an array with required entity names
*
* @return array
* @access public
*/
public function requiredEntities() {
return array('Contribution');
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment