Skip to content
Snippets Groups Projects
Commit 192495b9 authored by jaapjansma's avatar jaapjansma
Browse files

added activity add action

parent 43cc7b9a
Branches
Tags
No related merge requests found
<?php
return array (
0 =>
array (
'name' => 'Civirules:Action.ActivityAdd',
'entity' => 'CiviRuleAction',
'params' =>
array (
'version' => 3,
'name' => 'ActivityAdd',
'label' => 'Add activity to contact',
'class_name' => 'CRM_CivirulesActions_Activity_Add',
'is_active' => 1
),
),
);
\ No newline at end of file
<?php
/**
* Class for CiviRules adding an activity to the system
*
* @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org>
* @license AGPL-3.0
*/
class CRM_CivirulesActions_Activity_Add extends CRM_CivirulesActions_Generic_Api {
/**
* Returns an array with parameters used for processing an action
*
* @param array $params
* @param object CRM_Civirules_EventData_EventData $eventData
* @return array $params
* @access protected
*/
protected function alterApiParameters($params, CRM_Civirules_EventData_EventData $eventData) {
$action_params = $this->getActionParameters();
//this function could be overridden in subclasses to alter parameters to meet certain criteraia
$params['target_contact_id'] = $eventData->getContactId();
$params['activity_type_id'] = $action_params['activity_type_id'];
$params['status_id'] = $action_params['status_id'];
$params['subject'] = $action_params['subject'];
if (!empty($action_params['assignee_contact_id'])) {
$params['assignee_contact_id'] = $action_params['assignee_contact_id'];
}
return $params;
}
/**
* Returns a redirect url to extra data input from the user after adding a action
*
* Return false if you do not need extra data input
*
* @param int $ruleActionId
* @return bool|string
* @access public
*/
public function getExtraDataInputUrl($ruleActionId) {
return CRM_Utils_System::url('civicrm/civirule/form/action/activity', 'rule_action_id='.$ruleActionId);
}
/**
* Returns a user friendly text explaining the condition params
* e.g. 'Older than 65'
*
* @return string
* @access public
*/
public function userFriendlyConditionParams() {
$return = '';
$params = $this->getActionParameters();
$type = CRM_Core_OptionGroup::getLabel('activity_type', $params['activity_type_id']);
$return .= ts("Type: %1", array(1 => $type));
$status = CRM_Core_OptionGroup::getLabel('activity_status', $params['status_id']);
$return .= "<br>";
$return .= ts("Status: %1", array(1 => $status));
$subject = $params['subject'];
if (!empty($subject)) {
$return .= "<br>";
$return .= ts("Subject: %1", array(1 => $subject));
}
if (!empty($params['assignee_contact_id'])) {
$assignee = civicrm_api3('Contact', 'getvalue', array('return' => 'display_name', 'id' => $params['assignee_contact_id']));
$return .= '<br>';
$return .= ts("Assignee: %1", array(1 => $assignee));
}
return $return;
}
/**
* Method to set the api entity
*
* @return string
* @access protected
*/
protected function getApiEntity() {
return 'Activity';
}
/**
* Method to set the api action
*
* @return string
* @access protected
*/
protected function getApiAction() {
return 'create';
}
}
\ No newline at end of file
<?php
/**
* Class for CiviRules Group Contact Action Form
*
* @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org>
* @license AGPL-3.0
*/
class CRM_CivirulesActions_Activity_Form_Activity extends CRM_CivirulesActions_Form_Form {
/**
* Overridden parent method to build the form
*
* @access public
*/
public function buildQuickForm() {
$this->add('hidden', 'rule_action_id');
$this->add('select', 'activity_type_id', ts('Activity type'), array('' => ts('-- please select --')) + CRM_Core_OptionGroup::values('activity_type'), true);
$this->add('select', 'status_id', ts('Status'), array('' => ts('-- please select --')) + CRM_Core_OptionGroup::values('activity_status'), true);
$this->add('text', 'subject', ts('Subject'));
$data = unserialize($this->ruleAction->action_params);
$assignees = array();
if (!empty($data['assignee_contact_id'])) {
$assignees[] = $data['assignee_contact_id'];
}
$this->assign('selectedContacts', implode(",", $assignees));
CRM_Contact_Form_NewContact::buildQuickForm($this);
$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->ruleAction->action_params);
if (!empty($data['activity_type_id'])) {
$defaultValues['activity_type_id'] = $data['activity_type_id'];
}
if (!empty($data['status_id'])) {
$defaultValues['status_id'] = $data['status_id'];
}
if (!empty($data['subject'])) {
$defaultValues['subject'] = $data['subject'];
}
return $defaultValues;
}
/**
* Overridden parent method to process form data after submitting
*
* @access public
*/
public function postProcess() {
$data['activity_type_id'] = $this->_submitValues['activity_type_id'];
$data['status_id'] = $this->_submitValues['status_id'];
$data['subject'] = $this->_submitValues['subject'];
$data['assignee_contact_id'] = false;
$values = $this->controller->exportValues();
if (!empty($values['contact_select_id']) && count($values['contact_select_id']) > 0) {
$data['assignee_contact_id'] = reset($values['contact_select_id']);
}
$this->ruleAction->action_params = serialize($data);
$this->ruleAction->save();
parent::postProcess();
}
}
\ No newline at end of file
<h3>{$ruleActionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_action-block-activity">
<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 class="crm-section">
<div class="label">{$form.status_id.label}</div>
<div class="content">{$form.status_id.html}</div>
<div class="clear"></div>
</div>
<div class="crm-section">
<div class="label">{$form.subject.label}</div>
<div class="content">{$form.subject.html}</div>
<div class="clear"></div>
</div>
<div class="crm-section">
<div class="label">{ts}Assignee{/ts}</div>
<div class="content">
{include file="CRM/Contact/Form/NewContact.tpl" noLabel=true skipBreak=true multiClient=false showNewSelect=false}
</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
......@@ -63,7 +63,13 @@
<item>
<path>civicrm/civirule/form/action/tag</path>
<page_callback>CRM_CivirulesActions_Tag_Form_TagId</page_callback>
<title>Group contact</title>
<title>Tag</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/action/activity</path>
<page_callback>CRM_CivirulesActions_Activity_Form_Activity</page_callback>
<title>Activity</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment