Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
 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();
 }