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(); }
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(); }
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(); }
/** * 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; }
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(); }
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); }