some module work, thanks rheinig
[eventlist:version1-0.git] / modules / mod_eventlist / helper.php
1 <?php
2 /**
3  * @version 1.0 $Id$
4  * @package Joomla
5  * @subpackage EventList
6  * @copyright (C) 2005 - 2008 Christoph Lukes
7  * @license GNU/GPL, see LICENCE.php
8  * EventList is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License 2
10  * as published by the Free Software Foundation.
11
12  * EventList is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16
17  * You should have received a copy of the GNU General Public License
18  * along with EventList; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20  */
21
22 // no direct access
23 defined('_JEXEC') or die('Restricted access');
24
25 /**
26  * EventList Module helper
27  *
28  * @package Joomla
29  * @subpackage EventList Module
30  * @since               0.9
31  */
32 class modEventListHelper
33 {
34
35         /**
36          * Method to get the events
37          *
38          * @access public
39          * @return array
40          */
41         function getList(&$params)
42         {
43                 global $mainframe;
44
45                 $db                     =& JFactory::getDBO();
46                 $user           =& JFactory::getUser();
47                 $user_gid       = (int) $user->get('aid');
48
49                 if ($params->get( 'type', '0' ) == 0) {
50                         $where = ' WHERE a.published = 1';
51                         $order = ' ORDER BY a.dates, a.times';
52                 } else {
53                         $where = ' WHERE a.published = -1';
54                         $order = ' ORDER BY a.dates DESC, a.times DESC';
55                 }
56
57                 $catid  = trim( $params->get('catid') );
58                 $venid  = trim( $params->get('venid') );
59
60                 if ($catid)
61                 {
62                         $ids = explode( ',', $catid );
63                         JArrayHelper::toInteger( $ids );
64                         $categories = ' AND (c.id=' . implode( ' OR c.id=', $ids ) . ')';
65                 }
66                 if ($venid)
67                 {
68                         $ids = explode( ',', $venid );
69                         JArrayHelper::toInteger( $ids );
70                         $venues = ' AND (l.id=' . implode( ' OR l.id=', $ids ) . ')';
71                 }
72
73                 //get $params->get( 'count', '2' ) nr of datasets
74                 $query = 'SELECT a.*, l.venue, l.city, l.url,'
75                                 .' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug'
76                                 .' FROM #__eventlist_events AS a'
77                                 .' LEFT JOIN #__eventlist_venues AS l ON l.id = a.locid'
78                                 .' LEFT JOIN #__eventlist_categories AS c ON c.id = a.catsid'
79                                 . $where
80                                 .' AND c.access <= '.$user_gid
81                                 .($catid ? $categories : '')
82                                 .($venid ? $venues : '')
83                                 . $order
84                                 .' LIMIT '.(int)$params->get( 'count', '2' )
85                                 ;
86
87                 $db->setQuery($query);
88                 $rows = $db->loadObjectList();
89
90                 $i              = 0;
91                 $lists  = array();
92                 foreach ( $rows as $row )
93                 {
94                         //cut titel
95                         $length = strlen(htmlspecialchars( $row->title ));
96
97                         if ($length > $params->get('cuttitle', '18')) {
98                                 $row->title = substr($row->title, 0, $params->get('cuttitle', '18'));
99                                 $row->title = htmlspecialchars( $row->title.'...', ENT_COMPAT, 'UTF-8');
100                         }
101
102                         $lists[$i]->link                = JRoute::_( EventListHelperRoute::getRoute($row->slug) );
103                         $lists[$i]->dateinfo    = modEventListHelper::_builddateinfo($row, $params);
104                         $lists[$i]->text                = $params->get('showtitloc', 0 ) ? $row->title : htmlspecialchars( $row->venue, ENT_COMPAT, 'UTF-8' );
105                         $lists[$i]->city                = htmlspecialchars( $row->city, ENT_COMPAT, 'UTF-8' );
106                         $lists[$i]->venueurl    = !empty( $row->url ) ? modEventListHelper::_format_url($row->url) : null;
107                         $i++;
108                 }
109
110                 return $lists;
111         }
112
113         /**
114          * Method to a formated and structured string of date infos
115          *
116          * @access public
117          * @return string
118          */
119         function _builddateinfo($row, &$params)
120         {
121                 $date           = modEventListHelper::_format_date($row->dates, $row->times, $params->get('formatdate', '%d.%m.%Y'));
122                 $enddate        = $row->enddates ? modEventListHelper::_format_date($row->enddates, $row->endtimes, $params->get('formatdate', '%d.%m.%Y')) : null;
123                 $time           = $row->times ? modEventListHelper::_format_date($row->dates, $row->times, $params->get('formattime', '%H:%M')) : null;
124                 $dateinfo       = $date;
125
126                 if ( isset($enddate) ) {
127                         $dateinfo .= ' - '.$enddate;
128                 }
129
130                 if ( isset($time) ) {
131                         $dateinfo .= ' | '.$time;
132                 }
133
134                 return $dateinfo;
135         }
136
137         /**
138          * Method to get a valid url
139          *
140          * @access public
141          * @return string
142          */
143         function _format_url($url)
144         {
145                 if(!empty($url) && strtolower(substr($url, 0, 7)) != "http://") {
146                 $url = 'http://'.$url;
147         }
148                 return $url;
149         }
150
151         /**
152          * Method to format date information
153          *
154          * @access public
155          * @return string
156          */
157         function _format_date($date, $time, $format)
158         {
159                 //format date
160                 $date = strftime($format, strtotime( $date.' '.$time ));
161
162                 return $date;
163         }
164 }