exposeMethod($method);
}
}
public function checkPermission(Vtiger_Request $request)
{
return;
}
public function process(Vtiger_Request $request)
{
$mode = $request->get('mode');
if (!empty($mode)) {
$this->invokeExposedMethod($mode, $request);
return;
}
}
public function checkDuplicateKey(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$lblkey = $request->get('lblkey');
$sql = "SELECT label_id FROM vtiger_pdfmaker_label_keys WHERE label_key=?";
$result = $adb->pquery($sql, array("C_" . $lblkey));
$num_rows = $adb->num_rows($result);
if ($num_rows > 0) {
$result = array('success' => true, 'message' => vtranslate('LBL_LABEL_KEY_EXIST', 'PDFMaker'));
} else {
$result = array('success' => false);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function SaveCustomLabel(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$labelid = $request->get('labelid');
$langid = $request->get('langid');
$LblVal = $request->get('LblVal');
if ($labelid == "") {
$LblKey = $request->get('LblKey');
$label_key = "C_" . $LblKey;
$adb->pquery("INSERT IGNORE INTO vtiger_pdfmaker_label_keys (label_key) VALUES (?)", array($label_key));
$resultLabelId = $adb->pquery('SELECT label_id FROM vtiger_pdfmaker_label_keys WHERE label_key=?', array($label_key));
$labelid = $adb->query_result($resultLabelId, 0, 'label_id');
$adb->pquery("INSERT IGNORE INTO vtiger_pdfmaker_label_vals (label_id, lang_id, label_value) VALUES (?, ?, ?)", array($labelid, $langid, $LblVal));
} else {
$adb->pquery("UPDATE vtiger_pdfmaker_label_vals SET label_value = ? WHERE label_id = ? AND lang_id = ?", array($LblVal, $labelid, $langid));
}
$response = new Vtiger_Response();
try {
$response->setResult(array('labelid' => $labelid, 'langid' => $langid, 'langid' => $langid, 'lblval' => $LblVal, 'lblkey' => $label_key));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function SaveCustomLabelValues(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$PDFMaker = new PDFMaker_PDFMaker_Model();
$lblkey = $request->get('lblkey');
$result1 = $adb->pquery("SELECT label_id FROM vtiger_pdfmaker_label_keys WHERE label_key = ?", array($lblkey));
$labelid = $adb->query_result($result1, 0, "label_id");
list($oLabels, $languages) = $PDFMaker->GetCustomLabels();
$oLbl = $oLabels[$labelid];
$langValsArr = $oLbl->GetLangValsArr();
foreach ($langValsArr as $langid => $langVal) {
$control = $request->get('LblVal' . $langid);
if ($control == "yes") {
$langval = $request->get('LblVal' . $langid . "Value");
$result2 = $adb->pquery("SELECT * FROM vtiger_pdfmaker_label_vals WHERE label_id = ? AND lang_id = ?", array($labelid, $langid));
$num_rows2 = $adb->num_rows($result2);
if ($num_rows2 > 0) {
$adb->pquery('UPDATE vtiger_pdfmaker_label_vals SET label_id = ? WHERE lang_id = ? AND label_value=?', array($langval, $labelid, $langid));
} elseif ($langval != "") {
$adb->pquery('INSERT INTO vtiger_pdfmaker_label_vals (label_id,lang_id,label_value) VALUES (?,?,?)', array($labelid, $langid, $langval));
}
}
}
$response = new Vtiger_Response();
try {
$response->setResult(array('success' => true));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function deleteCustomLabel(Vtiger_Request $request)
{
$response = new Vtiger_Response();
try {
$label_id = $request->get('labelid');
$adb = PearDatabase::getInstance();
$adb->pquery("DELETE FROM vtiger_pdfmaker_label_vals WHERE label_id = ?", array($label_id));
$adb->pquery("DELETE FROM vtiger_pdfmaker_label_keys WHERE label_id = ?", array($label_id));
$response->setResult(array('success' => true));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$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)) {
array_push($params, $id);
}
}
}
if (PDFMaker_Utils_Helper::count($params)) {
$adb = PearDatabase::getInstance();
$sql1 = 'DELETE FROM vtiger_pdfmaker_label_vals WHERE label_id IN (' . generateQuestionMarks($params) . ')';
$sql2 = 'DELETE FROM vtiger_pdfmaker_label_keys WHERE label_id IN (' . generateQuestionMarks($params) . ')';
$adb->pquery($sql1, $params);
$adb->pquery($sql2, $params);
}
header("Location:index.php?module=PDFMaker&view=CustomLabels");
}
public function SaveProductBlock(Vtiger_Request $request)
{
PDFMaker_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_pdfmaker_productbloc_tpl SET name=?, body=? WHERE id=?", array($template_name, $body, $tplid));
} else {
$adb->pquery("INSERT INTO vtiger_pdfmaker_productbloc_tpl(name, body) VALUES(?,?)", array($template_name, $body));
}
header("Location:index.php?module=PDFMaker&view=ProductBlocks");
}
public function DeleteProductBlock(Vtiger_Request $request)
{
PDFMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$tplid = $request->get('tplid');
$adb->pquery("DELETE FROM vtiger_pdfmaker_productbloc_tpl WHERE id = ?", array($tplid));
header("Location:index.php?module=PDFMaker&view=ProductBlocks");
}
public function deleteProductBlocks(Vtiger_Request $request)
{
PDFMaker_Debugger_Model::GetInstance()->Init();
$adb = PearDatabase::getInstance();
$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)) {
array_push($params, $id);
}
}
}
if (PDFMaker_Utils_Helper::count($params)) {
$sql = 'DELETE FROM vtiger_pdfmaker_productbloc_tpl WHERE id IN (' . generateQuestionMarks($params) . ')';
$adb->pquery($sql, $params);
}
header('location:index.php?module=PDFMaker&view=ProductBlocks');
}
public function downloadMPDF(Vtiger_Request $request)
{
$error = "";
$srcZip = "https://www.its4you.sk/images/extensions/PDFMaker/src/mpdf.zip";
$trgZip = "modules/PDFMaker/resources/mpdf.zip";
if (copy($srcZip, $trgZip)) {
require_once('vtlib/thirdparty/dUnzip2.inc.php');
$unzip = new dUnzip2($trgZip);
$unzip->unzipAll(getcwd() . "/modules/PDFMaker/resources/");
if ($unzip) {
$unzip->close();
}
if (!is_dir("modules/PDFMaker/resources/mpdf")) {
$error = vtranslate("UNZIP_ERROR", 'PDFMaker');
}
if(!is_file("modules/PDFMaker/resources/mpdf/mpdf.php")) {
$error = vtranslate("INSTALL_MPDF_ERROR", 'PDFMaker');
}
} else {
$error = vtranslate("DOWNLOAD_ERROR", 'PDFMaker');
}
if ($error == "") {
$result = array('success' => true, 'message' => '');
} else {
$result = array('success' => false, 'message' => $error);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function downloadFile(Vtiger_Request $request)
{
$type = $request->get('type');
$extid = $request->get('extid');
$fileext = "";
$ct = "";
switch ($type) {
case "manual":
$fileext = "txt";
$ct = "text/plain";
break;
case "download":
$fileext = "zip";
$ct = "application/zip";
break;
}
$filename = $extid . "." . $fileext;
$fullFileName = "modules/PDFMaker/resources/extensions/" . $filename;
if (file_exists($fullFileName)) {
$disk_file_size = filesize($fullFileName);
$filesize = $disk_file_size + ($disk_file_size % 1024);
$fileContent = fread(fopen($fullFileName, "r"), $filesize);
header("Content-type: $ct");
header("Pragma: public");
header("Cache-Control: private");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Description: PHP Generated Data");
echo $fileContent;
} else {
header("Location: index.php?module=PDFMaker&view=Extensions&parenttab=Settings&download_error=true");
}
}
public function installExtension(Vtiger_Request $request)
{
$extname = $request->get("extname");
if ($extname == "Workflow") {
$Errors = array();
include_once('modules/PDFMaker/PDFMaker.php');
$PDFMaker = new PDFMaker();
$PDFMakerModel = new PDFMaker_PDFMaker_Model();
$Workflows = $PDFMakerModel->GetWorkflowsList();
foreach ($Workflows as $name) {
$folder_dest1 = "modules/com_vtiger_workflow/tasks/";
$dest1 = $folder_dest1 . $name . ".inc";
$source1 = "modules/PDFMaker/workflow/" . $name . ".inc";
if (!file_exists($dest1)) {
if (!copy($source1, $dest1)) {
$Errors[] = vtranslate("LBL_PERMISSION_ERROR_PART_1", "PDFMaker") . ' "' . $source1 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_2", "PDFMaker") . ' "' . $folder_dest1 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_3", "PDFMaker") . '.';
}
}
$folder_dest2 = "layouts/v7/modules/Settings/Workflows/Tasks/";
$dest2 = $folder_dest2 . $name . ".tpl";
$source2 = "layouts/v7/modules/PDFMaker/taskforms/" . $name . ".tpl";
if (!file_exists($dest2)) {
if (!copy($source2, $dest2)) {
$Errors[] = vtranslate("LBL_PERMISSION_ERROR_PART_1", "PDFMaker") . ' "' . $source2 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_2", "PDFMaker") . ' "' . $folder_dest2 . '" ' . vtranslate("LBL_PERMISSION_ERROR_PART_3", "PDFMaker") . '.';
}
}
}
if (PDFMaker_Utils_Helper::count($Errors)) {
$error = '
';
$error .= '';
$error .= '
';
$error .= implode("
", $Errors);
$error .= "
" . vtranslate("LBL_CHANGE_PERMISSION", "PDFMaker");
$error .= '
';
$error .= '
';
} else {
$PDFMaker->installWorkflows();
$control = $PDFMakerModel->controlWorkflows();
if (!$control) {
$error = vtranslate("LBL_INSTALLATION_FAILED", "PDFMaker");
}
}
if ($error == "") {
$result = array('success' => true, 'message' => vtranslate("LBL_WORKFLOWS_ARE_ALREADY_INSTALLED", "PDFMaker"));
} else {
$result = array('success' => false, 'message' => vtranslate($error, 'PDFMaker'));
}
} else {
$result = array('success' => false);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
public function CheckDuplicateTemplateName(Vtiger_Request $request)
{
$moduleName = $request->getModule();
$adb = PearDatabase::getInstance();
$templateName = $request->get('templatename');
$templateId = $request->get('templateid');
$result = $adb->pquery("SELECT templateid FROM vtiger_pdfmaker WHERE filename = ? AND templateid != ? AND deleted = '0'", array($templateName, $templateId));
$num_rows = $adb->num_rows($result);
if ($num_rows > 0) {
$result = array('success' => true, 'message' => vtranslate('LBL_DUPLICATES_EXIST', $moduleName));
} else {
$result = array('success' => false);
}
$response = new Vtiger_Response();
$response->setResult($result);
$response->emit();
}
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_pdfmaker_settings 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_pdfmaker_userstatus WHERE templateid=? AND userid=?", array($templateid, $current_user->id));
if ($adb->num_rows($result) > 0) {
if ($subject == "active") {
$sql = "UPDATE vtiger_pdfmaker_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_pdfmaker_userstatus SET is_default=IF(is_default > 0,0," . $set_default_val . ") WHERE templateid=? AND userid=?";
}
} else {
if ($subject == "active") {
$sql = "INSERT INTO vtiger_pdfmaker_userstatus(templateid,userid,is_active,is_default) VALUES(?,?,0,0)";
} elseif ($subject == "default") {
$sql = "INSERT INTO vtiger_pdfmaker_userstatus(templateid,userid,is_active,is_default) VALUES(?,?,1," . $set_default_val . ")";
}
}
$adb->pquery($sql, array($templateid, $current_user->id));
$result = $adb->pquery("SELECT is_default, module FROM vtiger_pdfmaker_userstatus INNER JOIN vtiger_pdfmaker USING(templateid) WHERE templateid=? AND userid=?", 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) {
$adb->pquery("UPDATE vtiger_pdfmaker_userstatus INNER JOIN vtiger_pdfmaker USING(templateid) SET is_default=0 WHERE is_default > 0 AND userid=? AND module=? AND templateid!=?", array($current_user->id, $module, $templateid));
}
$response = new Vtiger_Response();
$response->setResult(array('success' => true));
$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 != "") {
$PDFMakerFieldsModel = new PDFMaker_Fields_Model();
$SelectModuleFields = $PDFMakerFieldsModel->getSelectModuleFields($module, $forfieldname);
$RelatedModules = $PDFMakerFieldsModel->getRelatedModules($module);
$FilenameFields = $PDFMakerFieldsModel->getFilenameFields();
}
$response = new Vtiger_Response();
$response->setResult(array('success' => true, 'fields' => $SelectModuleFields, 'related_modules' => $RelatedModules, 'filename_fields' => array(vtranslate('LBL_COMMON_FILEINFO', 'PDFMaker') => $FilenameFields)));
$response->emit();
}
public function changeRTFSetting(Vtiger_Request $request)
{
$adb = PearDatabase::getInstance();
$type = $request->get("type");
$result1 = $adb->pquery("SELECT * FROM vtiger_pdfmaker_extensions", array());
if ($adb->num_rows($result1) > 0) {
$sql2 = "UPDATE vtiger_pdfmaker_extensions SET export_to_rtf=?";
} else {
$sql2 = "INSERT INTO vtiger_pdfmaker_extensions (export_to_rtf) VALUES(?)";
}
$adb->pquery($sql2, array(($type == "active" ? '1' : '0')));
if ($type == "active") {
$PDFMaker = new PDFMaker_PDFMaker_Model();
$permissions = $PDFMaker->GetProfilesPermissions();
foreach ($permissions as $profileid => $subArr) {
$actionid = getActionid('Export');
$adb->pquery("DELETE FROM vtiger_pdfmaker_profilespermissions WHERE profileid = ? AND operation = ?", array($profileid, $actionid));
$adb->pquery("INSERT INTO vtiger_pdfmaker_profilespermissions (profileid, operation, permissions) VALUES(?, ?, ?)", array($profileid, $actionid, "0"));
}
}
header("Location: index.php?module=PDFMaker&view=Extensions&parenttab=Settings");
}
/**
* @var Vtiger_Request $request
* @throws Exception
*/
public function getPreviewContent(Vtiger_Request $request)
{
$source_module = $request->get('source_module');
$generate_type = !$request->isEmpty('generate_type') ? $request->get('generate_type') : 'inline';
$generatePDF = PDFMaker_checkGenerate_Model::getInstance();
$generatePDF->set('source_module', $source_module);
$generatePDF->set('generate_type', $generate_type);
if ('inline' === $generate_type) {
$generatePDF->setAvailablePassword(false);
}
if ('List' === $request->get('forview')) {
$generatePDF->set('default_mode', '2');
}
$generatePDF->generate($request);
}
public function SaveDisplayConditions(Vtiger_Request $request)
{
$templateid = $request->get('record');
$recordModel = PDFMaker_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 GetRelatedBlockColumns(Vtiger_Request $request)
{
$current_user = Users_Record_Model::getCurrentUserModel();
$RelatedBlock = new PDFMaker_RelatedBlock_Model();
$sec_module = $request->get('secmodule');
$pri_module = $request->get('primodule');
$type = $request->get('type');
$module_list = $RelatedBlock->getModuleList($sec_module);
$Fields = array();
if ($type == "stdcriteria") {
$options = $RelatedBlock->getStdCriteriaByModule($sec_module, $module_list, $current_user);
if (PDFMaker_Utils_Helper::count($options)) {
foreach ($options as $value => $label) {
$Fields[$value] = $label;
}
}
} else {
foreach ($module_list as $blockid => $optgroup) {
$options = $RelatedBlock->getColumnsListbyBlock($sec_module, $blockid, $pri_module, $current_user);
if (PDFMaker_Utils_Helper::count($options)) {
foreach ($options as $value => $label) {
if(!$RelatedBlock->isInventoryProductRel($value)) {
$Fields[$optgroup][$value] = $label;
}
}
}
}
}
$response = new Vtiger_Response();
$response->setResult(array("fields" => $Fields));
$response->emit();
}
public function fillContentBlockLists(Vtiger_Request $request)
{
$PDFMakerModel = Vtiger_Module_Model::getInstance('PDFMaker');
$select_module = $request->get('selmod');
foreach (array("header", "footer") as $block_type) {
$BlockList[$block_type] = array();
$BRequest = new Vtiger_Request(['mode' => 'Blocks', 'blocktype' => $block_type, 'select_module' => $select_module]);
$BlockListData = $PDFMakerModel->GetListviewData("templateid", "ASC", $BRequest);
if (PDFMaker_Utils_Helper::count($BlockListData)) {
foreach ($BlockListData as $BData) {
$BlockList[$block_type][$BData["templateid"]] = $BData["name"];
}
}
}
$response = new Vtiger_Response();
$response->setResult(array("success" => true, "header" => (PDFMaker_Utils_Helper::count($BlockList['header']) ? $BlockList['header'] : false), "footer" => (PDFMaker_Utils_Helper::count($BlockList['footer']) ? $BlockList['footer'] : false)));
$response->emit();
}
public function downloadImage(Vtiger_Request $request)
{
$templateid = $request->get('templateid');
$img_id = $request->get('id');
$recordModel = PDFMaker_Record_Model::getInstanceById($templateid);
$watermark_type = $recordModel->get("watermark_type");
$watermark_img_id = $recordModel->get("watermark_img_id");
if ($watermark_type == "image" && !empty($watermark_img_id) && $img_id == $watermark_img_id) {
$PDFMakerModel = new PDFMaker_PDFMaker_Model();
$Data = $PDFMakerModel->getWatermarkImageData($watermark_img_id);
if ($Data) {
$image_path = $Data["image_path"];
$fileSize = filesize($image_path);
$fileSize = $fileSize + ($fileSize % 1024);
if (fopen($image_path, "r")) {
$fileContent = fread(fopen($image_path, "r"), $fileSize);
header("Content-type: " . $Data['type']);
header("Pragma: public");
header("Cache-Control: private");
header("Content-Disposition: attachment; filename=\"" . $Data["file_name"] . "\"");
header("Content-Description: PHP Generated Data");
header("Content-Encoding: none");
}
}
}
echo $fileContent;
}
}