mod_eventlist retornando os eventos mais antigos

  • david_joomla
  • Avatar de david_joomla Autor do Tópico
  • Offline
  • JCB! Estagiário
  • JCB! Estagiário
Mais
13 anos 10 meses atrás #60159 por david_joomla
david_joomla created the topic: mod_eventlist retornando os eventos mais antigos
Galera, algum vocês pode me ajudar a inverter a lista de eventos que o mod_eventlist mostra. Tentei alterar o código abaixo, mas num tive êxito. Não conheço muito de php, então venho pedir a ajuda de vcs.

Código:
function getList(&$params)
        {
                global $mainframe;

                $db                     =& JFactory::getDBO();
                $user           =& JFactory::getUser();
                $user_gid       = (int) $user->get('aid');

                if ($params->get( 'type', '0' ) == 0) {
                        $where = ' WHERE a.published = 1';
                        if ($params->get( 'event_after', '0' )) {
                                $limit_date = strftime('%Y-%m-%d', time() + $params->get( 'event_after', '0' ) * 86400);
                                $where .= ' AND a.dates >= ' . $db->Quote($limit_date);
                        }
                        $order = ' ORDER BY a.dates, a.times'; //tentei trocar aki para ORDER BY a.dates ASC, a.times ASC
                } else {
                        $where = ' WHERE a.published = -1';
                        $order = ' ORDER BY a.dates DESC, a.times DESC';//tentei trocar aki para ORDER BY a.dates ASC, a.times ASC
                }

                $catid  = trim( $params->get('catid') );
                $venid  = trim( $params->get('venid') );

                if ($catid)
                {
                        $ids = explode( ',', $catid );
                        JArrayHelper::toInteger( $ids );
                        $categories = ' AND (c.id=' . implode( ' OR c.id=', $ids ) . ')';
                }
                if ($venid)
                {
                        $ids = explode( ',', $venid );
                        JArrayHelper::toInteger( $ids );
                        $venues = ' AND (l.id=' . implode( ' OR l.id=', $ids ) . ')';
                }

                //get $params->get( 'count', '2' ) nr of datasets
                $query = 'SELECT DISTINCT a.*, l.venue, l.city, l.url,'
                                .' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'
        .' CASE WHEN CHAR_LENGTH(l.alias) THEN CONCAT_WS(\':\', l.id, l.alias) ELSE l.id END as venueslug'
                                .' FROM #__eventlist_events AS a'
        .' INNER JOIN #__eventlist_cats_event_relations AS rel ON rel.itemid = a.id'
        .' INNER JOIN #__eventlist_categories AS c ON c.id = rel.catid'
                                .' LEFT JOIN #__eventlist_venues AS l ON l.id = a.locid'
 . $where
                                .' AND c.access <= '.$user_gid
                                .($catid ? $categories : '')
                                .($venid ? $venues : '')
                                . $order
                                .' LIMIT '.(int)$params->get( 'count', '2' )
                                ;

                $db->setQuery($query);
                $rows = $db->loadObjectList();

                $i              = 0;
                $lists  = array();
                foreach ( $rows as $row )
                {
                        //cut titel
                        $length = strlen(htmlspecialchars( $row->title ));

                        if ($length > $params->get('cuttitle', '18')) {
                                $row->title = substr($row->title, 0, $params->get('cuttitle', '18'));
                                $row->title = htmlspecialchars( $row->title.'...', ENT_COMPAT, 'UTF-8');
                        }

Please Entrar ou Registrar to join the conversation.


Mais
13 anos 9 meses atrás #60747 por luizwbr
luizwbr replied the topic: Re: mod_eventlist retornando os eventos mais antigos
Olá David, tudo certinho?

Fiz uma alteração no teu código, testa aí:
function getList(&$params)
        {
                global $mainframe;

                $db                     =& JFactory::getDBO();
                $user           =& JFactory::getUser();
                $user_gid       = (int) $user->get('aid');

                if ($params->get( 'type', '0' ) == 0) {
                        $where = ' WHERE a.published = 1';
			// removi esta parte para testar, pelo que parece estava listando somente os eventos mais novos de acordo com a data
                        /*if ($params->get( 'event_after', '0' )) {
                                $limit_date = strftime('%Y-%m-%d', time() + $params->get( 'event_after', '0' ) * 86400);
                                $where .= ' AND a.dates >= ' . $db->Quote($limit_date);
                        }*/
                        $order = ' ORDER BY a.dates ASC, a.times ASC'; //tentei trocar aki para ORDER BY a.dates ASC, a.times ASC
                } else {
                        $where = ' WHERE a.published = -1';
                        $order = ' ORDER BY a.dates ASC, a.times ASC';//tentei trocar aki para ORDER BY a.dates ASC, a.times ASC
                }

                $catid  = trim( $params->get('catid') );
                $venid  = trim( $params->get('venid') );

                if ($catid)
                {
                        $ids = explode( ',', $catid );
                        JArrayHelper::toInteger( $ids );
                        $categories = ' AND (c.id=' . implode( ' OR c.id=', $ids ) . ')';
                }
                if ($venid)
                {
                        $ids = explode( ',', $venid );
                        JArrayHelper::toInteger( $ids );
                        $venues = ' AND (l.id=' . implode( ' OR l.id=', $ids ) . ')';
                }

                //get $params->get( 'count', '2' ) nr of datasets
                $query = 'SELECT DISTINCT a.*, l.venue, l.city, l.url,'
                                .' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'
        .' CASE WHEN CHAR_LENGTH(l.alias) THEN CONCAT_WS(\':\', l.id, l.alias) ELSE l.id END as venueslug'
                                .' FROM #__eventlist_events AS a'
        .' INNER JOIN #__eventlist_cats_event_relations AS rel ON rel.itemid = a.id'
        .' INNER JOIN #__eventlist_categories AS c ON c.id = rel.catid'
                                .' LEFT JOIN #__eventlist_venues AS l ON l.id = a.locid'
. $where
                                .' AND c.access <= '.$user_gid
                                .($catid ? $categories : '')
                                .($venid ? $venues : '')
                                . $order
                                .' LIMIT '.(int)$params->get( 'count', '2' )
                                ;

                $db->setQuery($query);
                $rows = $db->loadObjectList();

                $i              = 0;
                $lists  = array();
                foreach ( $rows as $row )
                {
                        //cut titel
                        $length = strlen(htmlspecialchars( $row->title ));

                        if ($length > $params->get('cuttitle', '18')) {
                                $row->title = substr($row->title, 0, $params->get('cuttitle', '18'));
                                $row->title = htmlspecialchars( $row->title.'...', ENT_COMPAT, 'UTF-8');
                        }

//&#91;...&#93;

[b:3ah8ktjp]Luiz F. Weber[/b:3ah8ktjp]
[url:3ah8ktjp]http://weber.eti.br[/url:3ah8ktjp] - blog Virtuemart
[url:3ah8ktjp]http://loja.weber.eti.br[/url:3ah8ktjp] - plugins VM
[url:3ah8ktjp]http://webgenium.com.br[/url:3ah8ktjp] - trabalho

Please Entrar ou Registrar to join the conversation.