/** * @param array * @return array */ function GCalendarParseRoute($segments) { // Get the active menu item $menu = JFactory::getApplication()->getMenu(); $item = $menu->getActive(); $vars = array(); $view = $segments[0]; //if the view is calendars it is a menu link if ($view == 'calendars') { $view = $item->query['view']; } $vars['view'] = $view; switch ($view) { case 'event': $vars['gcid'] = $segments[1]; $vars['eventID'] = $segments[2]; $vars['Itemid'] = GCalendarUtil::getItemId($segments[2]); break; case 'google': case 'gcalendar': // do nothing break; } return $vars; }
/** * @param array * @return array */ function GCalendarParseRoute($segments) { // Get the active menu item $menu =& JSite::getMenu(); $item =& $menu->getActive(); $vars = array(); $view = $segments[0]; //if the view is calendars it is a menu link if ($view == 'calendars') { $view = $item->query['view']; } $vars['view'] = $view; switch ($view) { case 'event': $vars['eventID'] = $segments[1]; $vars['gcid'] = $segments[2]; $vars['Itemid'] = GCalendarUtil::getItemId($segments[2]); break; case 'day': $vars['gcids'] = explode("-", $segments[2]); $calids = $vars['gcids']; if (count($calids) > 0) { $itemid = GCalendarUtil::getItemId($calids[0]); foreach ($calids as $cal) { $id = GCalendarUtil::getItemId($cal); if ($id != $itemid) { $itemid = null; break; } } if ($itemid != null) { $vars['Itemid'] = $itemid; } } break; case 'google': case 'gcalendar': // do nothing break; } return $vars; }
/** * The simplepie event is rendered for the given formats and * returned as HTML code. * * @param $event * @param $format * @param $dateformat * @param $timeformat * @return the HTML code of the efent */ function renderEvent($event, $format, $dateformat, $timeformat) { $feed = $event->get_feed(); $tz = GCalendarUtil::getComponentParameter('timezone'); if ($tz == '') { $tz = $feed->get_timezone(); } $itemID = GCalendarUtil::getItemId($feed->get('gcid')); if (!empty($itemID)) { $itemID = '&Itemid=' . $itemID; } else { $menu = JSite::getMenu(); $activemenu = $menu->getActive(); if ($activemenu != null) { $itemID = '&Itemid=' . $activemenu->id; } } // These are the dates we'll display $startDate = self::strftime($dateformat, $event->get_start_date()); $startTime = self::strftime($timeformat, $event->get_start_date()); $endDate = self::strftime($dateformat, $event->get_end_date()); $endTime = self::strftime($timeformat, $event->get_end_date()); $temp_event = $format; switch ($event->get_day_type()) { case $event->SINGLE_WHOLE_DAY: $temp_event = str_replace("{startdate}", $startDate, $temp_event); $temp_event = str_replace("{starttime}", "", $temp_event); $temp_event = str_replace("{dateseparator}", "", $temp_event); $temp_event = str_replace("{enddate}", "", $temp_event); $temp_event = str_replace("{endtime}", "", $temp_event); break; case $event->SINGLE_PART_DAY: $temp_event = str_replace("{startdate}", $startDate, $temp_event); $temp_event = str_replace("{starttime}", $startTime, $temp_event); $temp_event = str_replace("{dateseparator}", "-", $temp_event); $temp_event = str_replace("{enddate}", "", $temp_event); $temp_event = str_replace("{endtime}", $endTime, $temp_event); break; case $event->MULTIPLE_WHOLE_DAY: $SECSINDAY = 86400; $endDate = self::strftime($dateformat, $event->get_end_date() - $SECSINDAY); $temp_event = str_replace("{startdate}", $startDate, $temp_event); $temp_event = str_replace("{starttime}", "", $temp_event); $temp_event = str_replace("{dateseparator}", "-", $temp_event); $temp_event = str_replace("{enddate}", $endDate, $temp_event); $temp_event = str_replace("{endtime}", "", $temp_event); break; case $event->MULTIPLE_PART_DAY: $temp_event = str_replace("{startdate}", $startDate, $temp_event); $temp_event = str_replace("{starttime}", $startTime, $temp_event); $temp_event = str_replace("{dateseparator}", "-", $temp_event); $temp_event = str_replace("{enddate}", $endDate, $temp_event); $temp_event = str_replace("{endtime}", $endTime, $temp_event); break; } if (substr_count($temp_event, '"{description}"')) { // If description is in html attribute $desc = htmlspecialchars(str_replace('"', "'", $event->get_description())); } else { //Make any URLs used in the description also clickable $desc = preg_replace("@(src|href)=\"https?\\://@i", '\\1="', $event->get_description()); $desc = preg_replace("@(((f|ht)tps?://)[^\"\\'\\>\\s]+)@", '<a href="\\1" target="_blank">\\1</a>', $desc); //or "¤(((f|ht)tp:\/\/)[\-a-zA-Z0-9@:%_\+\.~#\?,\/=&;]+)¤" } $temp_event = str_replace("{title}", $event->get_title(), $temp_event); $temp_event = str_replace("{description}", $desc, $temp_event); $temp_event = str_replace("{where}", $event->get_location(), $temp_event); $temp_event = str_replace("{backlink}", htmlentities(JRoute::_('index.php?option=com_gcalendar&view=event&eventID=' . $event->get_id() . '&start=' . $event->get_start_date() . '&end=' . $event->get_end_date() . '&gcid=' . $feed->get('gcid') . $itemID)), $temp_event); $temp_event = str_replace("{link}", $event->get_link() . '&ctz=' . $tz, $temp_event); $temp_event = str_replace("{maplink}", "http://maps.google.com/?q=" . urlencode($event->get_location()), $temp_event); $temp_event = str_replace("{calendarname}", $feed->get('gcname'), $temp_event); $temp_event = str_replace("{calendarcolor}", $feed->get('gccolor'), $temp_event); // Accept and translate HTML $temp_event = html_entity_decode($temp_event); return $temp_event; }
* You should have received a copy of the GNU General Public License * along with GCalendar. If not, see <http://www.gnu.org/licenses/>. * * @author Allon Moritz * @copyright 2007-2009 Allon Moritz * @version $Revision: 2.1.2 $ */ defined('_JEXEC') or die('Restricted access'); require_once 'daycalendar.php'; $model =& $this->getModel(); $gcids = $model->getState('gcids'); $itemID = null; if (!empty($gcids)) { $itemID = GCalendarUtil::getItemId($gcids[0]); foreach ($gcids as $cal) { $id = GCalendarUtil::getItemId($cal); if ($id != $itemID) { $itemID = null; break; } } if ($itemID != null) { $component =& JComponentHelper::getComponent('com_gcalendar'); $menu =& JSite::getMenu(); $item = $menu->getItem($itemID); $backLinkView = $item->query['view']; echo "<table><tr><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&view=' . $backLinkView . '&Itemid=' . $itemID) . "\">\n"; echo "<img id=\"prevBtn_img\" height=\"16\" border=\"0\" width=\"16\" alt=\"backlink\" src=\"components/com_gcalendar/hiddenviews/day/tmpl/back.png\"/>\n"; echo "</a></td><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&view=' . $backLinkView . '&Itemid=' . $itemID) . '">' . JText::_('CALENDAR_BACK_LINK') . "</a>\n";
* but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GCalendar. If not, see <http://www.gnu.org/licenses/>. * * @author Allon Moritz * @copyright 2007-2010 Allon Moritz * @since 2.2.0 */ defined('_JEXEC') or die('Restricted access'); $params = new JParameter(''); $itemID = null; foreach ($this->calendars as $calendar) { $itemID = GCalendarUtil::getItemId($calendar->id); } if (!empty($itemID)) { $component =& JComponentHelper::getComponent('com_gcalendar'); $menu =& JSite::getMenu(); $params = $menu->getParams($itemID); echo "<table><tr><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&Itemid=' . $itemID) . "\">\n"; echo "<img id=\"prevBtn_img\" height=\"16\" border=\"0\" width=\"16\" alt=\"backlink\" src=\"components/com_gcalendar/images/back.png\"/>\n"; echo "</a></td><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&Itemid=' . $itemID) . '">' . JText::_('CALENDAR_BACK_LINK') . "</a>\n"; echo "</td></tr></table>\n"; } JHTML::_('behavior.mootools'); GCalendarUtil::loadJQuery(); $document =& JFactory::getDocument();
/** * Returns a Simplepie feed for the calendar according * to the parameter gcid. * If there is a menu available for this calendar the * cache is used and configured from the menu parameters. */ function getGoogleCalendarFeeds() { GCalendarUtil::ensureSPIsLoaded(); $startDate = JRequest::getVar('start', null); $endDate = JRequest::getVar('end', null); $browserTz = JRequest::getInt('browserTimezone', null); if (!empty($browserTz)) { $browserTz = $browserTz * 60; } else { $browserTz = 0; } $serverOffset = date('Z', $startDate); $startDate = $startDate - $browserTz - $serverOffset - GCalendarModelJSONFeed::getGCalendarTZOffset($startDate); $endDate = $endDate - $browserTz - $serverOffset - GCalendarModelJSONFeed::getGCalendarTZOffset($endDate); $calendarids = ''; if (JRequest::getVar('gcids', null) != null) { if (is_array(JRequest::getVar('gcids', null))) { $calendarids = JRequest::getVar('gcids', null); } else { $calendarids = explode(',', JRequest::getVar('gcids', null)); } } else { $calendarids = JRequest::getVar('gcid', null); } $results = GCalendarDBUtil::getCalendars($calendarids); if (empty($results)) { return null; } $calendars = array(); foreach ($results as $result) { if (empty($result->calendar_id)) { continue; } $feed = new SimplePie_GCalendar(); if (JRequest::getCmd('layout', null) == 'module') { $cacheTime = JRequest::getInt('ctime', -1); if ($cacheTime > -1) { // check if cache directory exists and is writeable $cacheDir = JPATH_BASE . DS . 'cache' . DS . 'mod_gcalendar'; $cache_exists = true; JFolder::create($cacheDir, 0755); if (!is_writable($cacheDir)) { JError::raiseWarning(500, "Created cache at " . $cacheDir . " is not writable, disabling cache."); $cache_exists = false; } else { $cache_exists = true; } $feed->enable_cache($cache_exists); if ($cache_exists) { $feed->set_cache_location($cacheDir); $feed->set_cache_duration($cacheTime); } } else { $feed->enable_cache(false); $feed->set_cache_duration(-1); } } else { $linkID = GCalendarUtil::getItemId($result->id); $menus =& JSite::getMenu(); $params = $menus->getParams($linkID); $conf =& JFactory::getConfig(); if ($params != null && ($params->get('gccache', 0) == 2 || $params->get('gccache', 0) == 1 && $conf->getValue('config.caching'))) { $cacheTime = $params->get('gccache_time', $conf->getValue('config.cachetime') * 60); // check if cache directory exists and is writeable $cacheDir = JPATH_BASE . DS . 'cache' . DS . 'com_gcalendar'; JFolder::create($cacheDir, 0755); if (!is_writable($cacheDir)) { JError::raiseWarning(500, "Created cache at " . $cacheDir . " is not writable, disabling cache."); $cache_exists = false; } else { $cache_exists = true; } //check and set caching $feed->enable_cache($cache_exists); if ($cache_exists) { $feed->set_cache_location($cacheDir); $feed->set_cache_duration($cacheTime); } } else { $feed->enable_cache(false); $feed->set_cache_duration(-1); } } $feed->set_show_past_events(FALSE); $feed->set_sort_ascending(TRUE); $feed->set_orderby_by_start_date(TRUE); $feed->set_expand_single_events(TRUE); $feed->enable_order_by_date(FALSE); $feed->set_start_date($startDate); $feed->set_end_date($endDate); $feed->set_max_events(1000); $feed->put('gcid', $result->id); $feed->put('gccolor', $result->color); $feed->put('gcname', $result->name); $feed->set_cal_language(GCalendarUtil::getFrLanguage()); $feed->set_timezone(GCalendarUtil::getComponentParameter('timezone')); $url = SimplePie_GCalendar::create_feed_url($result->calendar_id, $result->magic_cookie); $feed->set_feed_url($url); $feed->init(); //echo $feed->feed_url; if ($feed->error()) { JError::raiseWarning(500, 'Simplepie detected an error for the calendar ' . $result->calendar_id . '. Please run the <a href="administrator/components/com_gcalendar/libraries/sp-gcalendar/sp_compatibility_test.php">compatibility utility</a>.<br>The following Simplepie error occurred:<br>' . $feed->error()); } $feed->handle_content_type(); $calendars[] = $feed; } return $calendars; }
public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null) { $user = JFactory::getUser(); $text = trim($text); if ($text == '') { return array(); } if ($phrase == 'exact') { $text = "\"" . $text . "\""; } switch ($ordering) { case 'oldest': $orderasc = GCalendarZendHelper::SORT_ORDER_ASC; break; case 'newest': default: $orderasc = GCalendarZendHelper::SORT_ORDER_DESC; } if (is_array($areas)) { if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) { return array(); } } $pluginParams = $this->params; $limit = $pluginParams->def('search_limit', 50); $calendarids = $pluginParams->get('calendarids', NULL); $pastevents = $pluginParams->get('pastevents', 1) == 1; $results = GCalendarDBUtil::getCalendars($calendarids); if (empty($results)) { return array(); } $events = array(); foreach ($results as $result) { $tmp = GCalendarZendHelper::getEvents($result, null, null, $limit, $text, GCalendarZendHelper::ORDER_BY_START_TIME, $pastevents, $orderasc); foreach ($tmp as $event) { $events[] = $event; } } if ($orderasc == GCalendarZendHelper::SORT_ORDER_ASC) { usort($events, array("GCalendar_Entry", "compare")); } else { usort($events, array("GCalendar_Entry", "compareDesc")); } array_splice($events, $limit); $return = array(); foreach ($events as $event) { $params = clone JComponentHelper::getParams('com_gcalendar'); $title = GCalendarUtil::renderEvents(array($event), '{{#events}}{{date}} {{{title}}}{{/events}}', $params); $text = GCalendarUtil::renderEvents(array($event), '{{#events}}{{{description}}}{{/events}}', $params); $itemID = GCalendarUtil::getItemId($event->getParam('gcid')); if (!empty($itemID)) { $itemID = '&Itemid=' . $itemID; } $row->href = JRoute::_('index.php?option=com_gcalendar&view=event&eventID=' . $event->getGCalId() . '&gcid=' . $event->getParam('gcid') . $itemID); $row->title = $title; $row->text = $text; $row->section = JText::_('PLG_SEARCH_GCALENDAR_OUTPUT_CATEGORY'); $row->category = $event->getParam('gcid'); $row->created = $event->getStartDate()->format('U', true); $row->browsernav = ''; $return[] = $row; $row = null; } return $return; }
public static function renderEvents(array $events = null, $output, $params = null, $eventParams = array()) { if ($events === null) { $events = array(); } JFactory::getLanguage()->load('com_gcalendar', JPATH_ADMINISTRATOR . '/components/com_gcalendar'); $lastHeading = ''; $configuration = $eventParams; $configuration['events'] = array(); foreach ($events as $event) { if (!is_object($event)) { continue; } $variables = array(); $itemID = GCalendarUtil::getItemId($event->getParam('gcid', null)); if (!empty($itemID) && JRequest::getVar('tmpl', null) != 'component' && $event != null) { $component = JComponentHelper::getComponent('com_gcalendar'); $menu = JFactory::getApplication()->getMenu(); $item = $menu->getItem($itemID); if ($item != null) { $backLinkView = $item->query['view']; $dateHash = ''; if ($backLinkView == 'gcalendar') { $day = $event->getStartDate()->format('d', true); $month = $event->getStartDate()->format('m', true); $year = $event->getStartDate()->format('Y', true); $dateHash = '#year=' . $year . '&month=' . $month . '&day=' . $day; } } $variables['calendarLink'] = JRoute::_('index.php?option=com_gcalendar&Itemid=' . $itemID . $dateHash); } $itemID = GCalendarUtil::getItemId($event->getParam('gcid')); if (!empty($itemID)) { $itemID = '&Itemid=' . $itemID; } else { $menu = JFactory::getApplication()->getMenu(); $activemenu = $menu->getActive(); if ($activemenu != null) { $itemID = '&Itemid=' . $activemenu->id; } } $variables['backlink'] = JRoute::_('index.php?option=com_gcalendar&view=event&eventID=' . $event->getGCalId() . '&gcid=' . $event->getParam('gcid') . $itemID); $variables['link'] = $event->getLink('alternate')->getHref(); $variables['calendarcolor'] = $event->getParam('gccolor'); // the date formats from http://php.net/date $dateformat = $params->get('event_date_format', 'm.d.Y'); $timeformat = $params->get('event_time_format', 'g:i a'); // These are the dates we'll display $startDate = $event->getStartDate()->format($dateformat, true); $startTime = $event->getStartDate()->format($timeformat, true); $endDate = $event->getEndDate()->format($dateformat, true); $endTime = $event->getEndDate()->format($timeformat, true); $dateSeparator = '-'; $timeString = $startTime . ' ' . $startDate . ' ' . $dateSeparator . ' ' . $endTime . ' ' . $endDate; $copyDateTimeFormat = 'Ymd'; switch ($event->getDayType()) { case GCalendar_Entry::SINGLE_WHOLE_DAY: $timeString = $startDate; $copyDateTimeFormat = 'Ymd'; $startTime = ''; $endTime = ''; $dateSeparator = ''; break; case GCalendar_Entry::SINGLE_PART_DAY: $timeString = $startDate . ' ' . $startTime . ' ' . $dateSeparator . ' ' . $endTime; $copyDateTimeFormat = 'Ymd\\THis'; break; case GCalendar_Entry::MULTIPLE_WHOLE_DAY: $tmp = clone $event->getEndDate(); $tmp->modify('-1 day'); $endDate = $tmp->format($dateformat, true); $timeString = $startDate . ' ' . $dateSeparator . ' ' . $endDate; $copyDateTimeFormat = 'Ymd'; $startTime = ''; $endTime = ''; break; case GCalendar_Entry::MULTIPLE_PART_DAY: $timeString = $startTime . ' ' . $startDate . ' ' . $dateSeparator . ' ' . $endTime . ' ' . $endDate; $copyDateTimeFormat = 'Ymd\\THis'; break; } $variables['calendarName'] = $event->getParam('gcname'); $variables['title'] = (string) $event->getTitle(); if ($params->get('show_event_date', 1) == 1) { $variables['date'] = $timeString; $variables['startDate'] = $startDate; $variables['startTime'] = $startTime; $variables['endDate'] = $endDate; $variables['endTime'] = $endTime; $variables['dateseparator'] = $dateSeparator; $variables['month'] = strtoupper($event->getStartDate()->format('M', true)); $variables['day'] = $event->getStartDate()->format('j', true); } $variables['modifieddate'] = $event->getModifiedDate()->format($timeformat, true) . ' ' . $event->getModifiedDate()->format($dateformat, true); if (count($event->getWho()) > 0) { $variables['hasAttendees'] = true; $variables['attendees'] = array(); foreach ($event->getWho() as $a) { $variables['attendees'][] = array('name' => (string) $a->getValueString(), 'email' => base64_encode(str_replace('@', '#', $a->getEmail()))); } } $location = $event->getLocation(); $variables['location'] = $location; if (!empty($location)) { $variables['maplink'] = (JBrowser::getInstance()->isSSLConnection() ? 'https' : 'http') . "://maps.google.com/?q=" . urlencode($location) . '&hl=' . substr(GCalendarUtil::getFrLanguage(), 0, 2) . '&output=embed'; } $variables['description'] = (string) $event->getContent(); if ($params->get('event_description_format', 1) == 1) { $variables['description'] = preg_replace("@(src|href)=\"https?://@i", '\\1="', $event->getContent()); $variables['description'] = nl2br(preg_replace("@(((f|ht)tp:\\/\\/)[^\"\\'\\>\\s]+)@", '<a href="\\1" target="_blank">\\1</a>', $variables['description'])); } $variables['hasAuthor'] = count($event->getAuthor()) > 0; $variables['author'] = array(); foreach ($event->getAuthor() as $author) { $variables['author'][] = array('name' => (string) $author->getName(), 'email' => base64_encode(str_replace('@', '#', $author->getEmail()))); } $variables['copyGoogleUrl'] = 'http://www.google.com/calendar/render?action=TEMPLATE&text=' . urlencode($event->getTitle()); $variables['copyGoogleUrl'] .= '&dates=' . $event->getStartDate()->format($copyDateTimeFormat) . '%2F' . $event->getEndDate()->format($copyDateTimeFormat); $variables['copyGoogleUrl'] .= '&location=' . urlencode($event->getLocation()); $variables['copyGoogleUrl'] .= '&details=' . urlencode($event->getContent()); $variables['copyGoogleUrl'] .= '&hl=' . GCalendarUtil::getFrLanguage() . '&ctz=Etc/GMT'; $variables['copyGoogleUrl'] .= '&sf=true&output=xml'; $ical_timeString_start = $startTime . ' ' . $startDate; $ical_timeString_start = strtotime($ical_timeString_start); $ical_timeString_end = $endTime . ' ' . $endDate; $ical_timeString_end = strtotime($ical_timeString_end); $loc = $event->getLocation(); $variables['copyOutlookUrl'] = JRoute::_("index.php?option=com_gcalendar&view=ical&format=raw&eventID=" . $event->getGCalId() . '&gcid=' . $event->getParam('gcid')); $groupHeading = $event->getStartDate()->format($params->get('grouping', ''), true); if ($groupHeading != $lastHeading) { $lastHeading = $groupHeading; $variables['header'] = $groupHeading; } $configuration['events'][] = $variables; } $configuration['eventLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL'); $configuration['calendarLinkLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_CALENDAR_BACK_LINK'); $configuration['calendarNameLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_CALENDAR_NAME'); $configuration['titleLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_EVENT_TITLE'); $configuration['dateLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_WHEN'); $configuration['attendeesLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_ATTENDEES'); $configuration['locationLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_LOCATION'); $configuration['descriptionLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_DESCRIPTION'); $configuration['authorLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_AUTHOR'); $configuration['copyLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_COPY'); $configuration['copyGoogleLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_COPY_TO_MY_CALENDAR'); $configuration['copyOutlookLabel'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_COPY_TO_MY_CALENDAR_ICS'); $configuration['language'] = substr(GCalendarUtil::getFrLanguage(), 0, 2); $configuration['emptyText'] = JText::_('COM_GCALENDAR_FIELD_CONFIG_EVENT_LABEL_NO_EVENT_TEXT'); try { $m = new Mustache(); return $m->render($output, $configuration); } catch (Exception $e) { echo $e->getMessage(); } }
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GCalendar. If not, see <http://www.gnu.org/licenses/>. * * @author Allon Moritz * @copyright 2007-2010 Allon Moritz * @since 2.2.0 */ defined('_JEXEC') or die('Restricted access'); $data = array(); $SECSINDAY = 86400; if (!empty($this->calendars)) { foreach ($this->calendars as $calendar) { $itemID = GCalendarUtil::getItemId($calendar->get('gcid')); $menus =& JSite::getMenu(); $params = $menus->getParams($itemID); if (empty($params)) { $params = new JParameter(''); } $dateformat = $params->get('description_date_format', '%d.%m.%Y'); $timeformat = $params->get('description_time_format', '%H:%M'); $event_display = $params->get('description_format', '<p>{startdate} {starttime} {dateseparator} {enddate} {endtime}<br/>{description}</p>'); if (!empty($itemID)) { $itemID = '&Itemid=' . $itemID; } else { $menu = JSite::getMenu(); $activemenu = $menu->getActive(); if ($activemenu != null) { $itemID = '&Itemid=' . $activemenu->id;
* @copyright 2007-2009 Allon Moritz * @version $Revision: 2.1.2 $ */ defined('_JEXEC') or die('Restricted access'); require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_gcalendar' . DS . 'util.php'; $tz = GCalendarUtil::getComponentParameter('timezone'); if (!empty($tz)) { $tz = '&ctz=' . $tz; } $lg = '&hl=' . GCalendarUtil::getFrLanguage(); $url = 'http://www.google.com/calendar/event?eid=' . $this->eventID . $tz . $lg; $domain = GCalendarUtil::getComponentParameter('google_apps_domain'); if (!empty($domain)) { $url = 'http://www.google.com/calendar/hosted/' . $domain . '/event?eid=' . $this->eventID . $tz . $lg; } $itemID = GCalendarUtil::getItemId(JRequest::getVar('gcid', null)); if (!empty($itemID) && JRequest::getVar('tmpl', null) != 'component') { $component =& JComponentHelper::getComponent('com_gcalendar'); $menu =& JSite::getMenu(); $item = $menu->getItem($itemID); if ($item != null) { $backLinkView = $item->query['view']; echo "<table><tr><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&view=' . $backLinkView . '&Itemid=' . $itemID) . "\">\n"; echo "<img id=\"prevBtn_img\" height=\"16\" border=\"0\" width=\"16\" alt=\"backlink\" src=\"components/com_gcalendar/hiddenviews/event/tmpl/back.png\"/>\n"; echo "</a></td><td valign=\"middle\">\n"; echo '<a href="' . JRoute::_('index.php?option=com_gcalendar&view=' . $backLinkView . '&Itemid=' . $itemID) . '">' . JText::_('CALENDAR_BACK_LINK') . "</a>\n"; echo "</td></tr></table>\n"; } } echo "<iframe id=\"gcalendarEvent\" name=\"iframe\" src=\"" . $url . "\" ";
$date = $start->format('Y-m-d', true); if (!key_exists($date, $tmp)) { $tmp[$date] = array(); } $tmp[$date][] = $item; $start->modify("+1 day"); } while ($start < $end); } } } $params = clone JComponentHelper::getParams('com_gcalendar'); $params->set('show_event_title', 1); $data = array(); foreach ($tmp as $date => $events) { $linkIDs = array(); $itemId = ''; foreach ($events as $event) { $linkIDs[$event->getParam('gcid')] = $event->getParam('gcid'); $id = GCalendarUtil::getItemId($event->getParam('gcid'), true); if (!empty($id)) { $itemId = '&Itemid=' . $id; } } $parts = explode('-', $date); $day = $parts[2]; $month = $parts[1]; $year = $parts[0]; $url = JRoute::_('index.php?option=com_gcalendar&view=gcalendar&gcids=' . implode(',', $linkIDs) . $itemId . '#year=' . $year . '&month=' . $month . '&day=' . $day . '&view=agendaDay'); $data[] = array('id' => $date, 'title' => utf8_encode(chr(160)), 'start' => $date, 'url' => $url, 'allDay' => true, 'description' => GCalendarUtil::renderEvents($events, sprintf(JText::_('COM_GCALENDAR_JSON_VIEW_EVENT_TITLE'), count($events)) . '<ul>{{#events}}<li>{{title}}</li>{{/events}}</ul>', $params)); } echo json_encode($data);
/** * This is an internal helper method and should not be called from outside of the class * otherwise you know what you do. * */ function getIdString($calids) { $calendars = ''; $itemid = null; if (!empty($calids)) { $calendars = '&gcids=' . implode(',', $calids); $itemid = GCalendarUtil::getItemId($calids[0]); foreach ($calids as $cal) { $id = GCalendarUtil::getItemId($cal); if ($id != $itemid) { $itemid = null; break; } } } if ($itemid != null) { return $calendars . '&Itemid=' . $itemid; } return $calendars; }