晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/modules/Import/views/ |
Upload File : |
<?php
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
require_once 'vtlib/Vtiger/Cron.php';
class Import_Main_View extends Vtiger_View_Controller{
var $request;
var $user;
var $numberOfRecords;
public function process(Vtiger_Request $request) {
return;
}
public function __construct($request, $user) {
$this->request = $request;
$this->user = $user;
}
public static function import($request, $user) {
$importController = new Import_Main_View($request, $user);
$importController->saveMap();
$fileReadStatus = $importController->copyFromFileToDB();
if($fileReadStatus) {
$importController->queueDataImport();
}
$isImportScheduled = $importController->request->get('is_scheduled');
if($isImportScheduled) {
$importInfo = Import_Queue_Action::getUserCurrentImportInfo($importController->user);
self::showScheduledStatus($importInfo);
} else {
$importController->triggerImport();
}
}
public function triggerImport($batchImport=false) {
$importInfo = Import_Queue_Action::getImportInfo($this->request->get('module'), $this->user);
$importDataController = new Import_Data_Action($importInfo, $this->user);
if(!$batchImport) {
if(!$importDataController->initializeImport()) {
Import_Utils_Helper::showErrorPage(vtranslate('ERR_FAILED_TO_LOCK_MODULE', 'Import'));
exit;
}
}
$importDataController->importData();
Import_Queue_Action::updateStatus($importInfo['id'], Import_Queue_Action::$IMPORT_STATUS_HALTED);
$importInfo = Import_Queue_Action::getImportInfo($this->request->get('module'), $this->user);
self::showImportStatus($importInfo, $this->user);
}
public static function showImportStatus($importInfo, $user) {
if($importInfo == null) {
Import_Utils_Helper::showErrorPage(vtranslate('ERR_IMPORT_INTERRUPTED', 'Import'));
exit;
}
$importDataController = new Import_Data_Action($importInfo, $user);
if($importInfo['status'] == Import_Queue_Action::$IMPORT_STATUS_HALTED ||
$importInfo['status'] == Import_Queue_Action::$IMPORT_STATUS_NONE) {
$continueImport = true;
} else {
$continueImport = false;
}
$focus = CRMEntity::getInstance($importInfo['module']);
if(method_exists($focus, 'getImportStatusCount')) {
$importStatusCount = $focus->getImportStatusCount($importDataController);
} else {
$importStatusCount = $importDataController->getImportStatusCount();
}
$totalRecords = $importStatusCount['TOTAL'];
if($totalRecords > ($importStatusCount['IMPORTED'] + $importStatusCount['FAILED'])) {
// if($importInfo['status'] == Import_Queue_Action::$IMPORT_STATUS_SCHEDULED) {
// self::showScheduledStatus($importInfo);
// exit;
// }
self::showCurrentStatus($importInfo, $importStatusCount, $continueImport);
exit;
} else {
$importDataController->finishImport();
self::showResult($importInfo, $importStatusCount);
}
}
public static function showCurrentStatus($importInfo, $importStatusCount, $continueImport) {
$moduleName = $importInfo['module'];
$importId = $importInfo['id'];
$params = array('module' => $moduleName);
$request = new Vtiger_Request($params);
$indexViewer = new Vtiger_Index_View();
$viewer = $indexViewer->getViewer($request);
$viewer->assign('FOR_MODULE', $moduleName);
$viewer->assign('MODULE', 'Import');
$viewer->assign('IMPORT_ID', $importId);
$viewer->assign('IMPORT_RESULT', $importStatusCount);
$inventoryModules = getInventoryModules();
array_push($inventoryModules, 'Users');
$viewer->assign('INVENTORY_MODULES', $inventoryModules);
$viewer->assign('CONTINUE_IMPORT', $continueImport);
$viewer->assign('JS_SCRIPTS', $indexViewer->getHeaderScripts($request));
$viewer->view('ImportStatus.tpl', 'Import');
}
public static function showResult($importInfo, $importStatusCount) {
$moduleName = $importInfo['module'];
$ownerId = $importInfo['user_id'];
$viewer = new Vtiger_Viewer();
$viewer->assign('SKIPPED_RECORDS',$skippedRecords);
$viewer->assign('FOR_MODULE', $moduleName);
$viewer->assign('MODULE', 'Import');
$viewer->assign('OWNER_ID', $ownerId);
$viewer->assign('IMPORT_RESULT', $importStatusCount);
$inventoryModules = getInventoryModules();
array_push($inventoryModules, 'Users');
$viewer->assign('INVENTORY_MODULES', $inventoryModules);
$viewer->assign('MERGE_ENABLED', $importInfo['merge_type']);
$viewer->view('ImportResult.tpl', 'Import');
}
public static function showScheduledStatus($importInfo) {
$moduleName = $importInfo['module'];
$importId = $importInfo['id'];
$viewer = new Vtiger_Viewer();
$viewer->assign('FOR_MODULE', $moduleName);
$viewer->assign('MODULE', 'Import');
$viewer->assign('IMPORT_ID', $importId);
$viewer->view('ImportSchedule.tpl', 'Import');
}
public function saveMap() {
$saveMap = $this->request->get('save_map');
$mapName = $this->request->get('save_map_as');
if($saveMap && !empty($mapName)) {
$fieldMapping = $this->request->get('field_mapping');
$fileReader = Import_Utils_Helper::getFileReader($this->request, $this->user);
if($fileReader == null) {
return false;
}
$hasHeader = $fileReader->hasHeader();
if($hasHeader) {
$firstRowData = $fileReader->getFirstRowData($hasHeader);
$headers = array_keys($firstRowData);
foreach($fieldMapping as $fieldName => $index) {
$saveMapping["$headers[$index]"] = $fieldName;
}
} else {
$saveMapping = array_flip($fieldMapping);
}
$map = array();
$map['name'] = $mapName;
$map['content'] = $saveMapping;
$map['module'] = $this->request->get('module');
$map['has_header'] = ($hasHeader)?1:0;
$map['assigned_user_id'] = $this->user->id;
$importMap = new Import_Map_Model($map, $this->user);
$importMap->save();
}
}
public function copyFromFileToDB() {
$fileReader = Import_Utils_Helper::getFileReader($this->request, $this->user);
$fileReader->read();
$fileReader->deleteFile();
if($fileReader->getStatus() == 'success') {
$this->numberOfRecords = $fileReader->getNumberOfRecordsRead();
return true;
} else {
Import_Utils_Helper::showErrorPage(vtranslate('ERR_FILE_READ_FAILED', 'Import').' - '.vtranslate($fileReader->getErrorMessage(), 'Import'));
return false;
}
}
public function queueDataImport() {
$configReader = new Import_Config_Model();
$immediateImportRecordLimit = $configReader->get('immediateImportLimit');
$pagingLimit = $configReader->get('importPagingLimit');
$numberOfRecordsToImport = $this->numberOfRecords;
if($numberOfRecordsToImport > $immediateImportRecordLimit) {
$this->request->set('is_scheduled', true);
}
if($numberOfRecordsToImport > $pagingLimit){
$this->request->set('paging_enabled', true);
}
Import_Queue_Action::add($this->request, $this->user);
}
public static function deleteMap($request) {
$moduleName = $request->getModule();
$mapId = $request->get('mapid');
if(!empty($mapId)) {
Import_Map_Model::markAsDeleted($mapId);
}
$viewer = new Vtiger_Viewer();
$viewer->assign('FOR_MODULE', $moduleName);
$viewer->assign('MODULE', 'Import');
$viewer->assign('SAVED_MAPS', Import_Map_Model::getAllByModule($moduleName));
$viewer->view('Import_Saved_Maps.tpl', 'Import');
}
static function updateMap($request) {
$moduleName = $request->getModule();
$mapId = $request->get('mapid');
if (!empty($mapId)) {
$mapping = $request->get('mapping');
Import_Map_Model::updateMap($mapId, $mapping);
}
$viewer = new Vtiger_Viewer();
$viewer->assign('FOR_MODULE', $moduleName);
$viewer->assign('MODULE', 'Import');
$viewer->assign('SAVED_MAPS', Import_Map_Model::getAllByModule($moduleName));
$viewer->assign('SELECTED_MAP_ID', $mapId);
$viewer->view('Import_Saved_Maps.tpl', 'Import');
}
}
?>