public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $step = $request->get('step'); $moduleName = $request->get('module_name'); if ($recordId) { $pdfModel = Vtiger_PDF_Model::getInstanceById($recordId, $moduleName); } else { $pdfModel = Settings_PDF_Record_Model::getCleanInstance($moduleName); } $stepFields = Settings_PDF_Module_Model::getFieldsByStep($step); foreach ($stepFields as $field) { $value = $request->get($field); if (is_array($value)) { $value = implode(',', $value); } if ($field === 'module_name' && $pdfModel->get('module_name') != $value) { // change of main module, overwrite existing conditions $pdfModel->deleteConditions(); } $pdfModel->set($field, $value); } $pdfModel->set('conditions', $request->get('conditions')); Settings_PDF_Record_Model::transformAdvanceFilterToWorkFlowFilter($pdfModel); Settings_PDF_Record_Model::save($pdfModel, $step); $response = new Vtiger_Response(); $response->setResult(['id' => $pdfModel->get('pdfid')]); $response->emit(); }
public static function save(Vtiger_PDF_Model $pdfModel, $step = 1) { $db = PearDatabase::getInstance(); switch ($step) { case 2: case 3: case 4: case 5: case 6: case 7: case 8: $stepFields = Settings_PDF_Module_Model::getFieldsByStep($step); $params = []; $fields = []; foreach ($stepFields as $field) { if ($field === 'conditions') { $params[] = json_encode($pdfModel->get($field)); } else { $params[] = $pdfModel->get($field); } $fields[] = "`{$field}` = ?"; } $params[] = $pdfModel->getId(); $query = 'UPDATE `a_yf_pdf` SET ' . implode(',', $fields) . ' WHERE `pdfid` = ? LIMIT 1;'; $result = $db->pquery($query, $params); return $pdfModel->get('pdfid'); case 1: $stepFields = Settings_PDF_Module_Model::getFieldsByStep($step); if (!$pdfModel->getId()) { $params = []; foreach ($stepFields as $field) { $params[$field] = $pdfModel->get($field); } $db->insert('a_yf_pdf', $params); $pdfModel->set('pdfid', $db->getLastInsertID()); } else { $params = []; $fields = []; foreach ($stepFields as $field) { $params[] = $pdfModel->get($field); $fields[] = "`{$field}` = ?"; } $params[] = $pdfModel->getId(); $query = 'UPDATE `a_yf_pdf` SET ' . implode(',', $fields) . ' WHERE `pdfid` = ? LIMIT 1;'; $result = $db->pquery($query, $params); } return $pdfModel->get('pdfid'); case 'import': $allFields = Settings_PDF_Module_Model::$allFields; $params = []; foreach ($allFields as $field) { if ($field === 'conditions') { $params[$field] = json_encode($pdfModel->get($field)); } else { $params[$field] = $pdfModel->get($field); } } $db->insert('a_yf_pdf', $params); $pdfModel->set('pdfid', $db->getLastInsertID()); return $pdfModel->get('pdfid'); } }