Skip to content
Snippets Groups Projects
Commit 6c98c680 authored by jaapjansma's avatar jaapjansma
Browse files
parents 4a10dee2 b15b6b9a
No related branches found
No related tags found
No related merge requests found
......@@ -50,14 +50,14 @@ class CRM_Civirules_Page_Rule extends CRM_Core_Page {
$rowActions = array();
$updateUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'reset=1&action=update&id='.
$rule['id']);
$deleteUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'reset=1&action=delete&id='.
$rule['id']);
//$deleteUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'reset=1&action=delete&id='.
//$rule['id']);
$disableUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'reset=1&action=disable&id='.
$rule['id']);
$enableUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'reset=1&action=enable&id='.
$rule['id']);
$rowActions[] = '<a class="action-item" title="Update" href="'.$updateUrl.'">Edit</a>';
$rowActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Delete</a>';
//$rowActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Delete</a>';
if ($rule['is_active'] == 1) {
$rowActions[] = '<a class="action-item" title="Disable" href="'.$disableUrl.'">Disable</a>';
} else {
......
......@@ -9,7 +9,7 @@ return array (
array (
'version' => 3,
'name' => 'contribution_financial_type',
'label' => 'Contribution is of financial type ...',
'label' => 'Contribution is (not) of financial type ...',
'class_name' => 'CRM_CivirulesConditions_Contribution_FinancialType',
'is_active' => 1
),
......
......@@ -18,12 +18,29 @@ class CRM_CivirulesConditions_Contribution_FinancialType extends CRM_Civirules_C
}
}
/**
* Method to determine if the condition is valid
*
* @param CRM_Civirules_EventData_EventData $eventData
* @return bool
*/
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
$isConditionValid = FALSE;
$contribution = $eventData->getEntityData('Contribution');
if ($contribution['financial_type_id'] == $this->conditionParams['financial_type_id']) {
return true;
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 false;
return $isConditionValid;
}
/**
......@@ -50,8 +67,15 @@ class CRM_CivirulesConditions_Contribution_FinancialType extends CRM_Civirules_C
public function userFriendlyConditionParams() {
$financialType = new CRM_Financial_BAO_FinancialType();
$financialType->id = $this->conditionParams['financial_type_id'];
$operator = null;
if ($this->conditionParams['operator'] == 0) {
$operator = 'equals';
}
if ($this->conditionParams['operator'] == 1) {
$operator = 'is not equal to';
}
if ($financialType->find(true)) {
return 'Financial type is '.$financialType->name;
return 'Financial type '.$operator.' '.$financialType->name;
}
return '';
}
......
<?php
return array (
0 =>
array (
'name' => 'Civirules:Condition.ContributionPaidBy',
'entity' => 'CiviRuleCondition',
'params' =>
array (
'version' => 3,
'name' => 'contribution_paid_by',
'label' => 'Contribution is (not) paid by ...',
'class_name' => 'CRM_CivirulesConditions_Contribution_PaidBy',
'is_active' => 1
),
),
);
\ No newline at end of file
<?php
class CRM_CivirulesConditions_Contribution_PaidBy extends CRM_Civirules_Condition {
private $conditionParams = array();
/**
* Method to set the Rule Condition data
*
* @param array $ruleCondition
* @access public
*/
public function setRuleConditionData($ruleCondition) {
parent::setRuleConditionData($ruleCondition);
$this->conditionParams = array();
if (!empty($this->ruleCondition['condition_params'])) {
$this->conditionParams = unserialize($this->ruleCondition['condition_params']);
}
}
/**
* Method to determine if the condition is valid
*
* @param CRM_Civirules_EventData_EventData $eventData
* @return bool
*/
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
$isConditionValid = FALSE;
$contribution = $eventData->getEntityData('Contribution');
switch ($this->conditionParams['operator']) {
case 0:
if ($contribution['payment_instrument_id'] == $this->conditionParams['payment_instrument_id']) {
$isConditionValid = TRUE;
}
break;
case 1:
if ($contribution['payment_instrument_id'] != $this->conditionParams['payment_instrument_id']) {
$isConditionValid = TRUE;
}
break;
}
return $isConditionValid;
}
/**
* Returns a redirect url to extra data input from the user after adding a condition
*
* Return false if you do not need extra data input
*
* @param int $ruleConditionId
* @return bool|string
* @access public
* @abstract
*/
public function getExtraDataInputUrl($ruleConditionId) {
return CRM_Utils_System::url('civicrm/civirule/form/condition/contribution_paidby/', 'rule_condition_id='.$ruleConditionId);
}
/**
* Returns a user friendly text explaining the condition params
* e.g. 'Older than 65'
*
* @return string
* @access public
*/
public function userFriendlyConditionParams() {
$operator = null;
if ($this->conditionParams['operator'] == 0) {
$operator = 'equals';
}
if ($this->conditionParams['operator'] == 1) {
$operator = 'is not equal to';
}
$paymentInstrumentName = $this->getPaymentInstrumentName();
if (!empty($paymentInstrumentName)) {
return 'Paid by '.$operator.' '.$paymentInstrumentName;
}
return '';
}
/**
* Method to get payment instrument
*
* @return string|null
* @access protected
*/
protected function getPaymentInstrumentName() {
$paymentInstrumentName = null;
if (!empty($this->conditionParams['payment_instrument_id'])) {
$optionGroupParams = array(
'name' => 'payment_instrument',
'return' => 'id');
try {
$optionGroupId = civicrm_api3('OptionGroup', 'Getvalue', $optionGroupParams);
$optionValueParams = array(
'option_group_id' => $optionGroupId,
'is_active' => 1,
'value' => $this->conditionParams['payment_instrument_id'],
'return' => 'label');
try {
$paymentInstrumentName = civicrm_api3('OptionValue', 'Getvalue', $optionValueParams);
} catch (CiviCRM_API3_Exception $ex) {}
} catch (CiviCRM_API3_Exception $ex) {}
}
return $paymentInstrumentName;
}
/**
* Returns an array with required entity names
*
* @return array
* @access public
*/
public function requiredEntities() {
return array('Contribution');
}
}
\ No newline at end of file
<?php
/**
* Class for CiviRules ValueComparison Form
* Class for CiviRules Condition Contribution Financial Type Form
*
* @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org>
* @license AGPL-3.0
......@@ -8,6 +8,10 @@
class CRM_CivirulesConditions_Form_Contribution_FinancialType extends CRM_CivirulesConditions_Form_Form {
/**
* Method to get the financial types
* @return array
*/
protected function getFinancialTypes() {
$return = array('' => ts('-- please select --'));
$dao = CRM_Core_DAO::executeQuery("SELECT * FROM `civicrm_financial_type` where `is_active` = 1");
......@@ -26,6 +30,7 @@ class CRM_CivirulesConditions_Form_Contribution_FinancialType extends CRM_Civiru
$this->add('hidden', 'rule_condition_id');
$this->add('select', 'financial_type_id', ts('Financial type'), $this->getFinancialTypes(), true);
$this->add('select', 'operator', ts('Operator'), array('equals', 'is not equal to'), true);
$this->addButtons(array(
array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,),
......@@ -44,6 +49,9 @@ class CRM_CivirulesConditions_Form_Contribution_FinancialType extends CRM_Civiru
if (!empty($data['financial_type_id'])) {
$defaultValues['financial_type_id'] = $data['financial_type_id'];
}
if (!empty($data['operator'])) {
$defaultValues['operator'] = $data['operator'];
}
return $defaultValues;
}
......@@ -55,6 +63,7 @@ class CRM_CivirulesConditions_Form_Contribution_FinancialType extends CRM_Civiru
*/
public function postProcess() {
$data['financial_type_id'] = $this->_submitValues['financial_type_id'];
$data['operator'] = $this->_submitValues['operator'];
$this->ruleCondition->condition_params = serialize($data);
$this->ruleCondition->save();
......
<?php
/**
* Class for CiviRules Condition Contribution Paid By Form
*
* @author Erik Hommel (CiviCooP) <erik.hommel@civicoop.org>
* @license AGPL-3.0
*/
class CRM_CivirulesConditions_Form_Contribution_PaidBy extends CRM_CivirulesConditions_Form_Form {
/**
* Method to get the payment instruments
*
* @return array
* @throws Exception when error in API
* @access protected
*/
protected function getPaymentInstruments() {
$paymentInstruments = array();
try {
$optionGroupId = civicrm_api3('OptionGroup', 'Getvalue', array('name' => 'payment_instrument', 'return' => 'id'));
try {
$optionValues = civicrm_api3('OptionValue', 'Get', array('option_group_id' => $optionGroupId));
foreach ($optionValues['values'] as $paymentInstrument) {
$paymentInstruments[$paymentInstrument['value']] = $paymentInstrument['label'];
}
$paymentInstruments[0] = '- select -';
asort($paymentInstruments);
} catch (CiviCRM_API3_Exception $ex) {}
} catch (CiviCRM_API3_Exception $ex) {
throw new Exception('Option group with name payment_instrument not found,
error from API OptionGroup Getvalue: '.$ex->getMessage());
}
return $paymentInstruments;
}
/**
* Overridden parent method to build form
*
* @access public
*/
public function buildQuickForm() {
$this->add('hidden', 'rule_condition_id');
$this->add('select', 'payment_instrument_id', ts('Payment instrument'), $this->getPaymentInstruments(), true);
$this->add('select', 'operator', ts('Operator'), array('equals', 'is not equal to'), true);
$this->addButtons(array(
array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,),
array('type' => 'cancel', 'name' => ts('Cancel'))));
}
/**
* Overridden parent method to set default values
*
* @return array $defaultValues
* @access public
*/
public function setDefaultValues() {
$defaultValues = parent::setDefaultValues();
$data = unserialize($this->ruleCondition->condition_params);
if (!empty($data['payment_instrument_id'])) {
$defaultValues['payment_instrument_id'] = $data['payment_instrument_id'];
}
if (!empty($data['operator'])) {
$defaultValues['operator'] = $data['operator'];
}
return $defaultValues;
}
/**
* Overridden parent method to process form data after submission
*
* @throws Exception when rule condition not found
* @access public
*/
public function postProcess() {
$data['payment_instrument_id'] = $this->_submitValues['payment_instrument_id'];
$data['operator'] = $this->_submitValues['operator'];
$this->ruleCondition->condition_params = serialize($data);
$this->ruleCondition->save();
parent::postProcess();
}
}
\ No newline at end of file
<h3>{$ruleConditionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-contribution_status">
<div class="crm-section">
<div class="label">{$form.financial_type_id.label}</div>
<div class="content">{$form.financial_type_id.html}</div>
<div class="clear"></div>
</div>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-contribution_financialtype">
<div class="crm-section">
<div class="label">{$form.operator.label}</div>
<div class="content">{$form.operator.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-section">
<div class="label">{$form.financial_type_id.label}</div>
<div class="content">{$form.financial_type_id.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-submit-buttons">
{include file="CRM/common/formButtons.tpl" location="bottom"}
......
<h3>{$ruleConditionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-contribution_paidby">
<div class="crm-section">
<div class="label">{$form.operator.label}</div>
<div class="content">{$form.operator.html}</div>
<div class="clear"></div>
</div>
<div class="crm-section">
<div class="label">{$form.payment_instrument_id.label}</div>
<div class="content">{$form.payment_instrument_id.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-submit-buttons">
{include file="CRM/common/formButtons.tpl" location="bottom"}
</div>
\ No newline at end of file
......@@ -54,6 +54,12 @@
<title>financial type</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/contribution_paidby</path>
<page_callback>CRM_CivirulesConditions_Form_Contribution_PaidBy</page_callback>
<title>paid by</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/action/groupcontact</path>
<page_callback>CRM_CivirulesActions_GroupContact_Form_GroupId</page_callback>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment