晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/Calendar/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.
* *********************************************************************************** */
vimport('~~/modules/Calendar/iCal/iCalendar_rfc2445.php');
vimport('~~/modules/Calendar/iCal/iCalendar_components.php');
vimport('~~/modules/Calendar/iCal/iCalendar_properties.php');
vimport('~~/modules/Calendar/iCal/iCalendar_parameters.php');
vimport('~~/modules/Calendar/iCal/ical-parser-class.php');
vimport('~~/modules/Calendar/iCalLastImport.php');
class Calendar_Import_View extends Vtiger_Import_View {
function __construct() {
parent::__construct();
$this->exposeMethod('importResult');
$this->exposeMethod('undoIcalImport');
}
/**
* Function to show result of import
* @param Vtiger_Request $request
*/
public function importResult(Vtiger_Request $request) {
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$userId = $currentUserModel->getId();
$moduleName = $request->getModule();
$viewer = $this->getViewer($request);
$request->set('type', 'ics');
if (Import_Utils_Helper::validateFileUpload($request)) {
$lastImport = new iCalLastImport();
$lastImport->clearRecords($userId);
$eventModule = 'Events';
$todoModule = 'Calendar';
$skipFields = array(
$eventModule => array('duration_hours'),
$todoModule => array('eventstatus')
);
$requiredFields = array();
$modules = array($eventModule, $todoModule);
$calendarModel = Vtiger_Module_Model::getInstance($moduleName);
foreach($modules as $module) {
$moduleRequiredFields = array_keys($calendarModel->getRequiredFields($module));
$requiredFields[$module] = array_diff($moduleRequiredFields, $skipFields[$module]);
$totalCount[$module] = 0;
$skipCount[$module] = 0;
$duplicatesCount[$module] = 0;
}
$ical = new iCal();
$icalActivities = $ical->iCalReader("IMPORT_".$userId);
$noOfActivities = count($icalActivities);
for($i=0; $i<$noOfActivities; $i++) {
if($icalActivities[$i]['TYPE'] == 'VEVENT') {
$activity = new iCalendar_event;
$module = $eventModule;
} else {
$activity = new iCalendar_todo;
$module = $todoModule;
}
$totalCount[$module]++;
$activityFieldsList = $activity->generateArray($icalActivities[$i]);
if (!array_key_exists('visibility', $activityFieldsList)) {
$activityFieldsList['visibility'] = ' ';
}
if(array_key_exists('taskpriority',$activityFieldsList)) {
$priorityMap = array('0'=>'Medium','1'=>'High','2'=>'Medium','3'=>'Low');
$priorityval = $activityFieldsList['taskpriority'];
if(array_key_exists($priorityval,$priorityMap))
$activityFieldsList['taskpriority'] = $priorityMap[$priorityval];
}
if(array_key_exists('eventstatus',$activityFieldsList) && !isset($activityFieldsList['eventstatus'])) {
$dueDate = date($activityFieldsList['due_date']);
$currentDate = date('Y-m-d');
$activityFieldsList['eventstatus'] = 'Planned';
if(strtotime($dueDate) < strtotime($currentDate))
$activityFieldsList['eventstatus'] = 'Held';
}
$recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
$recordModel->setData($activityFieldsList);
$recordModel->set('assigned_user_id', $userId);
$skipRecord = false;
foreach($requiredFields[$module] as $key) {
$value = $recordModel->get($key);
if(empty ($value)) {
$skipCount[$module]++;
$skipRecord = true;
break;
}
}
if($skipRecord === true) {
continue;
}
try {
$recordModel->save();
$lastImport = new iCalLastImport();
$lastImport->setFields(array('userid' => $userId, 'entitytype' => $todoModule, 'crmid' => $recordModel->getId()));
$lastImport->save();
if(!empty($icalActivities[$i]['VALARM'])) {
$recordModel->setActivityReminder(0, '', '');
}
} catch (Exception $e) {
$duplicatesCount[$module]++;
}
}
$importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule] - $duplicatesCount[$eventModule];
$importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule] - $duplicatesCount[$todoModule];
$viewer->assign('SUCCESS_EVENTS', $importedEvents);
$viewer->assign('SKIPPED_EVENTS', $skipCount[$eventModule]);
$viewer->assign('DUPLICATE_EVENTS', $duplicatesCount[$eventModule]);
$viewer->assign('SUCCESS_TASKS', $importedTasks);
$viewer->assign('SKIPPED_TASKS', $skipCount[$todoModule]);
$viewer->assign('DUPLICATE_TASKS', $duplicatesCount[$todoModule]);
} else {
$viewer->assign('ERROR_MESSAGE', $request->get('error_message'));
}
$viewer->assign('MODULE', $moduleName);
$viewer->assign('VIEW', 'List');
$viewer->view('ImportResult.tpl', $moduleName);
}
/**
* Function to show result of undo import
* @param Vtiger_Request $request
*/
public function undoIcalImport(Vtiger_Request $request) {
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$moduleName = $request->getModule();
$lastImport = new iCalLastImport();
$returnValue = $lastImport->undo($moduleName, $currentUserModel->getId());
if(!empty($returnValue)) {
$undoStatus = true;
} else {
$undoStatus = false;
}
$viewer = $this->getViewer($request);
$viewer->assign('MODULE', $moduleName);
$viewer->assign('VIEW', 'List');
$viewer->assign('UNDO_STATUS', $undoStatus);
$viewer->view('ImportFinalResult.tpl', $moduleName);
}
}