Exemple #1
0
	/**
	 * Method to get the events
	 *
	 * @access public
	 * @return array
	 */
	public static function getList(&$params)
	{
		mb_internal_encoding('UTF-8');

		$db     = JFactory::getDBO();
		$user   = JemFactory::getUser();
		$levels = $user->getAuthorisedViewLevels();

		# 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);

		# filter published
		#  0: unpublished
		#  1: published
		#  2: archived
		# -2: trashed

		# type:
		#  0: upcoming (not started) - dates,times > now+offset
		#  1: unfinished (not ended) - enddates,endtimes > now+offset
		#  2: archived               - no limit, but from now back to the past
		#  3: running (today)        - enddates,endtimes > today+offset AND dates,times < tomorrow+offset
		#  4: featured               - ? (same as upcoming yet)
		$type = (int)$params->get('type');
		$offset_hours = (int)$params->get('offset_hours', 0);
		$max_title_length = (int)$params->get('cuttitle', '25');

		# clean parameter data
		$catids = JemHelper::getValidIds($params->get('catid'));
		$venids = JemHelper::getValidIds($params->get('venid'));
		$eventids = JemHelper::getValidIds($params->get('eventid'));
		$stateloc      = $params->get('stateloc');
		$stateloc_mode = $params->get('stateloc_mode', 0);

		# Open date support
		$opendates = empty($eventids) ? 0 : 1; // allow open dates if limited to specific events
		$model->setState('filter.opendates', $opendates);

		# all upcoming or unfinished events
		if (($type == 0) || ($type == 1)) {
			$offset_minutes = $offset_hours * 60;

			$model->setState('filter.published',1);
			$model->setState('filter.orderby',array('a.dates ASC','a.times ASC'));

			$cal_from = "(a.dates IS NULL OR (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)) " : ") ";
		}

		# archived events only
		elseif ($type == 2) {
			$model->setState('filter.published',2);
			$model->setState('filter.orderby',array('a.dates DESC','a.times DESC'));
			$cal_from = "";
		}

		# currently running events only (today + offset is inbetween start and end date of event)
		elseif ($type == 3) {
			$offset_days = (int)round($offset_hours / 24);

			$model->setState('filter.published',1);
			$model->setState('filter.orderby',array('a.dates ASC','a.times ASC'));

			$cal_from = " ((DATEDIFF(a.dates, CURDATE()) <= $offset_days) AND (DATEDIFF(IFNULL(a.enddates,a.dates), CURDATE()) >= $offset_days))";
		}

		# featured
		elseif ($type == 4) {
			$offset_minutes = $offset_hours * 60;

			$model->setState('filter.featured',1);
			$model->setState('filter.orderby',array('a.dates ASC','a.times ASC'));

			$cal_from  = "((TIMESTAMPDIFF(MINUTE, NOW(), CONCAT(a.dates,' ',IFNULL(a.times,'00:00:00'))) > $offset_minutes) ";
			$cal_from .= " 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');

		# 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);
		}

		# filter venue's state/province
		if ($stateloc) {
			$model->setState('filter.venue_state', $stateloc);
			$model->setState('filter.venue_state.mode', $stateloc_mode); // 0: exact, 1: partial
		}

		# count
		$count = $params->get('count', '2');
		$model->setState('list.limit', $count);

		if ($params->get('use_modal', 0)) {
			JHtml::_('behavior.modal', 'a.flyermodal');
		}

		# date/time
		$dateFormat = $params->get('formatdate', '');
		$timeFormat = $params->get('formattime', '');
		$addSuffix  = empty($timeFormat); // if we use component's default time format we can also add corresponding suffix

		# Retrieve the available Events
		$events = $model->getItems();

		$color = $params->get('color');
		$fallback_color = $params->get('fallbackcolor', '#EEEEEE');

		# Loop through the result rows and prepare data
		$lists = array();
		$i     = 0;

		foreach ($events as $row)
		{
			# create thumbnails if needed and receive imagedata
			$dimage = $row->datimage ? JEMImage::flyercreator($row->datimage, 'event') : null;
			$limage = $row->locimage ? JEMImage::flyercreator($row->locimage, 'venue') : null;

			#################
			## DEFINE LIST ##
			#################

			$lists[$i] = new stdClass();

			# check view access
			if (in_array($row->access, $levels)) {
				# We know that user has the privilege to view the event
				$lists[$i]->link = JRoute::_(JEMHelperRoute::getEventRoute($row->slug));
				$lists[$i]->linkText = JText::_('MOD_JEM_TEASER_READMORE');
			} else {
				$lists[$i]->link = JRoute::_('index.php?option=com_users&view=login');
				$lists[$i]->linkText = JText::_('MOD_JEM_TEASER_READMORE_REGISTER');
			}

			# cut titel
			$fulltitle = htmlspecialchars($row->title, ENT_COMPAT, 'UTF-8');
			if (mb_strlen($fulltitle) > $max_title_length) {
				$title = mb_substr($fulltitle, 0, $max_title_length) . '...';
			} else {
				$title = $fulltitle;
			}

			$lists[$i]->title       = $title;
			$lists[$i]->fulltitle   = $fulltitle;
			$lists[$i]->venue       = htmlspecialchars($row->venue, ENT_COMPAT, 'UTF-8');
			$lists[$i]->catname     = implode(", ", JemOutput::getCategoryList($row->categories, $params->get('linkcategory', 1)));
			$lists[$i]->state       = htmlspecialchars($row->state, ENT_COMPAT, 'UTF-8');
			$lists[$i]->city        = htmlspecialchars($row->city, ENT_COMPAT, 'UTF-8');
			$lists[$i]->eventlink   = $params->get('linkevent', 1) ? JRoute::_(JEMHelperRoute::getEventRoute($row->slug)) : '';
			$lists[$i]->venuelink   = $params->get('linkvenue', 1) ? JRoute::_(JEMHelperRoute::getVenueRoute($row->venueslug)) : '';

			# time/date
			static $formats  = array('year' => 'Y', 'month' => 'F', 'day' => 'j', 'weekday' => 'l');
			static $defaults = array('year' => '&nbsp;', 'month' => '', 'day' => '?', 'weekday' => '');

			$lists[$i]->day         = modJEMteaserHelper::_format_day($row, $params);
			$tmpdate                = empty($row->dates) ? $defaults : self::_format_date_fields($row->dates, $formats);
			$lists[$i]->dayname     = $tmpdate['weekday']; // keep them for backward compatibility
			$lists[$i]->daynum      = $tmpdate['day'];
			$lists[$i]->month       = $tmpdate['month'];
			$lists[$i]->year        = $tmpdate['year'];
			$lists[$i]->startdate   = $tmpdate;
			$lists[$i]->enddate     = empty($row->enddates) ? $defaults : self::_format_date_fields($row->enddates, $formats);
			list($lists[$i]->date,
			     $lists[$i]->time)  = self::_format_date_time($row, $params->get('datemethod', 1), $dateFormat, $timeFormat, $addSuffix);
			$lists[$i]->dateinfo    = JEMOutput::formatDateTime($row->dates, $row->times, $row->enddates, $row->endtimes, $dateFormat, $timeFormat, $addSuffix);

			if ($dimage == null) {
				$lists[$i]->eventimage     = JUri::base(true).'/media/system/images/blank.png';
				$lists[$i]->eventimageorig = JUri::base(true).'/media/system/images/blank.png';
			} else {
				$lists[$i]->eventimage     = JUri::base(true).'/'.$dimage['thumb'];
				$lists[$i]->eventimageorig = JUri::base(true).'/'.$dimage['original'];
			}

			if ($limage == null) {
				$lists[$i]->venueimage     = JUri::base(true).'/media/system/images/blank.png';
				$lists[$i]->venueimageorig = JUri::base(true).'/media/system/images/blank.png';
			} else {
				$lists[$i]->venueimage     = JUri::base(true).'/'.$limage['thumb'];
				$lists[$i]->venueimageorig = JUri::base(true).'/'.$limage['original'];
			}

			$length = $params->get('descriptionlength');
			$length2 = 1;
			$etc = '...';
			$etc2 = JText::_('MOD_JEM_TEASER_NO_DESCRIPTION');

			//append <br /> tags on line breaking tags so they can be stripped below
			$description = preg_replace("'<(hr[^/>]*?/|/(div|h[1-6]|li|p|tr))>'si", "$0<br />", $row->introtext);

			//strip html tags but leave <br /> tags
			$description = strip_tags($description, "<br>");

			//switch <br /> tags to space character
			if ($params->get('br') == 0) {
				$description = str_replace('<br />',' ', $description);
			}
			//
			if (strlen($description) > $length) {
				$length -= strlen($etc);
				$description = preg_replace('/\s+?(\S+)?$/', '', substr($description, 0, $length+1));
				$lists[$i]->eventdescription = substr($description, 0, $length).$etc;
			} elseif (strlen($description) < $length2) {
				$length -= strlen($etc2);
				$description = preg_replace('/\s+?(\S+)?$/', '', substr($description, 0, $length+1));
				$lists[$i]->eventdescription = substr($description, 0, $length).$etc2;
			} else {
				$lists[$i]->eventdescription = $description;
			}

			$lists[$i]->readmore = strlen(trim($row->fulltext));

			$lists[$i]->colorclass = $color;
			if (($color == 'category') && !empty($row->categories)) {
				$colors = array();
				foreach ($row->categories as $category) {
					if (!empty($category->color)) {
						$colors[$category->color] = $category->color;
					}
				}
				$lists[$i]->color = (count($colors) == 1) ? array_pop($colors) : $fallback_color;
			}

			$i++;
		} // foreach ($events as $row)

		return $lists;
	}
