Skip to content
Snippets Groups Projects
Commit 05602241 authored by Prasad's avatar Prasad
Browse files

Merge branch 'mailconverter-latest' into 'master'

standalone #1639 mailconverter custom actions

With this modification it's possible to add custom actions to mail converter just like custom workflow function! New action would be displayed along with default actions.

Follow this example:
```
require_once('modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc');
$emm = new MailScannerEntityMethodManager($adb);
$moduleName='HelpDesk';
$methodName='createticketcustom';
$functionName='createticketcustom_helpdesk';
$functionPath='modules/yourmodule/yourmoduleHandler.php';
$emm->removeEntityMethod($moduleName, $methodName);
$emm->addEntityMethod($moduleName, $methodName, $functionPath, $functionName);

See merge request !838
parents 4fb39d53 83aaec93
No related branches found
No related tags found
No related merge requests found
......@@ -148,6 +148,17 @@ class Vtiger_MailScannerAction {
$returnid = $this->__UpdateTicket($mailscanner, $mailrecord, $mailscannerrule->hasRegexMatch($matchresult),$mailscannerrule);
}
}
else if (!empty($this->actiontype)) {
$action = $this;
$params = array($action,$mailscanner, $mailrecord, $mailscannerrule);
require 'modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc';
global $adb;
$emm = new MailScannerEntityMethodManager($adb);
$returnid = $emm->executeMethod($this->module,$this->actiontype, $params);
}
return $returnid;
}
......
<?php
/*+*******************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
******************************************************************************/
require_once("include/events/SqlResultIterator.inc");
class MailScannerEntityMethodManager {
function __construct($adb){
$this->adb = $adb;
if (!Vtiger_Utils::CheckTable('vtiger_mailscanner_entitymethod')) {
$adb->pquery('CREATE TABLE IF NOT EXISTS `vtiger_mailscanner_entitymethod` (
`mailscanner_entitymethod_id` int(11) NOT NULL AUTO_INCREMENT,
`module_name` varchar(100) ,
`method_name` varchar(100) ,
`function_path` varchar(400) ,
`function_name` varchar(100) ,
PRIMARY KEY (`mailscanner_entitymethod_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
', array());
$adb->pquery('ALTER TABLE `vtiger_mailscanner_entitymethod`
ADD PRIMARY KEY (`mailscanner_entitymethod_id`),
ADD UNIQUE KEY `mailscanner_entitymethod_idx` (`mailscanner_entitymethod_id`);
', array());
/*
$adb->pquery('CREATE TABLE IF NOT EXISTS `vtiger_mailscanner_entitymethod_seq` (
`id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
', array());*/
$adb->pquery('ALTER TABLE `vtiger_mailscanner_actions`
CHANGE `actiontype` `actiontype` VARCHAR(100), CHANGE `module` `module` VARCHAR(100), CHANGE `lookup` `lookup` VARCHAR(100) ;
', array());
}
}
function addEntityMethod($moduleName, $methodName, $functionPath, $functionName){
$adb = $this->adb;
$id = $adb->getUniqueId("vtiger_mailscanner_entitymethod");
$adb->pquery("insert into vtiger_mailscanner_entitymethod ( module_name, function_path, function_name, method_name) values (?,?,?,?)", array( $moduleName, $functionPath, $functionName, $methodName));
}
function executeMethod($moduleName, $methodName,$params){
$adb = $this->adb;
$moduleNameModel=Vtiger_Module_Model::getInstance($moduleName);
if($moduleNameModel){
if($moduleNameModel->isActive()){
$result = $adb->pquery("select function_path, function_name from vtiger_mailscanner_entitymethod where module_name=? and method_name=?", array($moduleName, $methodName));
if($adb->num_rows($result)!=0){
$data = $adb->raw_query_result_rowdata($result, 0);
$functionPath = $data['function_path'];
$functionName = $data['function_name'];
if(file_exists($functionPath)){
require_once($functionPath);
$functionName($params);}
}
}
}
}
function methodsForModule($moduleName){
$adb = $this->adb;
$result = $adb->pquery("select method_name from vtiger_mailscanner_entitymethod where module_name=?", array($moduleName));
$it = new SqlResultIterator($adb, $result);
$methodNames = array();
foreach($it as $row){
$methodNames[] = $row->method_name;
}
return $methodNames;
}
/*
private function methodExists($object, $methodName){
$className = get_class($object);
$class = new ReflectionClass($className);
$methods = $class->getMethods();
foreach($methods as $method){
if($method->getName()==$methodName){
return true;
}
}
return false;
}*/
/**
* Function to remove mailscanner action entity method
* @param <String> Module Name
* @param <String> Entity Method Name.
*/
function removeEntityMethod($moduleName, $methodName){
$adb = $this->adb;
$adb->pquery("DELETE FROM vtiger_mailscanner_entitymethod WHERE module_name = ? and method_name= ?", array($moduleName, $methodName));
}
}
?>
\ No newline at end of file
......@@ -30,7 +30,9 @@ class Settings_MailConverter_RuleField_Model extends Vtiger_Field_Model {
}
} else if ($fieldName == 'action') {
$optionList = array('CREATE_HelpDesk_FROM', 'UPDATE_HelpDesk_SUBJECT', 'CREATE_Leads_SUBJECT', 'CREATE_Contacts_SUBJECT', 'CREATE_Accounts_SUBJECT', 'LINK_Contacts_FROM', 'LINK_Contacts_TO', 'LINK_Leads_FROM', 'LINK_Leads_TO', 'LINK_Accounts_FROM', 'LINK_Accounts_TO');
foreach ($optionList as $option) {
$optionListCustom= Settings_MailConverter_RuleRecord_Model::getCustomActions();
$optionList=array_merge($optionList,$optionListCustom);
foreach ($optionList as $option) {
$pickListValues[$option] = vtranslate($option, 'Settings::MailConverter');
}
}
......
......@@ -10,6 +10,8 @@
vimport('~~modules/Settings/MailConverter/handlers/MailScannerAction.php');
vimport('~~modules/Settings/MailConverter/handlers/MailScannerRule.php');
require_once "include/events/SqlResultIterator.inc";
class Settings_MailConverter_RuleRecord_Model extends Settings_Vtiger_Record_Model {
......@@ -250,7 +252,26 @@ class Settings_MailConverter_RuleRecord_Model extends Settings_Vtiger_Record_Mod
public static function getDefaultActions() {
return array('CREATE_HelpDesk_FROM', 'UPDATE_HelpDesk_SUBJECT', 'LINK_Contacts_FROM', 'LINK_Contacts_TO', 'LINK_Leads_FROM', 'LINK_Leads_TO', 'LINK_Accounts_FROM', 'LINK_Accounts_TO');
}
public static function getCustomActions()
{
$db = PearDatabase::getInstance();
$result = $db->pquery("SELECT module_name,method_name FROM vtiger_mailscanner_entitymethod WHERE 1=1", array());
$it = new SqlResultIterator($db, $result);
$methodNames = array();
foreach ($it as $row) {
unset($method_name);
$method_name = $row->method_name;
$module_name = $row->module_name;
$methodNames[] = $method_name . "_" . $module_name . "_" . "FROM";
$methodNames[] = $method_name . "_" . $module_name . "_" . "TO";
$methodNames[] = $method_name . "_" . $module_name . "_" . "SUBJECT";
}
return $methodNames;
}
public function getAssignedTo($scannerId, $ruleId) {
$db = PearDatabase::getInstance();
$result = $db->pquery("SELECT assigned_to FROM vtiger_mailscanner_rules WHERE scannerid = ? AND ruleid = ?", array($scannerId, $ruleId));
......
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