Files
crm.clientright.ru/modules/EMAILMaker/actions/IndexAjax.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

941 lines
39 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/* * *******************************************************************************
* The content of this file is subject to the EMAIL Maker license.
* ("License"); You may not use this file except in compliance with the License
* The Initial Developer of the Original Code is IT-Solutions4You s.r.o.
* Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o.
* All Rights Reserved.
* ****************************************************************************** */
class EMAILMaker_IndexAjax_Action extends Vtiger_Action_Controller
{
public function __construct()
{
parent::__construct();
$Methods = array(
'checkDuplicateKey',
'SaveCustomLabel',
'SaveCustomLabelValues',
'deleteCustomLabel',
'DeleteCustomLabels',
'SaveProductBlock',
'deleteProductBlocks',
'DeleteProductBlock',
'DeleteTheme',
'DeleteTemplate',
'updateLinkForModule',
'controlEmails',
'sendEmail',
'getDocuments',
'getFiltersForModule',
'getEmailTemplatesForModule',
'getEmailTemplatePreview',
'DeleteME',
'installExtension',
'stopSendingEmails',
'SaveEMAILImages',
'SaveProfilesPrivilegies',
'ChangeActiveOrDefault',
'SearchEmails',
'getModuleFields',
'sendExampleMEmail',
'GetRelatedBlockColumns',
'SaveDisplayConditions',
'getSendingMsg',
'getUserSignature'
);
foreach ($Methods as $method) {
$this->exposeMethod($method);
}
}
public function checkPermission(Vtiger_Request $request)
{
return true;
}
public function process(Vtiger_Request $request)
{
$mode = $request->get('mode');
if (!empty($mode)) {
$this->invokeExposedMethod($mode, $request);
return;
}
$type = $request->get('type');
}
public function checkDuplicateKey(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$lblkey = $request->get('lblkey');
$result = $adb->pquery("SELECT label_id FROM vtiger_emakertemplates_label_keys WHERE label_key=?", array("C_" . $lblkey));
$num_rows = $adb->num_rows($result);
if ($num_rows > 0) {
$result = array('success' => true, 'message' => vtranslate('LBL_LABEL_KEY_EXIST', 'EMAILMaker'));
} else {
$result = array('success' => false);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
/**
* @throws Exception
*/
public function SaveCustomLabel(Vtiger_Request $request)
{
$labelId = $request->get('labelid');
$languageId = $request->get('langid');
$labelValue = $request->get('LblVal');
if (empty($labelId)) {
$labelKey = 'C_' . $request->get('LblKey');
$customLabel = EMAILMaker_CustomLabels_Model::getInstance($labelKey);
$customLabel->saveLabelKey();
} else {
$customLabel = EMAILMaker_CustomLabels_Model::getInstanceById($labelId);
}
$customLabel->saveLabelValue($languageId, $labelValue);
$response = new Vtiger_Response();
$response->setResult(array(
'labelid' => $customLabel->getLabelId(),
'langid' => $languageId,
'lblval' => $labelValue,
'lblkey' => $customLabel->getLabelKey(),
));
$response->emit();
}
/**
* @throws Exception
*/
public function SaveCustomLabelValues(Vtiger_Request $request)
{
$labelKey = $request->get('lblkey');
$customLabels = EMAILMaker_CustomLabels_Model::getInstance($labelKey);
$customLabels->saveLabelValues($request);
$response = new Vtiger_Response();
$response->setResult(array(
'success' => true
));
$response->emit();
}
public function deleteCustomLabel(Vtiger_Request $request)
{
$customLabels = EMAILMaker_CustomLabels_Model::getCleanInstance();
$customLabels->setLabelId($request->get('labelid'));
$customLabels->deleteLabelKeys();
$customLabels->deleteLabelValues();
$response = new Vtiger_Response();
$response->setResult(array('success' => true));
$response->emit();
}
public function DeleteCustomLabels(Vtiger_Request $request)
{
$params = array();
foreach ($_REQUEST as $key => $val) {
if ('chx_' === substr($key, 0, 4) && 'on' === $val) {
list($dump, $id) = explode('_', $key, 2);
if (is_numeric($id)) {
$params[] = $id;
}
}
}
if (EMAILMaker_Utils_Helper::count($params) > 0) {
$adb = PearDatabase::getInstance();
$sql1 = 'DELETE FROM vtiger_emakertemplates_label_vals WHERE label_id IN (' . generateQuestionMarks($params) . ')';
$sql2 = 'DELETE FROM vtiger_emakertemplates_label_keys WHERE label_id IN (' . generateQuestionMarks($params) . ')';
$adb->pquery($sql1, $params);
$adb->pquery($sql2, $params);
}
header("Location:index.php?module=EMAILMaker&view=CustomLabels");
}
public function SaveProductBlock(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$tplid = $request->get('tplid');
$template_name = $request->get('template_name');
$body = $request->get('body');
if (isset($tplid) && $tplid != "") {
$adb->pquery("UPDATE vtiger_emakertemplates_productbloc_tpl SET name=?, body=? WHERE id=?", array($template_name, $body, $tplid));
} else {
$adb->pquery("INSERT INTO vtiger_emakertemplates_productbloc_tpl(name, body) VALUES(?,?)", array($template_name, $body));
}
header("Location:index.php?module=EMAILMaker&view=ProductBlocks");
}
public function DeleteProductBlock(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$tplid = $request->get('tplid');
$adb->pquery("DELETE FROM vtiger_emakertemplates_productbloc_tpl WHERE id = ?", array($tplid));
header("Location:index.php?module=EMAILMaker&view=ProductBlocks");
}
public function deleteProductBlocks(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$sql = "DELETE FROM vtiger_emakertemplates_productbloc_tpl WHERE id IN (";
$params = array();
foreach ($_REQUEST as $key => $val) {
if (substr($key, 0, 4) == "chx_" && $val == "on") {
list($dump, $id) = explode("_", $key, 2);
if (is_numeric($id)) {
$sql .= "?,";
array_push($params, $id);
}
}
}
if (count($params) > 0) {
$sql = rtrim($sql, ",") . ")";
$adb->pquery($sql, $params);
}
header("Location:index.php?module=EMAILMaker&view=ProductBlocks");
}
public function DeleteTheme(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$themeid = $request->get('themeid');
$return_module = $request->get('return_module');
$return_view = $request->get('return_view');
$adb->pquery("UPDATE vtiger_emakertemplates SET deleted=1 WHERE templateid=?", array($themeid));
header("Location:index.php?module=EMAILMaker&view=Edit&mode=selectTheme&return_module=" . $return_module . "&return_view=" . $return_view);
}
public function DeleteTemplate(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$EMAILMakerModel = Vtiger_Module_Model::getInstance('EMAILMaker');
if ($EMAILMakerModel->CheckPermissions("DELETE") == false) {
throw new Exception(vtranslate("LBL_PERMISSION", "EMAILMaker"));
}
$adb = PearDatabase::getInstance();
if ($request->has('templateid') && !$request->isEmpty('templateid')) {
$templateid = $request->get('templateid');
$checkRes = $adb->pquery("select module from vtiger_emakertemplates where templateid=?", array($templateid));
$checkRow = $adb->fetchByAssoc($checkRes);
$EMAILMakerModel->CheckTemplatePermissions($checkRow["module"], $templateid);
$adb->pquery("delete from vtiger_emakertemplates where templateid=?", array($templateid));
} else {
$idlist = $request->get('idlist');
$id_array = explode(';', $idlist);
$checkRes = $adb->pquery("select templateid, module from vtiger_emakertemplates where templateid IN (" . generateQuestionMarks($id_array) . ")", $id_array);
$checkArr = array();
while ($checkRow = $adb->fetchByAssoc($checkRes)) {
$checkArr[$checkRow["templateid"]] = $checkRow["module"];
}
for ($i = 0; $i < count($id_array) - 1; $i++) {
$EMAILMakerModel->CheckTemplatePermissions($checkArr[$id_array[$i]], $id_array[$i]);
$sql = "delete from vtiger_emakertemplates where templateid=?";
$adb->pquery($sql, array($id_array[$i]));
}
}
$ajaxDelete = $request->get('ajaxDelete');
$listViewUrl = "index.php?module=EMAILMaker&view=List";
if ($ajaxDelete) {
$response = new Vtiger_Response();
$response->setResult($listViewUrl);
return $response;
} else {
header("Location: $listViewUrl");
}
}
public function updateLinkForModule(Vtiger_Request $request)
{
EMAILMaker_Debugger_Model::GetInstance()->Init();
$for_module = $request->get('forModule');
$link_type = $request->get('linkType');
$update_type = $request->get('updateType');
$link_module = Vtiger_Module::getInstance($for_module);
if ($update_type == "true") {
$useFunction = "addLink";
} else {
$useFunction = "deleteLink";
}
if ($link_type == "1") {
$link_module->$useFunction('DETAILVIEWSIDEBARWIDGET', 'EMAILMaker', 'module=EMAILMaker&view=GetEMAILActions&record=$RECORD$');
} elseif ($link_type == "2") {
$link_module->$useFunction('LISTVIEWMASSACTION', 'Send Emails with EMAILMaker', 'javascript:EMAILMaker_Actions_Js.getListViewPopup(this,\'$MODULE$\');');
}
$result = array('success' => true);
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function controlEmails(Vtiger_Request $request)
{
$records = array();
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$adb = PearDatabase::getInstance();
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$esentid = $request->get('esentid');
if ($esentid != "") {
$Record = $EMAILMaker->getEmailsInfo($esentid);
} else {
$sql = "SELECT DISTINCT tb1.esentid FROM vtiger_emakertemplates_sent AS tb1 INNER JOIN vtiger_emakertemplates_emails AS tb2 ON tb1.esentid = tb2.esentid WHERE tb2.deleted= '0' AND tb2.status = '0' AND tb1.userid = ? AND (tb1.drip_group = '0' OR tb1.drip_group IS NULL) AND tb1.drip_delay <= 0 AND tb1.type = 1 LIMIT 0,1";
$result = $adb->pquery($sql, array($currentUserModel->id));
$num_rows = $adb->num_rows($result);
if ($num_rows > 0) {
while ($row = $adb->fetchByAssoc($result)) {
$Record = $EMAILMaker->getEmailsInfo($row['esentid']);
}
}
}
$response = new Vtiger_Response();
$response->setResult($Record);
$response->emit();
}
public function sendEmail(Vtiger_Request $request)
{
$records = array();
$rootDirectory = vglobal('root_directory');
$adb = PearDatabase::getInstance();
if ($request->has('debug') && !$request->isEmpty('debug')) {
if ($request->get('debug') == 'true') {
error_reporting(63);
ini_set("display_errors", 1);
$adb->setDebug(true);
$debug = true;
}
}
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$esentid = $request->get('esentid');
$EMAILMaker->sendEmails($esentid);
$Emails_Info = $EMAILMaker->getEmailsInfo($esentid);
$response_result = array("emails_info" => $Emails_Info);
$response = new Vtiger_Response();
$response->setResult($response_result);
$response->emit();
}
public function getRelatedDocuments($crmid)
{
$adb = PearDatabase::getInstance();
$documentRes = $adb->pquery("SELECT * FROM vtiger_senotesrel
INNER JOIN vtiger_crmentity ON vtiger_senotesrel.notesid = vtiger_crmentity.crmid AND vtiger_senotesrel.crmid = ?
INNER JOIN vtiger_notes ON vtiger_notes.notesid = vtiger_senotesrel.notesid
INNER JOIN vtiger_seattachmentsrel ON vtiger_seattachmentsrel.crmid = vtiger_notes.notesid
INNER JOIN vtiger_attachments ON vtiger_attachments.attachmentsid = vtiger_seattachmentsrel.attachmentsid
WHERE vtiger_crmentity.deleted = 0", array($crmid));
$numOfRows = $adb->num_rows($documentRes);
if ($numOfRows) {
for ($i = 0; $i < $numOfRows; $i++) {
$row = $adb->query_result_rowdata($documentRes, $i);
if (!isset($row['storedname']) || empty($row['storedname'])) {
$row['storedname'] = $row['name'];
}
$documentsList[$i]['name'] = $row['filename'];
$filesize = $row['filesize'];
$documentsList[$i]['size'] = $this->getFormattedFileSize($filesize);
$documentsList[$i]['docid'] = $row['notesid'];
$documentsList[$i]['path'] = $row['path'];
$documentsList[$i]['fileid'] = $row['attachmentsid'];
$documentsList[$i]['attachment'] = $row['storedname'];
$documentsList[$i]['type'] = $row['type'];
}
}
return $documentsList;
}
public function getFormattedFileSize($filesize)
{
if ($filesize < 1024) {
$filesize = sprintf("%0.2f", round($filesize, 2)) . 'B';
} else {
if ($filesize > 1024 && $filesize < 1048576) {
$filesize = sprintf("%0.2f", round($filesize / 1024, 2)) . 'KB';
} else {
if ($filesize > 1048576) {
$filesize = sprintf("%0.2f", round($filesize / (1024 * 1024), 2)) . 'MB';
}
}
}
return $filesize;
}
public function getDocuments(Vtiger_Request $request)
{
$result = array();
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$templateid = $request->get('templateid');
if ($templateid != "" && $templateid != "0") {
$Documents_Records = $EMAILMaker->getEmailTemplateDocuments($templateid);
if (count($Documents_Records) > 0) {
foreach ($Documents_Records as $DD) {
$result[$DD["id"]] = array("filename" => $DD["name"], "filesize" => $DD["filesize"]);
}
}
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function getFiltersForModule(Vtiger_Request $request)
{
$source_module = $request->get("source_module");
$module_filters = EMAILMaker_RecordME_Model::getModuleFilters($source_module);
$module_columns = EMAILMaker_RecordME_Model::getModuleColumns($source_module);
echo '<div class="control-group">
<div class="control-label">
' . vtranslate('LBL_FILTER', 'EMAILMaker') . '
</div>
<div class="controls">
' . $module_filters . '
</div>
</div>
<div class="control-group">
<div class="control-label">
' . vtranslate('LBL_COLUMN', 'EMAILMaker') . '
</div>
<div class="controls">
' . $module_columns . '
</div>
</div>';
}
public function getEmailTemplatesForModule(Vtiger_Request $request)
{
$source_module = $request->get("source_module");
$stemplateid = $request->get("templateid");
$orderby = "templateid";
$dir = "asc";
$c = "<div class='row-fluid'>";
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$return_data = $EMAILMaker->GetListviewData($orderby, $dir, $source_module, false, $request);
$select_lbl = vtranslate("LBL_SELECT", "EMAILMaker");
$preview_lbl = vtranslate("LBL_PREVIEW", "EMAILMaker");
foreach ($return_data as $edata) {
$templateid = $edata["templateid"];
if ($templateid == $stemplateid) {
$class = "blockHeader";
} else {
$class = "tableHeading";
}
$c .= '<div class="span" style="margin:10px;" >
<div style="float:left;border:1px solid #000000;width:140px;height:185px;" class="themeTableColor">
<div style="height:160px;overflow:auto;">
<div class="tableHeading cursorPointer" style="border-bottom:1px solid #000000;" border="1">
<div id="EmailTemplateHeader' . $templateid . '" data-templateid="' . $templateid . '" style="padding:5px;text-align:center;font-weight:bold;" class="EmailTemplateSelect cursorPointer ' . $class . '">
' . $edata["name"] . '
</div>
</div>
<div style="padding:2px">' . $edata["description"] . '</div>
</div>
<center>
<div class="actions">
<span class="actionImages"><a class="EmailTemplateSelect cursorPointer" data-templateid="' . $templateid . '"><i title="Select" class="icon-plus actionImagesAlignment"></i>' . $select_lbl . '</a></span>
<span class="actionImages"><a class="EmailTemplatePreview cursorPointer" data-templateid="' . $templateid . '"><i title="Edit" class="icon-search actionImagesAlignment"></i>' . $preview_lbl . '</a></span>
</div>
</center>
</div>
</div>';
$class = "tableHeading";
}
$c .= "</div>";
echo $c;
}
public function getEmailTemplatePreview(Vtiger_Request $request)
{
$templateid = $request->get("templateid");
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$emailtemplateResult = $EMAILMaker->GetDetailViewData($templateid);
echo decode_html($emailtemplateResult["body"]);
}
public function DeleteME(Vtiger_Request $request)
{
$moduleName = $request->getModule();
$recordId = $request->get('record');
$ajaxDelete = $request->get('ajaxDelete');
$recordModel = EMAILMaker_RecordME_Model::getInstance($recordId, $moduleName);
$recordModel->delete();
if ($ajaxDelete) {
$result = "index.php?module=EMAILMaker&view=ListME";
} else {
$result = array('module' => $moduleName);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function installExtension(Vtiger_Request $request)
{
$extname = $request->get("extname");
if ($extname == "Workflow") {
$Errors = array();
include_once('modules/EMAILMaker/EMAILMaker.php');
$EMAILMaker = new EMAILMaker();
$EMAILMakerModel = new EMAILMaker_EMAILMaker_Model();
$Workflows = $EMAILMakerModel->GetWorkflowsList();
foreach ($Workflows as $name) {
$folder_dest1 = "modules/com_vtiger_workflow/tasks/";
$dest1 = $folder_dest1 . $name . ".inc";
$source1 = "modules/EMAILMaker/workflow/" . $name . ".inc";
if (!file_exists($dest1)) {
if (!copy($source1, $dest1)) {
$Errors[] = vtranslate("LBL_PERMISSION_ERROR_PART_1", "EMAILMaker") . ' "' . $source1 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_2", "EMAILMaker") . ' "' . $folder_dest1 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_3", "EMAILMaker") . '.';
}
}
$folder_dest2 = "layouts/v7/modules/Settings/Workflows/Tasks/";
$dest2 = $folder_dest2 . $name . ".tpl";
$source2 = "layouts/v7/modules/EMAILMaker/taskforms/" . $name . ".tpl";
if (!file_exists($dest2)) {
if (!copy($source2, $dest2)) {
$Errors[] = vtranslate("LBL_PERMISSION_ERROR_PART_1", "EMAILMaker") . ' "' . $source2 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_2", "PDFMaker") . ' "' . $folder_dest2 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_3", "PDFMaker") . '.';
}
}
}
if (count($Errors) > 0) {
$error = '<div class="modelContainer">';
$error .= '<div class="modal-header">';
$error .= '<button class="close vtButton" data-dismiss="modal">×</button>';
$error .= '<h3 class="redColor">';
$error .= vtranslate("LBL_INSTALLATION_FAILED", "EMAILMaker");
$error .= '</h3>';
$error .= '</div>';
$error .= '<div class="modal-body">';
$error .= implode("<br>", $Errors);
$error .= "<br><br>" . vtranslate("LBL_CHANGE_PERMISSION", "EMAILMaker");
$error .= '</div>';
$error .= '</div>';
} else {
$EMAILMaker->installWorkflows();
$control = $EMAILMakerModel->controlWorkflows();
if (!$control) {
$error = vtranslate("LBL_INSTALLATION_FAILED", "EMAILMaker");
}
}
if ($error == "") {
$result = array('success' => true, 'message' => vtranslate("LBL_WORKFLOWS_ARE_ALREADY_INSTALLED", "EMAILMaker"));
} else {
$result = array('success' => false, 'message' => vtranslate($error, 'EMAILMaker'));
}
} else {
$result = array('success' => false);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function stopSendingEmails(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$esentid = $request->get('esentid');
if ($esentid != "") {
$adb->pquery("UPDATE vtiger_emakertemplates_emails SET deleted = '1' WHERE esentid = ? AND status = '0'", array($esentid));
$success = true;
} else {
$success = false;
}
$response = new Vtiger_Response();
$response->setResult(array('success' => $success));
$response->emit();
}
public function SaveEMAILImages(Vtiger_Request $request)
{
$moduleName = $request->getModule();
$crmid = $request->get('record');
$adb = PearDatabase::getInstance();
$adb->pquery("DELETE FROM vtiger_emakertemplates_images WHERE crmid=?", array($crmid));
$R_Data = $request->getAll();
foreach ($R_Data as $key => $value) {
if (strpos($key, "img_") !== false) {
list($bin, $productid, $sequence) = explode("_", $key);
if ($value != "no_image") {
$width = $R_Data["width_" . $productid . "_" . $sequence];
$height = $R_Data["height_" . $productid . "_" . $sequence];
if (!is_numeric($width) || $width > 999) {
$width = 0;
}
if (!is_numeric($height) || $height > 999) {
$height = 0;
}
} else {
$height = $width = $value = 0;
}
$adb->pquery("INSERT INTO vtiger_emakertemplates_images (crmid, productid, sequence, attachmentid, width, height) VALUES (?, ?, ?, ?, ?, ?)", array($crmid, $productid, $sequence, $value, $width, $height));
}
}
}
public function SaveProfilesPrivilegies(Vtiger_Request $request)
{
$EMAILMakerModel = Vtiger_Module_Model::getInstance('EMAILMaker');
$adb = PearDatabase::getInstance();
$permissions = $EMAILMakerModel->GetProfilesPermissions();
foreach ($permissions as $profileid => $subArr) {
foreach ($subArr as $actionid => $perm) {
$adb->pquery("DELETE FROM vtiger_emakertemplates_profilespermissions WHERE profileid = ? AND operation = ?", array($profileid, $actionid));
$priv_chk = $request->get("priv_chk_" . $profileid . "_" . $actionid);
if ($priv_chk == "on") {
$p_val = "0";
} else {
$p_val = "1";
}
$adb->pquery("INSERT INTO vtiger_emakertemplates_profilespermissions (profileid, operation, permissions) VALUES(?, ?, ?)", array($profileid, $actionid, $p_val));
}
}
header("Location:index.php?module=EMAILMaker&view=ProfilesPrivilegies");
}
public function ChangeActiveOrDefault(Vtiger_Request $request)
{
$current_user = Users_Record_Model::getCurrentUserModel();
$adb = PearDatabase::getInstance();
$templateid = $request->get("templateid");
$subject = $request->get("subjectChanged");
$result = $adb->pquery("SELECT is_listview FROM vtiger_emakertemplates WHERE templateid=?", array($templateid));
if ($adb->query_result($result, 0, "is_listview") == "1") {
$set_default_val = "2";
} else {
$set_default_val = "3";
}
$result = $adb->pquery("SELECT * FROM vtiger_emakertemplates_userstatus WHERE templateid=? AND userid=?", array($templateid, $current_user->id));
if ($adb->num_rows($result) > 0) {
if ($subject == "active") {
$sql = "UPDATE vtiger_emakertemplates_userstatus SET is_active=IF(is_active=0,1,0), is_default=IF(is_active=0,0,is_default) WHERE templateid=? AND userid=?";
} elseif ($subject == "default") {
$sql = "UPDATE vtiger_emakertemplates_userstatus SET is_default=IF(is_default > 0,0," . $set_default_val . ") WHERE templateid=? AND userid=?";
}
} else {
if ($subject == "active") {
$sql = "INSERT INTO vtiger_emakertemplates_userstatus(templateid,userid,is_active,is_default) VALUES(?,?,0,0)";
} elseif ($subject == "default") {
$sql = "INSERT INTO vtiger_emakertemplates_userstatus(templateid,userid,is_active,is_default) VALUES(?,?,1," . $set_default_val . ")";
}
}
$adb->pquery($sql, array($templateid, $current_user->id));
$sql = "SELECT is_default, module
FROM vtiger_emakertemplates_userstatus
INNER JOIN vtiger_emakertemplates USING(templateid)
WHERE templateid=? AND userid=?";
$result = $adb->pquery($sql, array($templateid, $current_user->id));
$new_is_default = $adb->query_result($result, 0, "is_default");
$module = $adb->query_result($result, 0, "module");
if ($new_is_default == $set_default_val) {
$sql5 = "UPDATE vtiger_emakertemplates_userstatus
INNER JOIN vtiger_emakertemplates USING(templateid)
SET is_default=0
WHERE is_default > 0
AND userid=?
AND module=?
AND templateid!=?";
$adb->pquery($sql5, array($current_user->id, $module, $templateid));
}
$response = new Vtiger_Response();
$response->setResult(array('success' => true));
$response->emit();
}
public function SearchEmails(Vtiger_Request $request)
{
$moduleName = $request->get('module');
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$searchValue = $request->get('searchValue');
$emailsResult = array();
if ($searchValue) {
$emailsResult = $moduleModel->searchEmails($request->get('searchValue'));
}
$response = new Vtiger_Response();
$response->setResult($emailsResult);
$response->emit();
}
public function getModuleFields(Vtiger_Request $request)
{
$current_user = Users_Record_Model::getCurrentUserModel();
$this->cu_language = $current_user->get('language');
$module = $request->get("formodule");
$forfieldname = $request->get("forfieldname");
$SelectModuleFields = array();
$RelatedModules = array();
if ($module != "") {
$EMAILMakerFieldsModel = new EMAILMaker_Fields_Model();
$SelectModuleFields = $EMAILMakerFieldsModel->getSelectModuleFields($module, $forfieldname);
$RelatedModules = $EMAILMakerFieldsModel->getRelatedModules($module);
}
$EMAILMaker = new EMAILMaker_EMAILMaker_Model();
$subject_fields = $EMAILMaker->getSubjectFields();
$response = new Vtiger_Response();
$response->setResult(array('success' => true, 'fields' => $SelectModuleFields, 'related_modules' => $RelatedModules, 'subject_fields' => array(vtranslate('LBL_COMMON_EMAILINFO', 'EMAILMaker') => $subject_fields)));
$response->emit();
}
public function sendExampleMEmail(Vtiger_Request $request)
{
global $root_directory;
$moduleName = $request->getModule();
$data = $request->get("datap");
$emailadd = $data["toemail"];
$datame = $request->get("datame");
$from_address = $datame["from_email"];
$from_name = $datame["from_name"];
$subject = $datame["subject"];
$templateid = $datame["emailtemplateid"];
$language = $datame["language"];
$formodule = $datame["for_module"];
$mailer = Emails_Mailer_Model::getInstance();
$mailer->IsHTML(true);
$mailer->reinitialize();
$adb = PearDatabase::getInstance();
$result0 = $adb->pquery("select from_email_field from vtiger_systems where server_type=?", array('email'));
$from_email_field = $adb->query_result($result0, 0, 'from_email_field');
$replyToEmail = $from_address;
if (isset($from_email_field) && $from_email_field != '') {
$from_address = $from_email_field;
}
$mailer->ConfigSenderInfo($from_address, $from_name, $replyToEmail);
$EMAILContentModel = EMAILMaker_EMAILContent_Model::getInstanceById($templateid, $language, $formodule, "0");
$EMAILContentModel->setSubject($subject);
$EMAILContentModel->getContent(false, false, true);
$subject = $EMAILContentModel->getSubject();
$body = $EMAILContentModel->getBody();
$mailer->Body = $body;
$mailer->Subject = $subject;
$mailer->AddAddress($emailadd);
$sql10 = "SELECT vtiger_attachments.* FROM vtiger_notes
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_notes.notesid
INNER JOIN vtiger_seattachmentsrel
ON vtiger_seattachmentsrel.crmid = vtiger_notes.notesid
INNER JOIN vtiger_attachments
ON vtiger_attachments.attachmentsid = vtiger_seattachmentsrel.attachmentsid
INNER JOIN vtiger_emakertemplates_documents
ON vtiger_emakertemplates_documents.documentid = vtiger_notes.notesid
WHERE vtiger_crmentity.deleted = '0' AND vtiger_emakertemplates_documents.templateid = ?";
$result10 = $adb->pquery($sql10, array($templateid));
$num_rows10 = $adb->num_rows($result10);
if ($num_rows10 > 0) {
for ($i = 0; $i < $num_rows10; $i++) {
$row = $adb->query_result_rowdata($result10, $i);
if (!isset($row['storedname']) || empty($row['storedname'])) {
$row['storedname'] = $row['name'];
}
$fileid = $row['attachmentsid'];
$file = decode_html($row['storedname']);
$filename = decode_html($row['name']);
$filepath = $row['path'];
$filewithpath = $root_directory . $filepath . $fileid . "_" . $file;
if (is_file($filewithpath)) {
$mailer->AddAttachment($filewithpath, $filename);
}
}
}
$Email_Images = $EMAILContentModel->getEmailImages();
if (count($Email_Images) > 0) {
foreach ($Email_Images as $cid => $cdata) {
$mailer->AddEmbeddedImage($cdata["path"], $cid, $cdata["name"]);
}
}
$status = $mailer->Send(true);
$success = true;
"";
if (!$status) {
$mail_status = $mailer->getError();
$success = false;
} else {
$mail_status = vtranslate("LBL_EMAIL_HAS_BEEN_SENT", $moduleName);
}
$response = new Vtiger_Response();
$response->setResult(array('success' => $success, 'status' => $mail_status));
$response->emit();
}
public function GetRelatedBlockColumns(Vtiger_Request $request)
{
$current_user = Users_Record_Model::getCurrentUserModel();
$RelatedBlock = new EMAILMaker_RelatedBlock_Model();
$sec_module = $request->get('secmodule');
$pri_module = $request->get('primodule');
$mode = $request->get('type');
$module_list = $RelatedBlock->getModuleList($sec_module);
$Fields = array();
/*
if ($type == "stdcriteria") {
$options = $RelatedBlock->getStdCriteriaByModule($sec_module, $module_list, $current_user);
if (count($options) > 0) {
$content = "";
foreach ($options AS $value => $label) {
$content .= "<option value='" . $value . "'>" . $label . "</option>";
$Fields[$value] = $label;
}
}
} else {
*/
foreach ($module_list as $blockid => $optgroup) {
$options = $RelatedBlock->getColumnsListbyBlock($sec_module, $blockid, $pri_module, $current_user);
if (!empty($options) && count($options)) {
foreach ($options as $value => $label) {
$Fields[$optgroup][$value] = $label;
}
}
}
//}
$response = new Vtiger_Response();
$response->setResult(array("fields" => $Fields));
$response->emit();
}
public function SaveDisplayConditions(Vtiger_Request $request)
{
$templateid = $request->get('record');
$recordModel = EMAILMaker_Record_Model::getInstanceById($templateid);
$conditions = $request->get('conditions');
$displayed_value = $request->get('displayedValue');
$recordModel->updateDisplayConditions($conditions, $displayed_value);
$detailViewurl = $recordModel->getDetailViewUrl();
header("Location:" . $detailViewurl);
}
public function getSendingMsg(Vtiger_Request $request)
{
if ($request->has('esentid') && !$request->isEmpty('esentid')) {
$esentid = $request->has('esentid');
$adb = PearDatabase::getInstance();
$result = $adb->pquery("SELECT total_emails FROM vtiger_emakertemplates_sent WHERE esentid = ?", array($esentid));
$total_emails = $adb->query_result($result, 0, "total_emails");
$result2 = $adb->pquery("SELECT count(emailid) as total FROM vtiger_emakertemplates_emails WHERE status = '1' AND esentid = ?", array($esentid));
$sent_emails = $adb->query_result($result2, 0, "total");
if ($sent_emails == $total_emails) {
if ($total_emails > 1) {
$title = "LBL_EMAILS_HAS_BEEN_SENT";
} else {
$title = "LBL_EMAIL_HAS_BEEN_SENT";
}
} else {
$title = "LBL_EMAILS_DISTRIBUTION";
}
$content = $sent_emails . ' ' . vtranslate("LBL_EMAILS_SENT_FROM", "EMAILMaker") . ' ' . $total_emails;
$response = new Vtiger_Response();
$response->setResult(array('id' => $esentid, 'title' => vtranslate($title, "EMAILMaker"), 'content' => $content));
$response->emit();
}
}
public function getUserSignature(Vtiger_Request $request)
{
$def_charset = vglobal('default_charset');
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$signature = html_entity_decode($currentUserModel->get('signature'), ENT_QUOTES, $def_charset);
$response = new Vtiger_Response();
$response->setResult(array('success' => true, 'signature' => $signature));
$response->emit();
}
}