156 lines
5.7 KiB
PHP
156 lines
5.7 KiB
PHP
<?php
|
|
/* @package Joomla
|
|
* @copyright Copyright (C) Open Source Matters. All rights reserved.
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
|
* @extension Phoca Extension
|
|
* @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\Registry\Registry;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\Utilities\ArrayHelper;
|
|
use Joomla\CMS\Document\Feed\FeedItem;
|
|
use Joomla\CMS\Router\Route;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
|
|
jimport( 'joomla.application.component.view');
|
|
|
|
class PhocaDownloadViewFeed extends HtmlView
|
|
{
|
|
|
|
function display($tpl = null)
|
|
{
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
$userLevels = implode (',', $user->getAuthorisedViewLevels());
|
|
//$db = JFactory::getDBO();
|
|
//$menu = $app->getMenu();
|
|
$document = Factory::getDocument();
|
|
//$params = $app->getParams();
|
|
$moduleId = $app->input->get('id', 0, 'int');
|
|
//$table = JTable::getInstance('module');
|
|
|
|
|
|
if ((int)$moduleId > 0) {
|
|
$db = Factory::getDBO();
|
|
$query = 'SELECT a.params'
|
|
. ' FROM #__modules AS a'
|
|
. ' WHERE a.published = 1'
|
|
. ' AND a.id ='.(int)$moduleId
|
|
. ' ORDER BY a.ordering';
|
|
|
|
$db->setQuery( $query );
|
|
/*if (!$db->query()) {
|
|
throw new Exception($db->getErrorMsg(), 500);
|
|
return false;
|
|
}*/
|
|
$module = $db->loadObject();
|
|
if (isset($module->params) && $module->params != '') {
|
|
jimport( 'joomla.html.parameter' );
|
|
$paramsM = new Registry;
|
|
$paramsM->loadString($module->params);
|
|
//$paramsM->loadJSON($module->params);
|
|
|
|
// Params
|
|
$categories = $paramsM->get( 'category_ids', '' );
|
|
$ordering = $paramsM->get( 'file_ordering', 6 );
|
|
$fileCount = $paramsM->get( 'file_count', 5 );
|
|
$feedTitle = $paramsM->get( 'feed_title', Text::_('COM_PHOCADOWNLOAD_DOWNLOAD') );
|
|
$displayDateType = $paramsM->get( 'display_date_type', 1 );
|
|
|
|
$document->setTitle($this->escape( html_entity_decode($feedTitle)));
|
|
|
|
$wheres = array();
|
|
if (is_array($categories) && count($categories) > 0) {
|
|
ArrayHelper::toInteger($categories);
|
|
$categoriesString = implode(',', $categories);
|
|
$wheres[] = ' c.catid IN ( '.$categoriesString.' ) ';
|
|
} else if ((int)$categories > 0) {
|
|
$wheres[] = ' c.catid IN ( '.$categories.' ) ';
|
|
}
|
|
|
|
$wheres[] = ' c.catid= cc.id';
|
|
$wheres[] = '( (unaccessible_file = 1 ) OR (unaccessible_file = 0 AND c.access IN ('.$userLevels.') ) )';
|
|
$wheres[] = '( (unaccessible_file = 1 ) OR (unaccessible_file = 0 AND cc.access IN ('.$userLevels.') ) )';
|
|
$wheres[] = ' c.published = 1';
|
|
$wheres[] = ' c.approved = 1';
|
|
$wheres[] = ' cc.published = 1';
|
|
$wheres[] = ' c.textonly = 0';
|
|
// Active
|
|
$jnow = Factory::getDate();
|
|
$now = $jnow->toSql();
|
|
$nullDate = $db->getNullDate();
|
|
$wheres[] = ' ( c.publish_up = '.$db->Quote($nullDate).' OR c.publish_up <= '.$db->Quote($now).' )';
|
|
$wheres[] = ' ( c.publish_down = '.$db->Quote($nullDate).' OR c.publish_down >= '.$db->Quote($now).' )';
|
|
$fileOrdering = PhocaDownloadOrdering::getOrderingText($ordering);
|
|
|
|
$query = ' SELECT c.*, cc.id AS categoryid, cc.title AS categorytitle, cc.alias AS categoryalias, cc.access as cataccess, cc.accessuserid as cataccessuserid '
|
|
. ' FROM #__phocadownload AS c'
|
|
. ' LEFT JOIN #__phocadownload_categories AS cc ON cc.id = c.catid'
|
|
. ' WHERE ' . implode( ' AND ', $wheres )
|
|
. ' ORDER BY '.$fileOrdering;
|
|
|
|
|
|
|
|
$db->setQuery( $query , 0, $fileCount );
|
|
$files = $db->loadObjectList( );
|
|
|
|
foreach ($files as $keyDoc => $valueDoc) {
|
|
|
|
// USER RIGHT - Access of categories (if file is included in some not accessed category) - - - - -
|
|
// ACCESS is handled in SQL query, ACCESS USER ID is handled here (specific users)
|
|
$rightDisplay = 0;
|
|
if (!empty($valueDoc)) {
|
|
$rightDisplay = PhocaDownloadAccess::getUserRight('accessuserid', $valueDoc->cataccessuserid, $valueDoc->cataccess, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
if ($rightDisplay == 1) {
|
|
|
|
|
|
$item = new FeedItem();
|
|
|
|
$title = $this->escape( $valueDoc->title . ' ('.PhocaDownloadFile::getTitleFromFilenameWithExt( $valueDoc->filename ).')' );
|
|
$title = html_entity_decode( $title );
|
|
$item->title = $title;
|
|
|
|
$link = PhocaDownloadRoute::getCategoryRoute($valueDoc->categoryid, $valueDoc->categoryalias);
|
|
$item->link = Route::_($link);
|
|
|
|
|
|
// FILEDATE
|
|
$fileDate = '';
|
|
if ((int)$displayDateType > 0) {
|
|
if ($valueDoc->filename !='') {
|
|
$fileDate = PhocaDownloadFile::getFileTime($valueDoc->filename, $displayDateType, "Y-m-d H:M:S");
|
|
}
|
|
} else {
|
|
$fileDate = HTMLHelper::Date($valueDoc->date, "Y-m-d H:i:s");
|
|
}
|
|
|
|
if ($fileDate != '') {
|
|
$item->date = $fileDate;
|
|
}
|
|
//$item->description = $valueDoc->description;
|
|
// $item->description = '<div><img src="media/com_phocadownload/images/phoca-download.png" alt="" /></div><div>New file "' .$valueDoc->title . '" ('. $valueDoc->filename.') released on '. $dateDesc.' is available on <a href="https://www.phoca.cz/download">Phoca download site</a></div>'.$valueDoc->description;
|
|
|
|
$item->description = '<div><img src="media/com_phocadownload/images/phoca-download.png" alt="" /></div>'.$valueDoc->description;
|
|
$item->category = $valueDoc->categorytitle;
|
|
// $item->section = $valueDoc->sectiontitle;
|
|
if ($valueDoc->author != '') {
|
|
$item->author = $valueDoc->author;
|
|
}
|
|
|
|
$document->addItem( $item );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
?>
|