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

added activity type condition

parent 7e4e2fdb
Branches
Tags
No related merge requests found
......@@ -107,5 +107,44 @@ class CRM_Civirules_Utils {
}
return $actionList;
}
/**
* Function to return activity type list
*
* @return array $activityTypeList
* @access public
*/
public static function getActivityTypeList() {
$activityTypeList = array();
$activityTypeOptionGroupId = self::getOptionGroupIdWithName('activity_type');
$params = array(
'option_group_id' => $activityTypeOptionGroupId,
'is_active' => 1);
$activityTypes = civicrm_api3('OptionValue', 'Get', $params);
foreach ($activityTypes['values'] as $optionValue) {
$activityTypeList[$optionValue['value']] = $optionValue['label'];
}
return $activityTypeList;
}
/**
* Function to get the option group id of an option group with name
*
* @param string $optionGroupName
* @return int $optionGroupId
* @throws Exception when no option group activity_type is found
*/
public static function getOptionGroupIdWithName($optionGroupName) {
$params = array(
'name' => $optionGroupName,
'return' => 'id');
try {
$optionGroupId = civicrm_api3('OptionGroup', 'Getvalue', $params);
} catch (CiviCRM_API3_Exception $ex) {
throw new Exception('Could not find an option group with the name '.$optionGroupName.
', error from API OptionGroup Getvalue: '.$ex->getMessage());
}
return $optionGroupId;
}
}
......@@ -8,11 +8,45 @@
class CRM_CivirulesConditions_ActivityType extends CRM_Civirules_Condition {
public function getExtraDataInputUrl($ruleConditionId) {
private $conditionParams = array();
public function getExtraDataInputUrl($ruleConditionId) {
return CRM_Utils_System::url('civicrm/civirule/form/condition/activity_type/',
'rule_condition_id='.$ruleConditionId);
}
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
/**
* 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 check if the condition is valid, will check if the contact
* has an activity of the selected type
*
* @param object CRM_Civirules_EventData_EventData $eventData
* @return bool
* @access public
*/
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
$contactId = $eventData->getContactId();
$activities = civicrm_api3('Activity', 'Get', array('contact_id' => $contactId));
if ($activities['count'] > 0) {
foreach ($activities['values'] as $activityId => $activity) {
if ($activity['activity_type_id'] == $this->conditionParams['activity_type_id']) {
return true;
}
}
}
return false;
}
}
\ No newline at end of file
......@@ -9,8 +9,8 @@ return array (
array (
'version' => 3,
'name' => 'contribution_financial_type',
'label' => 'Birthday changed',
'class_name' => 'Contribution financial type',
'label' => 'Contribution is of financial type ...',
'class_name' => 'CRM_CivirulesConditions_ContributionFinancialType',
'is_active' => 1
),
),
......
<?php
require_once 'CRM/Core/Form.php';
/**
* Form controller class
*
* @see http://wiki.civicrm.org/confluence/display/CRMDOC43/QuickForm+Reference
*/
class CRM_CivirulesConditions_Form_ActivityType extends CRM_Core_Form {
protected $ruleConditionId = false;
/**
* Overridden parent method to perform processing before form is build
*
* @access public
*/
public function preProcess() {
$this->ruleConditionId = CRM_Utils_Request::retrieve('rule_condition_id', 'Integer');
parent::preProcess();
}
/**
* Overridden parent method to build the form
*
* @access public
*/
public function buildQuickForm() {
$this->add('hidden', 'rule_condition_id');
$activityTypeList = array('- select -') + CRM_Civirules_Utils::getActivityTypeList();
asort($activityTypeList);
$this->add('select', 'activity_type_id', 'Activity Type', $activityTypeList, true);
$this->addButtons(array(
array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,),
array('type' => 'cancel', 'name' => ts('Cancel'))));
parent::buildQuickForm();
}
/**
* Overridden parent method to set default values
*
* @return array $defaultValues
* @access public
*/
public function setDefaultValues() {
$data = array();
$defaultValues = array();
$defaultValues['rule_condition_id'] = $this->ruleConditionId;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$data = unserialize($ruleCondition->condition_params);
}
if (!empty($data['activity_type_id'])) {
$defaultValues['activity_type_id'] = $data['activity_type_id'];
}
return $defaultValues;
}
/**
* Overridden parent method to perform data processing once form is submitted
*
* @access public
*/
public function postProcess() {
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
$conditionLabel = '';
if ($ruleCondition->find(true)) {
$ruleId = $ruleCondition->rule_id;
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$conditionLabel = $condition->label;
}
} else {
throw new Exception('Could not find rule condition');
}
$data['activity_type_id'] = $this->_submitValues['activity_type_id'];
$ruleCondition->condition_params = serialize($data);
$ruleCondition->save();
$session = CRM_Core_Session::singleton();
$session->setStatus('Condition '.$conditionLabel.' parameters updated to CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleId),
'Condition parameters updated', 'success');
$redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$ruleId, TRUE);
CRM_Utils_System::redirect($redirectUrl);
}
/**
* Method to set the form title
*
* @access protected
*/
protected function setFormTitle() {
$conditionLabel = '';
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$conditionLabel = $condition->label;
}
}
$title = 'CiviRules Edit Condition parameters';
$this->assign('ruleConditionHeader', 'Edit Condition '.$conditionLabel.' of CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleCondition->rule_id));
CRM_Utils_System::setTitle($title);
}
}
\ No newline at end of file
......@@ -74,7 +74,6 @@ class CRM_CivirulesConditions_Form_ContributionFinancialType extends CRM_Core_Fo
* @access public
*/
public function postProcess() {
$ruleId = 0;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
$condition_label = '';
......@@ -99,7 +98,8 @@ class CRM_CivirulesConditions_Form_ContributionFinancialType extends CRM_Core_Fo
'Condition parameters updated', 'success');
$redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$ruleId, TRUE);
CRM_Utils_System::redirect($redirectUrl); }
CRM_Utils_System::redirect($redirectUrl);
}
/**
* Method to set the form title
......
......@@ -3,7 +3,7 @@
// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file
/**
* (Delegated) Implementation of hook_civicrm_config
* (Delegated) Implements hook_civicrm_config().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
*/
......@@ -28,7 +28,7 @@ function _civirules_civix_civicrm_config(&$config = NULL) {
}
/**
* (Delegated) Implementation of hook_civicrm_xmlMenu
* (Delegated) Implements hook_civicrm_xmlMenu().
*
* @param $files array(string)
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
......@@ -40,7 +40,7 @@ function _civirules_civix_civicrm_xmlMenu(&$files) {
}
/**
* Implementation of hook_civicrm_install
* Implements hook_civicrm_install().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
*/
......@@ -52,7 +52,7 @@ function _civirules_civix_civicrm_install() {
}
/**
* Implementation of hook_civicrm_uninstall
* Implements hook_civicrm_uninstall().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
*/
......@@ -64,7 +64,7 @@ function _civirules_civix_civicrm_uninstall() {
}
/**
* (Delegated) Implementation of hook_civicrm_enable
* (Delegated) Implements hook_civicrm_enable().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
*/
......@@ -78,7 +78,7 @@ function _civirules_civix_civicrm_enable() {
}
/**
* (Delegated) Implementation of hook_civicrm_disable
* (Delegated) Implements hook_civicrm_disable().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
* @return mixed
......@@ -93,7 +93,7 @@ function _civirules_civix_civicrm_disable() {
}
/**
* (Delegated) Implementation of hook_civicrm_upgrade
* (Delegated) Implements hook_civicrm_upgrade().
*
* @param $op string, the type of operation being performed; 'check' or 'enqueue'
* @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks
......@@ -158,7 +158,7 @@ function _civirules_civix_find_files($dir, $pattern) {
return $result;
}
/**
* (Delegated) Implementation of hook_civicrm_managed
* (Delegated) Implements hook_civicrm_managed().
*
* Find any *.mgd.php files, merge their content, and return.
*
......@@ -178,7 +178,7 @@ function _civirules_civix_civicrm_managed(&$entities) {
}
/**
* (Delegated) Implementation of hook_civicrm_caseTypes
* (Delegated) Implements hook_civicrm_caseTypes().
*
* Find any and return any files matching "xml/case/*.xml"
*
......@@ -263,7 +263,7 @@ function _civirules_civix_insert_navigation_menu(&$menu, $path, $item, $parentId
}
/**
* (Delegated) Implementation of hook_civicrm_alterSettingsFolders
* (Delegated) Implements hook_civicrm_alterSettingsFolders().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
*/
......
<h3>{$ruleConditionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-activity-type">
<div class="crm-section">
<div class="label">{$form.activity_type_id.label}</div>
<div class="content">{$form.activity_type_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
......@@ -25,27 +25,33 @@
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/datacomparison</path>
<page_callback>CRM_CivirulesConditions_Form_ValueComparison</page_callback>
<title>Value comparison</title>
<access_arguments>access CiviCRM</access_arguments>
<path>civicrm/civirule/form/condition/datacomparison</path>
<page_callback>CRM_CivirulesConditions_Form_ValueComparison</page_callback>
<title>Value comparison</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/contributionstatus</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionStatus</page_callback>
<title>contribution status</title>
<access_arguments>access CiviCRM</access_arguments>
<path>civicrm/civirule/form/condition/contributionstatus</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionStatus</page_callback>
<title>contribution status</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/contribution_financialtype</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionFinancialType</page_callback>
<title>financial type</title>
<access_arguments>access CiviCRM</access_arguments>
<path>civicrm/civirule/form/condition/contribution_financialtype</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionFinancialType</page_callback>
<title>financial type</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/action/groupcontact</path>
<page_callback>CRM_CivirulesActions_Form_GroupContact</page_callback>
<title>Group contact</title>
<access_arguments>access CiviCRM</access_arguments>
<path>civicrm/civirule/form/action/groupcontact</path>
<page_callback>CRM_CivirulesActions_Form_GroupContact</page_callback>
<title>Group contact</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/activity_type</path>
<page_callback>CRM_CivirulesConditions_Form_ActivityType</page_callback>
<title>Activity Type</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
</menu>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment