Files
2024-12-17 17:34:10 +01:00

159 lines
5.1 KiB
PHP

<?php
/*
* @package Joomla
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
*
* @component Phoca Component
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Document\Feed\FeedItem;
use Joomla\CMS\Router\Route;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Uri\Uri;
jimport( 'joomla.application.component.view');
phocagalleryimport( 'phocagallery.ordering.ordering');
phocagalleryimport( 'phocagallery.picasa.picasa');
phocagalleryimport( 'phocagallery.facebook.fbsystem');
class PhocaGalleryViewFeed extends HtmlView
{
function display($tpl = null) {
$app = Factory::getApplication();
$user = Factory::getUser();
$userLevels = implode (',', $user->getAuthorisedViewLevels());
$db = Factory::getDBO();
$menu = $app->getMenu();
$document = Factory::getDocument();
$params = $app->getParams();
// Specific category
$id = $app->input->get('id', 0, 'int');
// Params
$categories = $params->get( 'feed_cat_ids', '' );
$ordering = $params->get( 'feed_img_ordering', 6 );
$imgCount = $params->get( 'feed_img_count', 5 );
$feedTitle = $params->get( 'feed_title', Text::_('COM_PHOCAGALLERY_GALLERY') );
$t['picasa_correct_width_m'] = (int)$params->get( 'medium_image_width', 256 );
$t['picasa_correct_height_m'] = (int)$params->get( 'medium_image_height', 192 );
$document->setTitle($this->escape( html_entity_decode($feedTitle)));
if($id > 0) {
$wheres[] = ' c.id ='.(int)$id;
} else {
if (count($categories) > 1) {
\Joomla\Utilities\ArrayHelper::toInteger($categories);
$categoriesString = implode(',', $categories);
$wheres[] = ' c.id IN ( '.$categoriesString.' ) ';
} else if ((int)$categories > 0) {
$wheres[] = ' c.id IN ( '.$categories.' ) ';
}
}
$imageOrdering = PhocaGalleryOrdering::getOrderingString($ordering, 6);
$wheres[] = ' a.published = 1';
$wheres[] = ' a.approved = 1';
$wheres[] = ' c.published = 1';
$wheres[] = ' c.approved = 1';
$wheres[] = ' c.access IN ('.$userLevels.')';
$u = " (c.accessuserid LIKE '%0%' OR c.accessuserid LIKE '%-1%' OR c.accessuserid LIKE '%,".(int)$user->id."' OR c.accessuserid LIKE '".(int)$user->id.",%' OR c.accessuserid LIKE '%,".(int)$user->id.",%' OR c.accessuserid =".(int)$user->id.") ";
$e = 'c.accessuserid IS NULL';
$wheres[] = ' CASE WHEN c.accessuserid IS NOT NULL THEN '.$u.' ELSE '.$e.' END';
$query = 'SELECT a.*, c.alias as catalias, c.title as categorytitle'
.' FROM #__phocagallery AS a'
.' LEFT JOIN #__phocagallery_categories AS c ON a.catid = c.id'
. ' WHERE ' . implode( ' AND ', $wheres )
.$imageOrdering['output'];
$db->setQuery( $query , 0, $imgCount );
$images = $db->loadObjectList( );
foreach ($images as $keyI => $value) {
$item = new FeedItem();
$title = $this->escape( $value->title );
$title = html_entity_decode( $title );
$item->title = $title;
$link = PhocaGalleryRoute::getCategoryRoute($value->catid, $value->catalias);
$item->link = Route::_($link);
// imgDate
$imgDate = '';
$imgDate = HTMLHelper::Date($value->date, "Y-m-d h:m:s");
if ($imgDate != '') {
$item->date = $imgDate;
}
$item->description = '';
if ($value->description != '') {
$item->description .= '<div>'.$value->description.'</div>';
}
$extImage = false;
if (isset($value->extid)) {
$extImage = PhocaGalleryImage::isExtImage($value->extid);
}
// Trying to fix but in Joomla! method $this->_relToAbs - it cannot work with JRoute links :-(
$itemL = str_replace(Uri::base(true), '', $item->link);
if (substr($itemL, 0, 1) == '/') {
$itemL = substr_replace($itemL, '', 0, 1);
}
$itemL = Uri::base().$itemL;
// Should really not happen
$itemLTmp = str_replace('http://', '', $itemL);
$pos = stripos($itemLTmp, '//');
if ($pos !== false) {
$itemLTmp = str_replace('//', '/', $itemLTmp);
$itemL = 'http://'.$itemLTmp;
}
// - - - - - - - - - - -
if ($extImage) {
$correctImageRes = PhocaGalleryPicasa::correctSizeWithRate($value->extw, $value->exth, $t['picasa_correct_width_m'], $t['picasa_correct_height_m']);
$imgLink = $value->extm;
//$i = '<div><a href="'.JRoute::_($link).'"><img src="'.$imgLink .'" border="0" width="'.$correctImageRes['width'].'" height="'.$correctImageRes['height'].'" /></a></div>';
$i = '<div><a href="'.$itemL.'"><img src="'.$imgLink .'" border="0" /></a></div>';
} else {
$imgLink = PhocaGalleryImageFront::displayCategoryImageOrNoImage($value->filename, 'medium');
$i = '<div><a href="'.$itemL.'"><img src="'. /*JUri::base(true) .*/ $imgLink.'" border="0" /></a></div>';
}
$item->description .= $i;
$item->category = $value->categorytitle;
/*if ($value->author != '') {
$item->author = $value->author;
}*/
$document->addItem( $item );
}
}
}
?>