示例#1
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $response = new Vtiger_Response();
     $moduleInstance = Settings_MappedFields_Module_Model::getInstanceById($recordId);
     if ($moduleInstance->delete()) {
         $response->setResult(array('success' => 'true'));
     } else {
         $response->setResult(array('success' => 'false'));
     }
     $response->emit();
 }
示例#2
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('id');
     $moduleInstance = Settings_MappedFields_Module_Model::getInstanceById($recordId);
     header('content-type: application/xml; charset=utf-8');
     header('Pragma: public');
     header('Cache-Control: private');
     header('Content-Disposition: attachment; filename=' . $recordId . '_mftemplate.xml');
     header('Content-Description: PHP Generated Data');
     $xml = new DOMDocument('1.0', 'utf-8');
     $xml->preserveWhiteSpace = false;
     $xml->formatOutput = true;
     $xmlTemplate = $xml->createElement('mf_template');
     $xmlFields = $xml->createElement('fields');
     $xmlField = $xml->createElement('field');
     $cDataColumns = ['conditions', 'params'];
     $changeNames = ['tabid', 'reltabid'];
     foreach (Settings_MappedFields_Module_Model::$allFields as $field) {
         if (in_array($field, $cDataColumns)) {
             $name = $xmlTemplate->appendChild($xml->createElement($field));
             $name->appendChild($xml->createCDATASection(html_entity_decode($moduleInstance->getRecord()->getRaw($field))));
         } else {
             if (in_array($field, $changeNames)) {
                 $value = Vtiger_Functions::getModuleName($moduleInstance->get($field));
             } else {
                 $value = $moduleInstance->get($field);
             }
             $xmlColumn = $xml->createElement($field, html_entity_decode($value, ENT_COMPAT, 'UTF-8'));
         }
         $xmlTemplate->appendChild($xmlColumn);
     }
     foreach ($moduleInstance->getMapping() as $field) {
         $xmlField = $xml->createElement('field');
         foreach ($field as $key => $details) {
             if (gettype($details) == 'object') {
                 $value = $details->getFieldName();
             } else {
                 $value = $details;
             }
             $xmlColumn = $xml->createElement($key, html_entity_decode($value, ENT_COMPAT, 'UTF-8'));
             $xmlField->appendChild($xmlColumn);
         }
         $xmlFields->appendChild($xmlField);
     }
     $xmlTemplate->appendChild($xmlFields);
     $xmlTemplate->appendChild($xmlFields);
     $xml->appendChild($xmlTemplate);
     print $xml->saveXML();
 }
示例#3
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;
     }
 }
示例#4
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();
 }
示例#5
0
 /**
  * Function to get instance
  * @param <String/Integer> $value
  * @param <String> $module
  * @param <String> $type
  * @return <Settings_MappedFields_Field_Model> field model
  */
 public static function getInstance($value, $module, $type = '')
 {
     switch ($type) {
         case 'SELF':
             $fieldModel = parent::getInstance($value, $module);
             if (!$fieldModel) {
                 $fields = Settings_MappedFields_Module_Model::getSpecialFields();
                 $fieldModel = $fields[$value];
             }
             break;
         case 'INVENTORY':
             $inventoryFieldModel = Vtiger_InventoryField_Model::getInstance($module->getName());
             $inventoryFields = $inventoryFieldModel->getFields();
             return self::getInstanceFromInventoryFieldObject($inventoryFields[$value]);
         default:
             $fieldModel = parent::getInstance($value, $module);
             break;
     }
     if ($fieldModel) {
         $objectProperties = get_object_vars($fieldModel);
         $fieldModel = new self();
         foreach ($objectProperties as $properName => $propertyValue) {
             $fieldModel->{$properName} = $propertyValue;
         }
     }
     return $fieldModel;
 }
示例#6
0
 public function save($saveMapping = false)
 {
     $log = vglobal('log');
     $log->debug('Entering ' . __CLASS__ . '::' . __METHOD__ . '(' . $saveMapping . ') method ...');
     $db = PearDatabase::getInstance();
     $fields = self::$allFields;
     $params = [];
     foreach ($fields as $field) {
         $value = $this->record->get($field);
         if (in_array($field, ['conditions', 'params'])) {
             $params[$field] = Zend_Json::encode($value);
         } elseif (is_array($value)) {
             $params[$field] = implode(',', $value);
         } else {
             $params[$field] = $value;
         }
     }
     if (!$this->getRecordId()) {
         $db->insert($this->baseTable, $params);
         $this->record->set('id', $db->getLastInsertID());
     } else {
         $db->update($this->baseTable, $params, '`' . $this->baseIndex . '` = ?', [$this->getRecordId()]);
     }
     if ($saveMapping) {
         $stepFields = Settings_MappedFields_Module_Model::getFieldsByStep(2);
         $this->deleteMapping($this->getRecordId());
         foreach ($this->getMapping() as $mapp) {
             $params = [];
             $params[$this->mappingIndex] = $this->getRecordId();
             foreach ($stepFields as $name) {
                 $params[$name] = $mapp[$name];
             }
             if ($params['source'] && $params['target']) {
                 $db->insert($this->mappingTable, $params);
             }
         }
     }
     $log->debug('Exiting ' . __CLASS__ . '::' . __METHOD__ . ' method ...');
     return $this->getRecordId();
 }
示例#7
0
 public function preProcess(Vtiger_Request $request, $display = true)
 {
     $viewer = $this->getViewer($request);
     $viewer->assign('SUPPORTED_MODULE_MODELS', Settings_MappedFields_Module_Model::getSupportedModules());
     parent::preProcess($request, $display);
 }