83 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.6 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
 | |
|  */
 | |
| defined('_JEXEC') or die();
 | |
| use Joomla\CMS\MVC\Model\BaseDatabaseModel;
 | |
| use Joomla\CMS\Factory;
 | |
| use Joomla\CMS\Plugin\PluginHelper;
 | |
| jimport('joomla.application.component.model');
 | |
| 
 | |
| 
 | |
| class PhocaDownloadModelDownload extends BaseDatabaseModel
 | |
| {
 | |
| 	var $_file 				= null;
 | |
| 	var $_category 			= null;
 | |
| 	var $_filename			= null;
 | |
| 	var $_directlink		= 0;
 | |
| 
 | |
| 	function __construct() {
 | |
| 		$app	= Factory::getApplication();
 | |
| 		parent::__construct();
 | |
| 		$this->setState('filter.language',$app->getLanguageFilter());
 | |
| 	}
 | |
| 
 | |
| 	function getFile( $downloadToken) {
 | |
| 		if (empty($this->_file)) {			
 | |
| 			$query			= $this->_getFileQuery( $downloadToken);
 | |
| 			$this->_file	= $this->_getList( $query, 0 , 1 );
 | |
| 			
 | |
| 			// Don't display file if user has no access
 | |
| 			// - - - - - - - - - - - - - - - 
 | |
| 			if (empty($this->_file)) {
 | |
| 				return null;
 | |
| 			} 
 | |
| 			// - - - - - - - - - - - - - - - -
 | |
| 		}
 | |
| 		return $this->_file;
 | |
| 	}
 | |
| 	
 | |
| 	function _getFileQuery( $downloadToken ) {
 | |
| 		
 | |
| 		$app		= Factory::getApplication();
 | |
| 		$params 	= $app->getParams();
 | |
| 		$user 		= Factory::getUser();
 | |
| 		
 | |
| 		$pQ			= $params->get( 'enable_plugin_query', 0 );
 | |
| 		
 | |
| 		$wheres[] = " c.approved = 1";
 | |
| 		$wheres[] = " c.published = 1";
 | |
| 		$wheres[] = " c.token = " . $this->_db->Quote($downloadToken);
 | |
| 		
 | |
| 		
 | |
| 		// Active
 | |
| 		$jnow		= Factory::getDate();
 | |
| 		$now		= $jnow->toSql();
 | |
| 		$nullDate	= $this->_db->getNullDate();
 | |
| 		$wheres[] = ' ( c.publish_up = '.$this->_db->Quote($nullDate).' OR c.publish_up <= '.$this->_db->Quote($now).' )';
 | |
| 		$wheres[] = ' ( c.publish_down = '.$this->_db->Quote($nullDate).' OR c.publish_down >= '.$this->_db->Quote($now).' )';
 | |
| 		
 | |
| 		if ($pQ == 1) {
 | |
| 			// GWE MOD - to allow for access restrictions
 | |
| 			PluginHelper::importPlugin("phoca");
 | |
| 			//$dispatcher = JEventDispatcher::getInstance();
 | |
| 			$joins = array();
 | |
| 			$results = Factory::getApplication()->triggerEvent('onGetFile', array (&$wheres, &$joins, $fileId,  $params));		
 | |
| 			// END GWE MOD
 | |
| 		}
 | |
| 		
 | |
| 		$query = ' SELECT c.*, lc.title AS licensetitle, lc.description AS licensetext, lc.id AS licenseid'
 | |
| 				.' FROM #__phocadownload AS c' 
 | |
| 				.' LEFT JOIN #__phocadownload_licenses AS lc ON lc.id = c.confirm_license'
 | |
| 				. ($pQ == 1 ? ((count($joins)>0?( " LEFT JOIN " .implode( " LEFT JOIN ", $joins )):"")):"") // GWE MOD
 | |
| 				.' WHERE ' . implode( ' AND ', $wheres )
 | |
| 				.' ORDER BY c.ordering';
 | |
| 				
 | |
| 		return $query;
 | |
| 	}
 | |
| }
 | |
| ?>
 |