saveIntoDocuments($request); $response->setResult(array( 'success' => true, 'message' => vtranslate('LBL_PDF_ADDED_DOC', 'PDFMaker'), )); } catch (Exception $e) { $response->setError($e->getCode(), $e->getMessage()); } $response->emit(); } public function getLanguage(Vtiger_Request $request) { if ($request->has('language') && !$request->isEmpty('language')) { return $request->get('language'); } return Vtiger_Language_Handler::getLanguage(); } /** * @param Vtiger_Request $request * @throws Exception */ public function saveIntoDocuments(Vtiger_Request $request) { require_once 'modules/PDFMaker/resources/mpdf/mpdf.php'; $adb = PearDatabase::getInstance(); $PDFMaker = new PDFMaker_PDFMaker_Model(); /** @var PDFMaker_Module_Model $PDFMakerModuleModel */ $PDFMakerModuleModel = Vtiger_Module_Model::getInstance('PDFMaker'); $language = $this->getLanguage($request); $parentModuleName = $request->get('pmodule'); $parentId = $request->get('pid'); $forView = $request->get('forview'); if ('List' === $forView) { $Records = $PDFMakerModuleModel->getRecordsListFromRequest($request); $fileName = sprintf('doc_%s%s.pdf', $parentModuleName, date('ymdHi')); } else { $modFocus = CRMEntity::getInstance($parentModuleName); if (isset($parentId) && is_numeric($parentId)) { $modFocus->retrieve_entity_info($parentId, $parentModuleName); $modFocus->id = $parentId; $Records = array($modFocus->id); } $result = $adb->pquery('SELECT fieldname FROM vtiger_field WHERE uitype=? AND tabid=?', [4, getTabId($parentModuleName)]); $fieldName = $adb->query_result($result, 0, 'fieldname'); if (isset($modFocus->column_fields[$fieldName]) && !empty($modFocus->column_fields[$fieldName])) { $fileName = sprintf('%s.pdf', $PDFMaker->generate_cool_uri($modFocus->column_fields[$fieldName])); } else { $fileName = sprintf('doc_%s%s.pdf', $parentId, date('ymdHi')); } } $moduleName = 'Documents'; $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->set('filename', $fileName); $recordModel->set('filetype', 'application/pdf'); $recordModel->set('fileversion', 'I'); $recordModel->set('filestatus', 'on'); $recordModel->set('parentid', $parentId); $fieldModelList = $moduleModel->getFields(); foreach ($fieldModelList as $fieldName => $fieldModel) { if ($request->has($fieldName)) { $fieldValue = $request->get($fieldName, null); } else { $fieldValue = $fieldModel->getDefaultFieldValue(); } $fieldDataType = $fieldModel->getFieldDataType(); if ('time' === $fieldDataType) { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } if ($fieldValue) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); } $recordModel->set($fieldName, $fieldValue); } } $recordModel->save(); $newCrmId = $recordModel->getId(); $focus = CRMEntity::getInstance($moduleName); $focus->retrieve_entity_info($newCrmId, $moduleName); $focus->id = $newCrmId; if(!empty($Records)) { foreach ($Records as $record) { $focus->insertintonotesrel($record, $newCrmId); } } $this->saveRelations($request, $focus); if ($request->has('template_ids') && !$request->isEmpty('template_ids')) { $template_ids = $request->get('template_ids'); } else { $default_mode = ('List' === $forView) ? '2' : '1'; $template_ids = $PDFMakerModuleModel->GetDefaultTemplates($default_mode, $parentModuleName); } $PDFMaker->createPDFAndSaveFile($request, $template_ids, $focus, $Records, $fileName, $parentModuleName, $language); } /** * @param Vtiger_Request $request * @param Documents $focus */ public function saveRelations(Vtiger_Request $request, $focus) { //saving the relation to Contacts if ($request->has('pdfdoc_contact_id') && !$request->isEmpty('pdfdoc_contact_id')) { $focus->save_related_module('Contacts', $request->get('pdfdoc_contact_id'), $focus->moduleName, $focus->id); } //saving the relation to Accounts if ($request->has('pdfdoc_account_id') && !$request->isEmpty('pdfdoc_account_id')) { $focus->save_related_module('Accounts', $request->get('pdfdoc_account_id'), $focus->moduleName, $focus->id); } } }