1
0
mirror of https://github.com/e107inc/e107.git synced 2025-02-07 07:47:59 +01:00
php-e107/e107_plugins/news/news_carousel_menu.php

142 lines
3.1 KiB
PHP
Raw Normal View History

<?php
/**
* Copyright (C) 2008-2016 e107 Inc (e107.org), Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
*
* Carousel Menu
*/
if (!defined('e107_INIT')) { exit; }
if(is_string($parm))
{
parse_str($parm, $parms);
}
else
{
$parms = $parm;
}
if(isset($parms['caption'][e_LANGUAGE]))
{
$parms['caption'] = $parms['caption'][e_LANGUAGE];
}
$limit = vartrue($parms['count'],5);
$tp = e107::getParser();
$template = e107::getTemplate('news', 'news_menu', 'carousel', true, true);
$nobody_regexp = "'(^|,)(".str_replace(",", "|", e_UC_NOBODY).")(,|$)'";
2016-04-19 16:57:44 -07:00
e107::getDebug()->log("News Carousel Menu ".print_a($parms,true));
$query = "
SELECT n.*, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon,
nc.category_meta_keywords, nc.category_meta_description
FROM #news AS n
LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id
WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()."
AND (n.news_end=0 || n.news_end>".time().") ";
if(!empty($parms['category']))
{
$query .= " AND n.news_category = ".intval($parms['category']);
}
if(vartrue($parms['source']) == 'assigned')
{
$query .= " AND FIND_IN_SET(5,n.news_render_type) ";
}
if(vartrue($parms['source']) == 'sticky')
{
$query .= " AND n.news_sticky = 1 ";
}
$query .= " AND n.news_thumbnail != '' ";
$query .= "
ORDER BY n.news_sticky DESC, n.news_datestamp DESC
LIMIT ".$limit;
$data = $sql->retrieve($query,true);
if(empty($data))
{
e107::getMessage()->addDebug( "No News items found with 'carousel' as the template ")->render();
return;
}
$count = 0;
// $tp->setThumbSize(800,0);
$sc = e107::getScBatch('news');
$text = '';
$nav = array();
foreach($data as $row)
{
$sc->setScVar('news_item', $row);
$vars = array(
'{ACTIVE}' => ($count == 0) ? 'active' : '',
'{COUNT}' => $count,
);
$parsed = str_replace(array_keys($vars), $vars, $template['item']);
$navTemplate = str_replace(array_keys($vars), $vars,$template['nav']);
$nav[] = $tp->parseTemplate($navTemplate , true, $sc);
$parsed = $tp->parseTemplate($parsed,true, $sc);
$text .= $parsed;
$count++;
}
$header = $template['start'];
$footer = str_replace("{NAV}", implode("\n",$nav), $template['end']);
if(!empty($parms['caption']))
{
e107::getRender()->tablerender($parms['caption'], ($header.$text.$footer) ,'news-carousel'); //TODO Tablerender().
}
else
{
echo $header.$text.$footer;
}
e107::js('footer-inline',"
clickEvent = false;
$('#news-carousel').on('click', '#news-carousel-nav a', function() {
clickEvent = true;
$('#news-carousel-nav li').removeClass('active');
$(this).parent().addClass('active');
}).on('slid.bs.carousel', function(e) {
if(!clickEvent) {
var count = $('#news-carousel-nav').children().length -1;
var current = $('#news-carousel-nav li.active');
current.removeClass('active').next().addClass('active');
var id = parseInt(current.data('slide-to'));
if(count == id) {
$('#news-carousel-nav li').first().addClass('active');
}
}
clickEvent = false;
});"
);