晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/www/crm/modules/Google/models/ |
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/WSAPP/synclib/models/SyncRecordModel.php');
class Google_Calendar_Model extends WSAPP_SyncRecordModel {
public $startUTC;
public $endUTC;
/**
* return id of Google Record
* @return <string> id
*/
function getId() {
return $this->data['entity']->getId();
}
/**
* return modified time of Google Record
* @return <date> modified time
*/
public function getModifiedTime() {
return $this->vtigerFormat($this->data['entity']->getUpdated());
}
/**
* return Subject of Google Record
* @return <string> Subject
*/
function getSubject() {
return $this->data['entity']->getSummary();
}
/**
* return Start time time in UTC of Google Record
* @return <date> start time
*/
function getStartTimeUTC($user = false) {
if (isset($this->startUTC)) {
return $this->startUTC;
}
if(!$user) {
$user = Users_Record_Model::getCurrentUserModel();
}
$when = $this->data['entity']->getStart();
if (empty($when)) {
$gStart = "00:00";
} else if ($when->getDateTime()) {
$gStart = $when->getDateTime();
} else {
$gStart = "00:00";
}
$start = new DateTime($gStart);
$timeZone = new DateTimeZone('UTC');
$start->setTimezone($timeZone);
$startUTC = $start->format('H:i:s');
$gDateTime = $when->getDateTime();
if($startUTC == '00:00:00' && empty($gDateTime)) {
$userTimezone = $user->get('time_zone');
$startUTCObj = DateTimeField::convertTimeZone($startUTC, $userTimezone, DateTimeField::getDBTimeZone());
$startUTC = $startUTCObj->format('H:i:s');
}
$this->startUTC = $startUTC;
return $startUTC;
}
/**
* return End time time in UTC of Google Record
* @return <date> end time
*/
function getEndTimeUTC($user = false) {
if (isset($this->endUTC)) {
return $this->endUTC;
}
if(!$user) {
$user = Users_Record_Model::getCurrentUserModel();
}
$when = $this->data['entity']->getEnd();
if (empty($when)) {
$gEnd = "00:00";
} else if ($when->getDateTime()) {
$gEnd = $when->getDateTime();
} else {
$gEnd = "00:00";
}
$end = new DateTime($gEnd);
$timeZone = new DateTimeZone('UTC');
$end->setTimezone($timeZone);
$endUTC = $end->format('H:i:s');
$gDateTime = $when->getDateTime();
if($endUTC == '00:00:00' && empty($gDateTime)) {
$userTimezone = $user->get('time_zone');
$startUTCObj = DateTimeField::convertTimeZone($endUTC, $userTimezone, DateTimeField::getDBTimeZone());
$endUTC = $startUTCObj->format('H:i:s');
}
$this->endUTC = $endUTC;
return $endUTC;
}
/**
* return start date in UTC of Google Record
* @return <date> start date
*/
function getStartDate($user = false) {
if (isset($this->startDate)) {
return $this->startdate;
}
if(!$user) {
$user = Users_Record_Model::getCurrentUserModel();
}
$when = $this->data['entity']->getStart();
if (empty($when)) {
$gStart = date('Y-m-d');
} else if ($when->getDateTime()) {
$gStart = $when->getDateTime();
} else if($when->getDate()) {
$gStart = $when->getDate();
} else {
$gStart = date('Y-m-d');
}
$start = new DateTime($gStart);
$timeZone = new DateTimeZone('UTC');
$start->setTimezone($timeZone);
$startDate = $start->format('Y-m-d');
$gDateTime = $when->getDateTime();
if($start->format('H:i:s') == '00:00:00' && empty($gDateTime)) {
$userTimezone = $user->get('time_zone');
$startUTCObj = DateTimeField::convertTimeZone($startDate, $userTimezone, DateTimeField::getDBTimeZone());
$startDate = $startUTCObj->format('Y-m-d');
}
$this->startDate = $startDate;
return $startDate;
}
/**
* return End date in UTC of Google Record
* @return <date> end date
*/
function getEndDate($user = false) {
if (isset($this->endUTC)) {
return $this->endUTC;
}
if(!$user) {
$user = Users_Record_Model::getCurrentUserModel();
}
$when = $this->data['entity']->getEnd();
if (empty($when)) {
$gEnd = date('Y-m-d');
} else if ($when->getDateTime()) {
$gEnd = $when->getDateTime();
} else if ($when->getDate()) {
$gEnd = $when->getDate();
} else {
$gEnd = date('Y-m-d');
}
$end = new DateTime($gEnd);
$timeZone = new DateTimeZone('UTC');
$end->setTimezone($timeZone);
$endDate = $end->format('Y-m-d');
$gDateTime = $when->getDateTime();
if($end->format('H:i:s') == '00:00:00' && empty($gDateTime)) {
$userTimezone = $user->get('time_zone');
$endUTCObj = DateTimeField::convertTimeZone($endDate, $userTimezone, DateTimeField::getDBTimeZone());
$endDate = $endUTCObj->format('Y-m-d');
}
$this->endDate = $endDate;
return $endDate;
}
/**
* return tilte of Google Record
* @return <string> title
*/
function getTitle() {
$title = $this->data['entity']->getSummary();
return empty($title) ? null : $title;
}
/**
* function to get Visibility of google calendar event
* @return <string> visibility of google event (Private or Public)
* @return <null> if google event visibility is default
*/
function getVisibility($user) {
$visibility = $this->data['entity']->getVisibility();
if(strpos($visibility, 'private') !== false)
return 'Private';
else if(strpos($visibility, 'public') !== false)
return 'Public';
else {
$calendarsharedtype = $user->get('calendarsharedtype');
if($calendarsharedtype == 'selectedusers' || $calendarsharedtype == 'public') {
return 'Public';
}
return 'Private';
}
}
/**
* return discription of Google Record
* @return <string> Discription
*/
function getDescription() {
return $this->data['entity']->getDescription();
}
/**
* return location of Google Record
* @return <string> location
*/
function getWhere() {
$where = $this->data['entity']->getLocation();
return $where;
}
/**
* return attendentees of Google Record
*/
public function getAttendees() {
$attendeeDetails = array();
$attendees = $this->data['entity']->getAttendees();
if(is_array($attendees)) {
foreach($attendees as $attendee) {
$attendeeDetails[] = $attendee->getEmail();
}
}
return $attendeeDetails;
}
/**
* Returns the Google_Contacts_Model of Google Record
* @param <array> $recordValues
* @return Google_Contacts_Model
*/
public static function getInstanceFromValues($recordValues) {
$model = new Google_Calendar_Model($recordValues);
return $model;
}
/**
* converts the Google Format date to
* @param <date> $date Google Date
* @return <date> Vtiger date Format
*/
public function vtigerFormat($date) {
list($date, $timestring) = explode('T', $date);
list($time, $tz) = explode('.', $timestring);
return $date . " " . $time;
}
}
?>