Exemple #2
0
	public static function getdays ($greq_year, $greq_month, &$params)
	{
		$db			= JFactory::getDBO();

		# Retrieve Eventslist model for the data
		$model = JModelLegacy::getInstance('Eventslist', 'JemModel', array('ignore_request' => true));

		# Set params for the model
		//$app = JFactory::getApplication();
		//$appParams = $app->getParams('com_jem');
		$model->setState('params', $params);

		$user		= JemFactory::getUser();
		$levels		= $user->getAuthorisedViewLevels();
		$settings 	= JemHelper::globalattribs();

		$catids 			= JemHelper::getValidIds($params->get('catid'));
		$venids 			= JemHelper::getValidIds($params->get('venid'));
		$StraightToDetails	= $params->get('StraightToDetails', '1');
		$DisplayCat			= $params->get('DisplayCat', '0');
		$DisplayVenue		= $params->get('DisplayVenue', '0');
		$ArchivedEvents		= $params->get('ArchivedEvents', '0');
		$CurrentEvents		= $params->get('CurrentEvents', '1');
		$FixItemID			= $params->get('FixItemID', '0');
		$defaultItemid	 	= $settings->get('default_Itemid','');
		$daylinkparams		= ''; // collects additional params for link to day view

		# filter category's
		if ($catids) {
			$model->setState('filter.category_id',$catids);
			$model->setState('filter.category_id.include',true);
			$daylinkparams .= '&catids=' . implode(',', $catids);
		}

		# filter venue's
		if ($venids) {
			$model->setState('filter.venue_id',$venids);
			$model->setState('filter.venue_id.include',true);
			$daylinkparams .= '&locids=' . implode(',', $venids);
		}

		# filter published
		#  0: unpublished
		#  1: published
		#  2: archived
		# -2: trashed

		if ($CurrentEvents && $ArchivedEvents) {
			$model->setState('filter.published',array(1,2));
			$daylinkparams .= '&pub=1,2';
		} else {
			if ($CurrentEvents == 1) {
				$model->setState('filter.published',1);
				$daylinkparams .= '&pub=1';
			}

			# filter archived
			if ($ArchivedEvents == 1) {
				$model->setState('filter.published',2);
				$daylinkparams .= '&pub=2';
			}
		}

		$model->setState('filter.groupby','a.id');

		# Retrieve the available Items
		$events = $model->getItems();

		# create an array to catch days
		$days = array();

		foreach ($events as $index => $event) {
			# adding categories
			$nr 		= count($event->categories);
			$catname 	= '';
			$ix 		= 0;

			# walk through categories assigned to an event
			foreach($event->categories AS $category) {
				$catname .= htmlspecialchars($category->catname);

				$ix++;
				if ($ix != $nr) {
					$catname .= ', ';
				}
			}

			// Cope with no end date set i.e. set it to same as start date
			if (is_null($event->enddates)) {
				$eyear = $event->created_year;
				$emonth = $event->created_month;
				$eday = $event->created_day;
			} else {
				list($eyear, $emonth, $eday) = explode('-', $event->enddates);
			}
			// The two cases for roll over the year end with an event that goes across the year boundary.
			if ($greq_year < $eyear) {
				$emonth = $emonth + 12;
			}

			if ($event->created_year < $greq_year) {
				$event->created_month = $event->created_month - 12;
			}

			if (($greq_year >= $event->created_year) && ($greq_year <= $eyear)
					&& ($greq_month >= $event->created_month) && ($greq_month <= $emonth)) {
				// Set end day for current month

				if ($emonth > $greq_month) {
					$emonth = $greq_month;

					// $eday = cal_days_in_month(CAL_GREGORIAN, $greq_month,$greq_year);
					$eday = date('t', mktime(0, 0, 0, $greq_month, 1, $greq_year));
				}

				// Set start day for current month
				if ($event->created_month < $greq_month) {
					$event->created_month = $greq_month;
					$event->created_day = 1;
				}
				$stod = 1;

				for ($count = $event->created_day; $count <= $eday; $count++) {

					$uxdate = mktime(0, 0, 0, $greq_month, $count, $greq_year);
					$tdate = strftime('%Y%m%d',$uxdate);// Toni change Joomla 1.5
// 					$created_day = $count;
// 					$tt = $days[$count][1];
// 					if (strlen($tt) == 0)

					if (empty($days[$count][1])) {
						$title = htmlspecialchars($event->title);
						if ($DisplayCat == 1) {
							$title = $title . '&nbsp;(' . $catname . ')';
						}
						if ($DisplayVenue == 1) {
							if (isset($event->venue)) {
								$title = $title . '&nbsp;@' . htmlspecialchars($event->venue);
							}
						}
						$stod = 1;
					} else {
						$tt = $days[$count][1];
						$title = $tt . '+%+%+' . htmlspecialchars($event->title);
						if ($DisplayCat == 1) {
							$title = $title . '&nbsp;(' . $catname . ')';
						}
						if ($DisplayVenue == 1) {
							if (isset($event->venue)) {
								$title = $title . '&nbsp;@' . htmlspecialchars($event->venue);
							}
						}
						$stod = 0;
					}
					if (($StraightToDetails == 1) and ($stod == 1)) {
						if ($FixItemID == 0) {
							$link = JRoute::_(JEMHelperRoute::getEventRoute($event->slug));
						} else {
							//Create the link - copied from Jroute
							$evlink = JEMHelperRoute::getEventRoute($event->slug).'&Itemid='.$FixItemID;
							$link = JRoute::_($evlink);
						}
					} else {
						// @todo fix the getroute link
						if ($FixItemID == 0) {
							if ($defaultItemid)
							{
								$evlink = 'index.php?option=com_jem&view=day&id='. $tdate . $daylinkparams . '&Itemid='.$defaultItemid;
							} else {
								$evlink = 'index.php?option=com_jem&view=day&id='. $tdate . $daylinkparams;
							}
							$link = JRoute::_($evlink);
							//$link = JEMHelperRoute::getRoute($tdate, 'day');
						} else {
							//Create the link - copied from Jroute
							$evlink = 'index.php?option=com_jem&view=day&id='. $tdate . $daylinkparams .'&Itemid='.$FixItemID;
							$link = JRoute::_($evlink);
						}
					}
				$days[$count] = array($link,$title);
				}
			}
		// End of Toni modification


			# check if the item-categories is empty, if so the user has no access to that event at all.
			if (empty($event->categories)) {
				unset ($events[$index]);
			}
		} // end foreach
		return $days;
	}
 /**
  * Method to get the events
  *
  * @access public
  * @return array
  */
 public static function getList(&$params)
 {
     mb_internal_encoding('UTF-8');
     $db = JFactory::getDBO();
     $user = JFactory::getUser();
     $levels = $user->getAuthorisedViewLevels();
     # 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);
     # filter published
     #  0: unpublished
     #  1: published
     #  2: archived
     # -2: trashed
     $type = (int) $params->get('type');
     $offset_hours = (int) $params->get('offset_hours', 0);
     $max_title_length = (int) $params->get('cuttitle', '25');
     # clean parameter data
     $catids = JemHelper::getValidIds($params->get('catid'));
     $venids = JemHelper::getValidIds($params->get('venid'));
     # all upcoming or unfinished events
     if ($type == 0 || $type == 1) {
         $offset_minutes = $offset_hours * 60;
         $model->setState('filter.published', 1);
         $model->setState('filter.orderby', array('a.dates ASC', 'a.times ASC'));
         $cal_from = "((TIMESTAMPDIFF(MINUTE, NOW(), CONCAT(a.dates,' ',IFNULL(a.times,'23:59:59'))) > {$offset_minutes}) ";
         $cal_from .= $type == 1 ? " OR (TIMESTAMPDIFF(MINUTE, NOW(), CONCAT(IFNULL(a.enddates,a.dates),' ',IFNULL(a.endtimes,'23:59:59'))) > {$offset_minutes})) " : ") ";
     } elseif ($type == 2) {
         $model->setState('filter.published', 2);
         $model->setState('filter.orderby', array('a.dates DESC', 'a.times DESC'));
         $cal_from = "";
     } elseif ($type == 3) {
         $offset_days = (int) round($offset_hours / 24);
         $model->setState('filter.published', 1);
         $model->setState('filter.orderby', array('a.dates ASC', 'a.times ASC'));
         $cal_from = " ((DATEDIFF(a.dates, CURDATE()) <= {$offset_days}) AND (DATEDIFF(IFNULL(a.enddates,a.dates), CURDATE()) >= {$offset_days}))";
     }
     $model->setState('filter.calendar_from', $cal_from);
     $model->setState('filter.groupby', 'a.id');
     # 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);
     }
     # count
     $count = $params->get('count', '2');
     $model->setState('list.limit', $count);
     if ($params->get('use_modal', 0)) {
         JHtml::_('behavior.modal', 'a.flyermodal');
     }
     # date/time
     $dateFormat = $params->get('formatdate', '');
     $timeFormat = $params->get('formattime', '');
     $addSuffix = empty($timeFormat);
     // if we use component's default time format we can also add corresponding suffix
     # Retrieve the available Events
     $events = $model->getItems();
     # Loop through the result rows and prepare data
     $lists = array();
     $i = 0;
     foreach ($events as $row) {
         # create thumbnails if needed and receive imagedata
         $dimage = $row->datimage ? JEMImage::flyercreator($row->datimage, 'event') : null;
         $limage = $row->locimage ? JEMImage::flyercreator($row->locimage, 'venue') : null;
         #################
         ## DEFINE LIST ##
         #################
         $lists[$i] = new stdClass();
         # cut titel
         $fulltitle = htmlspecialchars($row->title, ENT_COMPAT, 'UTF-8');
         if (mb_strlen($fulltitle) > $max_title_length) {
             $title = mb_substr($fulltitle, 0, $max_title_length) . '...';
         } else {
             $title = $fulltitle;
         }
         ## Also trim venue name to same as title
         $fullvenuename = htmlspecialchars($row->venue, ENT_COMPAT, 'UTF-8');
         if (mb_strlen($fullvenuename) > $max_title_length) {
             $venue = mb_substr($fullvenuename, 0, $max_title_length) . '...';
         } else {
             $venue = $fullvenuename;
         }
         $lists[$i]->title = $title;
         $lists[$i]->fulltitle = $fulltitle;
         $lists[$i]->venue = $venue;
         $lists[$i]->fullvenue = $fullvenuename;
         $lists[$i]->catname = implode(", ", JemOutput::getCategoryList($row->categories, $params->get('linkcategory', 1)));
         $lists[$i]->state = htmlspecialchars($row->state, ENT_COMPAT, 'UTF-8');
         $lists[$i]->city = htmlspecialchars($row->city, ENT_COMPAT, 'UTF-8');
         $lists[$i]->eventlink = $params->get('linkevent', 1) ? JRoute::_(JEMHelperRoute::getEventRoute($row->slug)) : '';
         $lists[$i]->venuelink = $params->get('linkvenue', 1) ? JRoute::_(JEMHelperRoute::getVenueRoute($row->venueslug)) : '';
         # time/date
         list($lists[$i]->date, $lists[$i]->time) = self::_format_date_time($row, $params->get('datemethod', 1), $dateFormat, $timeFormat, $addSuffix);
         $lists[$i]->dateinfo = JEMOutput::formatDateTime($row->dates, $row->times, $row->enddates, $row->endtimes, $dateFormat, $timeFormat, $addSuffix);
         if ($dimage == null) {
             $lists[$i]->eventimage = JUri::base(true) . '/media/system/images/blank.png';
             $lists[$i]->eventimageorig = JUri::base(true) . '/media/system/images/blank.png';
         } else {
             $lists[$i]->eventimage = JUri::base(true) . '/' . $dimage['thumb'];
             $lists[$i]->eventimageorig = JUri::base(true) . '/' . $dimage['original'];
         }
         if ($limage == null) {
             $lists[$i]->venueimage = JUri::base(true) . '/media/system/images/blank.png';
             $lists[$i]->venueimageorig = JUri::base(true) . '/media/system/images/blank.png';
         } else {
             $lists[$i]->venueimage = JUri::base(true) . '/' . $limage['thumb'];
             $lists[$i]->venueimageorig = JUri::base(true) . '/' . $limage['original'];
         }
         $lists[$i]->eventdescription = strip_tags($row->fulltext);
         $lists[$i]->venuedescription = strip_tags($row->locdescription);
         $i++;
     }
     // foreach ($events as $row)
     return $lists;
 }
 /**
  * Method to get the events
  *
  * @access public
  * @return array
  */
 public static function getList(&$params)
 {
     mb_internal_encoding('UTF-8');
     $db = JFactory::getDBO();
     $user = JFactory::getUser();
     $levels = $user->getAuthorisedViewLevels();
     $settings = JemHelper::config();
     // Use (short) format saved in module settings or in component settings or format in language file otherwise
     $dateFormat = $params->get('formatdate', '');
     if (empty($dateFormat)) {
         // on empty format long format will be used but we need short format
         if (isset($settings->formatShortDate) && $settings->formatShortDate) {
             $dateFormat = $settings->formatShortDate;
         } else {
             $dateFormat = JText::_('COM_JEM_FORMAT_SHORT_DATE');
         }
     }
     $timeFormat = $params->get('formattime', '');
     $addSuffix = false;
     if (empty($timeFormat)) {
         // on empty format component's format will be used, so also use component's time suffix
         $addSuffix = true;
     }
     # 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);
     # filter published
     #  0: unpublished
     #  1: published
     #  2: archived
     # -2: trashed
     $type = $params->get('type');
     # All events
     $cal_from = "";
     // TODO: Add parameter to specify start and end dates for showing events
     // (used for schools league)
     // All events, default order
     if ($type == 3) {
         $cal_from = "";
     } elseif ($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');
     # filter category's
     $catids = JemHelper::getValidIds($params->get('catid'));
     if ($catids) {
         $model->setState('filter.category_id', $catids);
         $model->setState('filter.category_id.include', true);
     }
     # filter venue's
     $venids = JemHelper::getValidIds($params->get('venid'));
     if ($venids) {
         $model->setState('filter.venue_id', $venids);
         $model->setState('filter.venue_id.include', true);
     }
     # count
     $count = $params->get('count', '2');
     $model->setState('list.limit', $count);
     # Retrieve the available Events
     $events = $model->getItems();
     # Loop through the result rows and prepare data
     $i = 0;
     $lists = array();
     foreach ($events as $row) {
         //cut titel
         $length = mb_strlen($row->title);
         if ($length > $params->get('cuttitle', '18')) {
             $row->title = mb_substr($row->title, 0, $params->get('cuttitle', '18'));
             $row->title = $row->title . '...';
         }
         $lists[$i] = new stdClass();
         $lists[$i]->link = JRoute::_(JemHelperRoute::getEventRoute($row->slug));
         # time/date
         list($lists[$i]->date, $lists[$i]->time) = self::_format_date_time($row, $params->get('datemethod', 1), $dateFormat, $timeFormat, $addSuffix);
         $lists[$i]->dateinfo = JEMOutput::formatDateTime($row->dates, $row->times, $row->enddates, $row->endtimes, $dateFormat, $timeFormat, $addSuffix);
         $lists[$i]->dateinfo = JemOutput::formatDateTime($row->dates, $row->times, $row->enddates, $row->endtimes, $dateFormat, $timeFormat, $addSuffix);
         $lists[$i]->text = $params->get('showtitloc', 0) ? $row->title : 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;
 }