Server IP : 23.254.227.96 / Your IP : 216.73.216.7 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/cwpsrv/var/services/roundcube/plugins/calendar/lib/ |
Upload File : |
<?php require_once realpath(__DIR__ . '/../../libcalendaring/lib/libcalendaring_recurrence.php'); /** * Recurrence computation class for the Calendar plugin * * Uitility class to compute instances of recurring events. * * @author Thomas Bruederli <bruederli@kolabsys.com> * * Copyright (C) 2012-2014, Kolab Systems AG <contact@kolabsys.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ class calendar_recurrence extends libcalendaring_recurrence { private $event; private $duration; /** * Default constructor * * @param calendar $cal The calendar plugin instance * @param array $event The event object to operate on */ function __construct($cal, $event) { parent::__construct($cal->lib); $this->event = $event; if (is_object($event['start']) && is_object($event['end'])) { $this->duration = $event['start']->diff($event['end']); } $event['start']->_dateonly = !empty($event['allday']); $this->init($event['recurrence'], $event['start']); } /** * Alias of libcalendaring_recurrence::next() * * @return mixed DateTime object or False if recurrence ended */ public function next_start() { return $this->next(); } /** * Get the next recurring instance of this event * * @return mixed Array with event properties or False if recurrence ended */ public function next_instance() { if ($next_start = $this->next()) { $next = $this->event; $next['start'] = $next_start; if ($this->duration) { $next['end'] = clone $next_start; $next['end']->add($this->duration); } $next['recurrence_date'] = clone $next_start; $next['_instance'] = libcalendaring::recurrence_instance_identifier($next, $this->event['allday']); unset($next['_formatobj']); return $next; } return false; } }