Current Path :
/
home
/
develito
/
www
/
components
/
com_jevents
/
views
/
icals
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/develito/www/components/com_jevents/views/icals/view.html.php
<?php /** * JEvents Component for Joomla! 3.x * * @version $Id: view.html.php 3257 2012-02-10 13:16:38Z geraintedwards $ * @package JEvents * @copyright Copyright (C) 2008-2025 GWESystems Ltd * @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html * @link http://www.jevents.net */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); use Joomla\CMS\Factory; use Joomla\String\StringHelper; use Joomla\CMS\Component\ComponentHelper; /** * HTML View class for the component frontend * * @static */ #[\AllowDynamicProperties] class ICalsViewIcals extends JEventsAbstractView { function export($tpl = null) { parent::displaytemplate($tpl); } protected function setDescription($desc) { return JEVHelper::setDescription($desc); } protected function replacetags($replacetags) { return JEVHelper::replacetags($replacetags); } protected function wraplines($input, $line_max = 76, $quotedprintable = false) { return JEVHelper::wraplines($input, $line_max, $quotedprintable); } protected function vtimezone($icalEvents) { $params = ComponentHelper::getParams(JEV_COM_COMPONENT); $tzid = ""; if (is_callable("date_default_timezone_set")) { $params = ComponentHelper::getParams(JEV_COM_COMPONENT); $tz = $params->get("icaltimezonelive", ""); if ($tz == "") { return ""; } $current_timezone = $tz; // Do the Timezone definition // replace any spaces with _ underscores $current_timezone = str_replace(" ", "_", $current_timezone); $tzid = ";TZID=$current_timezone"; // find the earliest start date $firststart = false; foreach ($icalEvents as $a) { if (!$firststart || $a->getUnixStartTime() < $firststart) $firststart = $a->getUnixStartTime(); } // Subtract 1 leap year to make sure we have enough transitions $firststart -= 31622400; $timezone = new DateTimeZone($current_timezone); if (version_compare(PHP_VERSION, "5.3.0", "ge")) { $transitions = $timezone->getTransitions($firststart); } else { $transitions = $timezone->getTransitions(); } $tzindex = 0; while (isset($transitions[$tzindex]) && JevDate::strtotime($transitions[$tzindex]['time']) < $firststart) { $tzindex++; } $transitions = array_slice($transitions, $tzindex); if (count($transitions) >= 2) { $lastyear = JEVHelper::getMaxYear(); echo "BEGIN:VTIMEZONE\r\n"; echo "TZID:$current_timezone\r\n"; for ($t = 0; $t < count($transitions); $t++) { $transition = $transitions[$t]; if ((int) $transition['isdst'] == 0) { if (JevDate::strftime("%Y", $transition['ts']) > $lastyear) continue; echo "BEGIN:STANDARD\r\n"; echo "DTSTART:" . JevDate::strftime("%Y%m%dT%H%M%S\r\n", $transition['ts']); if ($t < count($transitions) - 1) { echo "RDATE:" . JevDate::strftime("%Y%m%dT%H%M%S\r\n", $transitions[$t + 1]['ts']); } // if its the first transition then assume the old setting is the same as the next otherwise use the previous value $prev = $t; $prev += ($t == 0) ? 1 : -1; $offset = $transitions[$prev]["offset"]; $sign = $offset >= 0 ? "+" : "-"; $offset = abs($offset); $offset = $sign . sprintf("%04s", (floor($offset / 3600) * 100 + $offset % 60)); echo "TZOFFSETFROM:$offset\r\n"; $offset = $transitions[$t]["offset"]; $sign = $offset >= 0 ? "+" : "-"; $offset = abs($offset); $offset = $sign . sprintf("%04s", (floor($offset / 3600) * 100 + $offset % 60)); echo "TZOFFSETTO:$offset\r\n"; echo "TZNAME:$current_timezone " . $transitions[$t]["abbr"] . "\r\n"; echo "END:STANDARD\r\n"; } } for ($t = 0; $t < count($transitions); $t++) { $transition = $transitions[$t]; if ((int) $transition['isdst'] == 1) { if (JevDate::strftime("%Y", $transition['ts']) > $lastyear) continue; echo "BEGIN:DAYLIGHT\r\n"; echo "DTSTART:" . JevDate::strftime("%Y%m%dT%H%M%S\r\n", $transition['ts']); if ($t < count($transitions) - 1) { echo "RDATE:" . JevDate::strftime("%Y%m%dT%H%M%S\r\n", $transitions[$t + 1]['ts']); } // if its the first transition then assume the old setting is the same as the next otherwise use the previous value $prev = $t; $prev += ($t == 0) ? 1 : -1; $offset = $transitions[$prev]["offset"]; $sign = $offset >= 0 ? "+" : "-"; $offset = abs($offset); $offset = $sign . sprintf("%04s", (floor($offset / 3600) * 100 + $offset % 60)); echo "TZOFFSETFROM:$offset\r\n"; $offset = $transitions[$t]["offset"]; $sign = $offset >= 0 ? "+" : "-"; $offset = abs($offset); $offset = $sign . sprintf("%04s", (floor($offset / 3600) * 100 + $offset % 60)); echo "TZOFFSETTO:$offset\r\n"; echo "TZNAME:$current_timezone " . $transitions[$t]["abbr"] . "\r\n"; echo "END:DAYLIGHT\r\n"; } } echo "END:VTIMEZONE\r\n"; } } return $tzid; } }