/** * Method to format date and time information * * @access protected * @return array(string, string) returns date and time strings as array */ protected static function _format_date_time($row, $method, $dateFormat = '', $timeFormat = '', $addSuffix = false) { if (empty($row->dates)) { // open date $date = JEMOutput::formatDateTime('', ''); // "Open date" $times = $row->times; $endtimes = $row->endtimes; } else { //Get needed timestamps and format $yesterday_stamp = mktime(0, 0, 0, date("m"), date("d")-1, date("Y")); $yesterday = strftime("%Y-%m-%d", $yesterday_stamp); $today_stamp = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $today = date('Y-m-d'); $tomorrow_stamp = mktime(0, 0, 0, date("m"), date("d")+1, date("Y")); $tomorrow = strftime("%Y-%m-%d", $tomorrow_stamp); $dates_stamp = $row->dates ? strtotime($row->dates) : null; $enddates_stamp = $row->enddates ? strtotime($row->enddates) : null; $times = $row->times; // show starttime by default //if datemethod show day difference if ($method == 2) { //check if today or tomorrow if ($row->dates == $today) { $date = JText::_('MOD_JEM_TEASER_TODAY'); } elseif ($row->dates == $tomorrow) { $date = JText::_('MOD_JEM_TEASER_TOMORROW'); } elseif ($row->dates == $yesterday) { $date = JText::_('MOD_JEM_TEASER_YESTERDAY'); } //This one isn't very different from the DAYS AGO output but it seems //adequate to use a different language string here. // //the event has an enddate and it's earlier than yesterday elseif ($row->enddates && ($enddates_stamp < $yesterday_stamp)) { $days = round(($today_stamp - $enddates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_TEASER_ENDED_DAYS_AGO', $days); // show endtime instead of starttime $times = false; $endtimes = $row->endtimes; } //the event has an enddate and it's later than today but the startdate is earlier than today //means a currently running event elseif ($row->dates && $row->enddates && ($enddates_stamp > $today_stamp) && ($dates_stamp < $today_stamp)) { $days = round(($today_stamp - $dates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_TEASER_STARTED_DAYS_AGO', $days); } //the events date is earlier than yesterday elseif ($row->dates && ($dates_stamp < $yesterday_stamp)) { $days = round(($today_stamp - $dates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_TEASER_DAYS_AGO', $days); } //the events date is later than tomorrow elseif ($row->dates && ($dates_stamp > $tomorrow_stamp)) { $days = round(($dates_stamp - $today_stamp) / 86400); $date = JText::sprintf('MOD_JEM_TEASER_DAYS_AHEAD', $days); } else { $date = JEMOutput::formatDateTime('', ''); // Oops - say "Open date" } } else { // datemethod show date - not shown beause there is a calendar image // TODO: check date+time to be more acurate //Upcoming multidayevent (From 16.10.2008 Until 18.08.2008) if (($dates_stamp >= $today_stamp) && ($enddates_stamp > $dates_stamp)) { $startdate = JEMOutput::formatdate($row->dates, $dateFormat); $enddate = JEMOutput::formatdate($row->enddates, $dateFormat); $date = JText::sprintf('MOD_JEM_TEASER_FROM_UNTIL', $startdate, $enddate); // don't show endtime because calendar is shown } //current multidayevent (Until 18.08.2008) elseif ($row->enddates && ($enddates_stamp >= $today_stamp) && ($dates_stamp < $today_stamp)) { $enddate = JEMOutput::formatdate($row->enddates, $dateFormat); $date = JText::sprintf('MOD_JEM_TEASER_UNTIL', $enddate); // don't show endtime because calendar is shown } //single day event else { $startdate = JEMOutput::formatdate($row->dates, $dateFormat); $date = JText::sprintf('MOD_JEM_TEASER_ON_DATE', $startdate); // additionally show endtime, but on single day events only to prevent user confusion if (empty($row->enddates)) { $endtimes = $row->endtimes; } } } } $time = empty($times) ? '' : JEMOutput::formattime($times, $timeFormat, $addSuffix); $time .= empty($endtimes) ? '' : (' - ' . JEMOutput::formattime($row->endtimes, $timeFormat, $addSuffix)); return array($date, $time); }
/** * Method to get the events * * @access public * @return array */ public static function getList(&$params) { mb_internal_encoding('UTF-8'); // Retrieve Eventslist model for the data $model = JModelLegacy::getInstance('Eventslist', 'JemModel', array('ignore_request' => true)); // Set params for the model // has to go before the getItems function $model->setState('params', $params); $model->setState('filter.access', true); # filter published # 0: unpublished # 1: published # 2: archived # -2: trashed $type = $params->get('type'); # archived events if ($type == 2) { $model->setState('filter.published', 2); $model->setState('filter.orderby', array('a.dates DESC', 'a.times DESC')); $cal_from = ""; } else { $model->setState('filter.published', 1); $model->setState('filter.orderby', array('a.dates ASC', 'a.times ASC')); $offset_minutes = 60 * $params->get('offset_hours', 0); $cal_from = "((TIMESTAMPDIFF(MINUTE, NOW(), CONCAT(a.dates,' ',IFNULL(a.times,'00:00:00'))) > {$offset_minutes}) "; $cal_from .= $type == 1 ? " OR (TIMESTAMPDIFF(MINUTE, NOW(), CONCAT(IFNULL(a.enddates,a.dates),' ',IFNULL(a.endtimes,'23:59:59'))) > {$offset_minutes})) " : ") "; } $model->setState('filter.calendar_from', $cal_from); $model->setState('filter.groupby', 'a.id'); # clean parameter data $catids = $params->get('catid'); $venids = $params->get('venid'); $eventids = $params->get('eventid'); # filter category's if ($catids) { $model->setState('filter.category_id', $catids); $model->setState('filter.category_id.include', true); } # filter venue's if ($venids) { $model->setState('filter.venue_id', $venids); $model->setState('filter.venue_id.include', true); } # filter event id's if ($eventids) { $model->setState('filter.event_id', $eventids); $model->setState('filter.event_id.include', true); } # count $count = $params->get('count', '2'); $model->setState('list.limit', $count); # Retrieve the available Events $events = $model->getItems(); # do we have $events? if (!$events) { return array(); } # Loop through the result rows and prepare data $i = 0; $lists = array(); $maxlength = $params->get('cuttitle', '18'); $settings = JemHelper::config(); $dateformat = $params->get('formatdate', $settings->formatShortDate); foreach ($events as $row) { //cut titel $length = mb_strlen($row->title); if ($length > $maxlength && $maxlength > 0) { $row->title = mb_substr($row->title, 0, $maxlength); $row->title = $row->title . '...'; } $lists[$i] = new stdClass(); $lists[$i]->link = JRoute::_(JEMHelperRoute::getEventRoute($row->slug)); $lists[$i]->dateinfo = JEMOutput::formatDateTime($row->dates, $row->times, $row->enddates, $row->endtimes, $dateformat); $lists[$i]->text = $params->get('showtitloc', 0) ? $row->title : htmlspecialchars($row->venue, ENT_COMPAT, 'UTF-8'); $lists[$i]->venue = htmlspecialchars($row->venue, ENT_COMPAT, 'UTF-8'); $lists[$i]->city = htmlspecialchars($row->city, ENT_COMPAT, 'UTF-8'); $lists[$i]->venueurl = !empty($row->venueslug) ? JRoute::_(JEMHelperRoute::getVenueRoute($row->venueslug)) : null; $i++; } return $lists; }
/** * Method to format date and time information * * @access protected * @return array(string, string) returns date and time strings as array */ protected static function _format_date_time($row, $method, $dateFormat = '', $timeFormat = '', $addSuffix = false) { if (empty($row->dates)) { // open date $date = JEMOutput::formatDateTime('', ''); // "Open date" $times = $row->times; $endtimes = $row->endtimes; } else { //Get needed timestamps and format $yesterday_stamp = mktime(0, 0, 0, date("m"), date("d") - 1, date("Y")); $yesterday = strftime("%Y-%m-%d", $yesterday_stamp); $today_stamp = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $today = date('Y-m-d'); $tomorrow_stamp = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); $tomorrow = strftime("%Y-%m-%d", $tomorrow_stamp); $dates_stamp = $row->dates ? strtotime($row->dates) : null; $enddates_stamp = $row->enddates ? strtotime($row->enddates) : null; $times = $row->times; // show starttime by default //if datemethod show day difference if ($method == 2) { //check if today or tomorrow if ($row->dates == $today) { $date = JText::_('MOD_JEM_WIDE_TODAY'); } elseif ($row->dates == $tomorrow) { $date = JText::_('MOD_JEM_WIDE_TOMORROW'); } elseif ($row->dates == $yesterday) { $date = JText::_('MOD_JEM_WIDE_YESTERDAY'); } elseif ($row->enddates && $enddates_stamp < $yesterday_stamp) { $days = round(($today_stamp - $enddates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_WIDE_ENDED_DAYS_AGO', $days); // show endtime instead of starttime $times = false; $endtimes = $row->endtimes; } elseif ($row->dates && $row->enddates && $enddates_stamp > $today_stamp && $dates_stamp < $today_stamp) { $days = round(($today_stamp - $dates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_WIDE_STARTED_DAYS_AGO', $days); } elseif ($row->dates && $dates_stamp < $yesterday_stamp) { $days = round(($today_stamp - $dates_stamp) / 86400); $date = JText::sprintf('MOD_JEM_WIDE_DAYS_AGO', $days); } elseif ($row->dates && $dates_stamp > $tomorrow_stamp) { $days = round(($dates_stamp - $today_stamp) / 86400); $date = JText::sprintf('MOD_JEM_WIDE_DAYS_AHEAD', $days); } else { $date = JEMOutput::formatDateTime('', ''); // Oops - say "Open date" } } else { // datemethod show date // TODO: check date+time to be more acurate //Upcoming multidayevent (From 16.10.2008 Until 18.08.2008) if ($dates_stamp >= $today_stamp && $enddates_stamp > $dates_stamp) { $startdate = JEMOutput::formatdate($row->dates, $dateFormat); $enddate = JEMOutput::formatdate($row->enddates, $dateFormat); $date = JText::sprintf('MOD_JEM_WIDE_FROM_UNTIL', $startdate, $enddate); // additionally show endtime $endtimes = $row->endtimes; } elseif ($row->enddates && $enddates_stamp >= $today_stamp && $dates_stamp < $today_stamp) { $enddate = JEMOutput::formatdate($row->enddates, $dateFormat); $date = JText::sprintf('MOD_JEM_WIDE_UNTIL', $enddate); // show endtime instead of starttime $times = false; $endtimes = $row->endtimes; } else { $startdate = JEMOutput::formatdate($row->dates, $dateFormat); $date = JText::sprintf('MOD_JEM_WIDE_ON_DATE', $startdate); // additionally show endtime, but on single day events only to prevent user confusion if (empty($row->enddates)) { $endtimes = $row->endtimes; } } } } $time = empty($times) ? '' : JEMOutput::formattime($times, $timeFormat, $addSuffix); $time .= empty($endtimes) ? '' : ' - ' . JEMOutput::formattime($row->endtimes, $timeFormat, $addSuffix); return array($date, $time); }