public function step($step, Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $recordId = $request->get('record'); if ($recordId) { $moduleInstance = Settings_MappedFields_Module_Model::getInstanceById($recordId); $viewer->assign('RECORDID', $recordId); $viewer->assign('MODE', 'edit'); } else { $moduleInstance = Settings_MappedFields_Module_Model::getCleanInstance(); } $viewer->assign('MAPPEDFIELDS_MODULE_MODEL', $moduleInstance); $allModules = Settings_MappedFields_Module_Model::getSupportedModules(); $viewer->assign('ALL_MODULES', $allModules); $viewer->assign('MODULE', $moduleName); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); switch ($step) { case 'step4': $viewer->view('Step4.tpl', $qualifiedModuleName); break; case 'step3': $moduleSourceName = Vtiger_Functions::getModuleName($moduleInstance->get('tabid')); $moduleModel = Vtiger_Module_Model::getInstance($moduleSourceName); $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel); $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure()); $viewer->assign('SOURCE_MODULE', $moduleSourceName); $viewer->assign('ADVANCE_CRITERIA', Vtiger_AdvancedFilter_Helper::transformToAdvancedFilterCondition($moduleInstance->get('conditions'))); $viewer->view('Step3.tpl', $qualifiedModuleName); break; case 'step2': $currentUser = Users_Record_Model::getCurrentUserModel(); $assignedToValues = []; $assignedToValues['LBL_USERS'] = $currentUser->getAccessibleUsers(); $assignedToValues['LBL_GROUPS'] = $currentUser->getAccessibleGroups(); $viewer->assign('SEL_MODULE_MODEL', Settings_MappedFields_Module_Model::getInstance($moduleInstance->get('tabid'))); $viewer->assign('REL_MODULE_MODEL', Settings_MappedFields_Module_Model::getInstance($moduleInstance->get('reltabid'))); $viewer->assign('USERS_LIST', $assignedToValues); $viewer->view('Step2.tpl', $qualifiedModuleName); break; case 'step1': default: $viewer->view('Step1.tpl', $qualifiedModuleName); break; } }
public function import(Vtiger_Request $request) { $qualifiedModuleName = $request->getModule(false); $id = ''; if (is_array($_FILES) && $_FILES['imported_xml']['name'] != '') { $xmlName = $_FILES['imported_xml']['name']; $uploadedXml = $_FILES['imported_xml']['tmp_name']; $xmlError = $_FILES['imported_xml']['error']; $extension = end(explode('.', $xmlName)); $message = false; $moduleInstance = Settings_MappedFields_Module_Model::getCleanInstance(); $mapping = []; $combine = ['tabid' => 'source', 'reltabid' => 'target']; if ($xmlError == UPLOAD_ERR_OK && $extension === 'xml') { $xml = simplexml_load_file($uploadedXml); $i = 0; $instances = []; foreach ($xml as $fieldsKey => $fieldsValue) { if (array_key_exists($fieldsKey, $combine)) { $value = (int) Vtiger_Functions::getModuleId((string) $fieldsValue); if (empty($value)) { break; } $instances[$combine[$fieldsKey]] = Vtiger_Module_Model::getInstance((string) $fieldsValue); } elseif ($fieldsKey == 'fields') { foreach ($fieldsValue as $fieldKey => $fieldValue) { foreach ($fieldValue as $columnKey => $columnValue) { settype($columnKey, 'string'); settype($columnValue, 'string'); if (in_array($columnKey, ['default', 'type'])) { $mapping[$i][$columnKey] = $columnValue; continue; } $fieldObject = Settings_MappedFields_Field_Model::getInstance($columnValue, $instances[$columnKey], $mapping[$i]['type']); if (!$fieldObject) { continue; } $mapping[$i][$columnKey] = $fieldObject->getId(); } $i++; } continue; } else { $value = (string) $fieldsValue; } $moduleInstance->getRecord()->set($fieldsKey, $value); } $tabid = $moduleInstance->getRecord()->get('tabid'); $reltabid = $moduleInstance->getRecord()->get('reltabid'); if (empty($tabid) || empty($reltabid)) { $message = 'LBL_MODULE_NOT_EXIST'; } elseif (!$moduleInstance->importsAllowed()) { $moduleInstance->setMapping($mapping); $moduleInstance->save(true); $message = 'LBL_IMPORT_OK'; $id = $moduleInstance->getRecordId(); } else { $message = 'LBL_NO_PERMISSION_TO_IMPORT'; } } else { $message = 'LBL_UPLOAD_ERROR'; } } $response = new Vtiger_Response(); $response->setResult(['id' => $id, 'message' => vtranslate($message, $qualifiedModuleName)]); $response->emit(); }