Skip to content
Snippets Groups Projects
Commit 995ab935 authored by angelo paglialonga's avatar angelo paglialonga
Browse files

#1639 mailconverter custom actions

parent bf90807b
No related branches found
No related tags found
2 merge requests!839#1639 mailconverter custom actions,!838standalone #1639 mailconverter custom actions
......@@ -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;
$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
......@@ -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