diff --git a/modules/Settings/MailConverter/handlers/MailScannerAction.php b/modules/Settings/MailConverter/handlers/MailScannerAction.php index 8200b59663fff4bf9efb203dcbe7996c78543003..1ff8ef60f48ea753e8044eae47450fabad92739e 100644 --- a/modules/Settings/MailConverter/handlers/MailScannerAction.php +++ b/modules/Settings/MailConverter/handlers/MailScannerAction.php @@ -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; } diff --git a/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc b/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc new file mode 100644 index 0000000000000000000000000000000000000000..0a25d1608c6e1331bf14237eeb318adc18e64045 --- /dev/null +++ b/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc @@ -0,0 +1,101 @@ +<?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; + + $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']; + 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 diff --git a/modules/Settings/MailConverter/models/RuleField.php b/modules/Settings/MailConverter/models/RuleField.php index d8d95d03edcf25a5ba39738f9dca86458d859164..b14191ef01512fe7f4dd764e236aa041acc384e8 100644 --- a/modules/Settings/MailConverter/models/RuleField.php +++ b/modules/Settings/MailConverter/models/RuleField.php @@ -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'); } } diff --git a/modules/Settings/MailConverter/models/RuleRecord.php b/modules/Settings/MailConverter/models/RuleRecord.php index 443578f1344c92e3da1e394aadb926d96b83781d..341dffef6c2f56da75498c07bf07dd893ae59a08 100644 --- a/modules/Settings/MailConverter/models/RuleRecord.php +++ b/modules/Settings/MailConverter/models/RuleRecord.php @@ -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));