<?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();
jimport( 'joomla.application.component.view');
jimport( 'joomla.filesystem.folder' ); 
jimport( 'joomla.filesystem.file' );

class PhocaDownloadViewDownload extends JViewLegacy
{
	protected $file;
	protected $category;
	protected $t;

	function display($tpl = null){		
		
		$app					= JFactory::getApplication();
		$this->t['p'] 			= $app->getParams();	
		$this->t['user'] 		= JFactory::getUser();
		$uri 					= JFactory::getURI();
		$model					= $this->getModel();
		$document				= JFactory::getDocument();
		$downloadToken			= $app->input->get('id', '', 'string');// Token string
		$this->t['limitstart']	= $app->input->get( 'start', 0, 'int');// we need it for category back link
		$this->t['tmpl']		= $app->input->get( 'tmpl', '', 'string' );
		$this->t['mediapath']	= PhocaDownloadPath::getPathMedia();

		$this->t['tmplr'] = 0;
		if ($this->t['tmpl'] == 'component') {
			$this->t['tmplr'] = 1;
		}

		if ($this->t['limitstart'] > 0 ) {
			$this->t['limitstarturl'] = '&start='.$this->t['limitstart'];
		} else {
			$this->t['limitstarturl'] = '';
		}
		
		//$this->category			= $model->getCategory($fileId);
		//$this->file				= $model->getFile($fileId, $this->t['limitstarturl']);
		
		// Params
		$this->t['licenseboxheight']		= $this->t['p']->get( 'license_box_height', 300 );
		$this->t['filename_or_name'] 		= $this->t['p']->get( 'filename_or_name', 'filename' );
		$this->t['allowed_file_types']		= $this->t['p']->get( 'allowed_file_types', '' );
		$this->t['disallowed_file_types']	= $this->t['p']->get( 'disallowed_file_types', '' );
		$this->t['enable_user_statistics']	= $this->t['p']->get( 'enable_user_statistics', 1 );
		$this->t['file_icon_size'] 			= $this->t['p']->get( 'file_icon_size', 16 );
		$this->t['pw']						= PhocaDownloadRenderFront::renderPhocaDownload();
		$this->t['download_external_link'] 	= $this->t['p']->get( 'download_external_link', '_self' );
		$this->t['display_report_link'] 	= $this->t['p']->get( 'display_report_link', 0 );
		$this->t['send_mail_download'] 		= $this->t['p']->get( 'send_mail_download', 0 );// not boolean but id of user
		$this->t['display_specific_layout']	= $this->t['p']->get( 'display_specific_layout', 0 );
		$this->t['displaynew']				= $this->t['p']->get( 'display_new', 0 );
		$this->t['displayhot']				= $this->t['p']->get( 'display_hot', 0 );
		$this->t['enable_token_download']	= $this->t['p']->get( 'enable_token_download', 0 );
		
		PhocaDownloadRenderFront::renderAllCSS();
		
		$this->t['found'] = 0;
		if ($this->t['enable_token_download'] == 0) {
			$this->t['found'] = 0;
		} else if ($downloadToken == '') {
			$this->t['found'] = 0;
			
		} else {
			$this->file					= $model->getFile($downloadToken);
			if(isset($this->file[0]->id) && (int)$this->file[0]->id > 0 && isset($this->file[0]->token) & $this->file[0]->token != '') {
				$this->t['found'] = 1;
			}
			
			
			/*$document->addCustomTag('<script type="text/javascript" src="'.JURI::root().'components/com_phocadownload/assets/overlib/overlib_mini.js"></script>');
			$js	= 'var enableDownloadButtonPD = 0;'
				 .'function enableDownloadPD() {'
				 .' if (enableDownloadButtonPD == 0) {'
				 .'   document.forms[\'phocadownloadform\'].elements[\'pdlicensesubmit\'].disabled=false;'
				 .'   enableDownloadButtonPD = 1;'
				 .' } else {'
				 .'   document.forms[\'phocadownloadform\'].elements[\'pdlicensesubmit\'].disabled=true;'
				 .'   enableDownloadButtonPD = 0;'
				 .' }'
				 .'}';
			$document->addScriptDeclaration($js);*/

			
			

			


			// DOWNLOAD
			// - - - - - - - - - - - - - - - 
			$download				= $app->input->get( 'download', 0, 'int' );
			//$licenseAgree			= $app->input->get( 'license_agree', '', 'string' );
			$downloadId		 		= (int) $this->file[0]->id;
			if ($download == 1) {
				if (isset($this->file[0]->id)) {
					$currentLink	= 'index.php?option=com_phocadownload&view=download&id='.htmlspecialchars($downloadToken). $this->t['limitstarturl'] . '&Itemid='. $app->input->get('Itemid', 0, 'int');
				} else {
					$currentLink	= 'index.php?option=com_phocadownload&view=categories&Itemid='. $app->input->get('Itemid', 0, 'int');
				}
			
				// Check Token
				$token	= JSession::getFormToken();
				if (!JRequest::getInt( $token, 0, 'get' )) {
					//JError::raiseError(403, 'Request Forbidden');
					$app->redirect(JRoute::_('index.php', false), JText::_('COM_PHOCADOWNLOAD_INVALID_TOKEN'));
					exit;
				}
				
				// Check License Agreement
				/*if (empty($licenseAgree)) {
					$app->redirect(JRoute::_($currentLink, false), JText::_('COM_PHOCADOWNLOAD_WARNING_AGREE_LICENSE_TERMS'));
					exit;
				}*/
	
				$fileData		= PhocaDownloadDownload::getDownloadData($downloadId, $currentLink, 1);
				PhocaDownloadDownload::download($fileData, $downloadId, $currentLink, 1);
			}
			// - - - - - - - - - - - - - - - 
			
			/*$imagePath				= PhocaDownloadPath::getPathSet('icon');
			$this->t['cssimgpath']	= str_replace ( '../', JURI::base(true).'/', $imagePath['orig_rel_ds']);
			$filePath				= PhocaDownloadPath::getPathSet('file');
			$this->t['absfilepath']	= $filePath['orig_abs_ds'];
			$this->t['action']		= $uri->toString();	
			
			if (isset($this->category[0]) && is_object($this->category[0]) && isset($this->file[0]) && is_object($this->file[0])){
				$this->_prepareDocument($this->category[0], $this->file[0]);
			}*/
		}
		
		parent::display($tpl);
		
	}
	
	protected function _prepareDocument( $file) {
		
		$app			= JFactory::getApplication();
		$menus			= $app->getMenu();
		$menu 			= $menus->getActive();
		$pathway 		= $app->getPathway();
		$title 			= null;
		
		$this->t['downloadmetakey'] 	= $this->t['p']->get( 'download_metakey', '' );
		$this->t['downloadmetadesc'] 	= $this->t['p']->get( 'download_metadesc', '' );
		
		if ($menu) {
			$this->t['p']->def('page_heading', $this->t['p']->get('page_title', $menu->title));
		} else {
			$this->t['p']->def('page_heading', JText::_('JGLOBAL_ARTICLES'));
		}

		/*$title = $this->t['p']->get('page_title', '');
		if (empty($title) || (isset($title) && $title == '')) {
			$title = $this->item->title;
		}
		if (empty($title) || (isset($title) && $title == '')) {
			$title = htmlspecialchars_decode($app->getCfg('sitename'));
		} else if ($app->getCfg('sitename_pagetitles', 0)) {
			$title = JText::sprintf('JPAGETITLE', htmlspecialchars_decode($app->getCfg('sitename')), $title);
		}
		//$this->document->setTitle($title);

		$this->document->setTitle($title);*/
		
		  // get page title
          $title = $this->t['p']->get('page_title', '');
          // if the page title is set append the file title (if set!)
          if (!empty($title) && !empty($file->title)) {
             $title .= " - " . $file->title;
          }
          // if still is no title is set take the sitename only
          if (empty($title)) {
             $title = $app->getCfg('sitename');
          }
          // else add the title before or after the sitename
          elseif ($app->getCfg('sitename_pagetitles', 0) == 1) {
             $title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
          }
          elseif ($app->getCfg('sitename_pagetitles', 0) == 2) {
             $title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
          }
          $this->document->setTitle($title);

		
		if ($file->metadesc != '') {
			$this->document->setDescription($file->metadesc);
		} else if ($this->t['downloadmetadesc'] != '') {
			$this->document->setDescription($this->t['downloadmetadesc']);
		} else if ($this->t['p']->get('menu-meta_description', '')) {
			$this->document->setDescription($this->t['p']->get('menu-meta_description', ''));
		} 

		if ($file->metakey != '') {
			$this->document->setMetadata('keywords', $file->metakey);
		} else if ($this->t['downloadmetakey'] != '') {
			$this->document->setMetadata('keywords', $this->t['downloadmetakey']);
		} else if ($this->t['p']->get('menu-meta_keywords', '')) {
			$this->document->setMetadata('keywords', $this->t['p']->get('menu-meta_keywords', ''));
		}

		if ($app->getCfg('MetaTitle') == '1' & $this->t['p']->get('menupage_title', '')) {
			$this->document->setMetaData('title', $this->t['p']->get('page_title', ''));
		}
		

		
		if (!empty($file->title)) {
			$pathway->addItem($file->title);
		}
	}
}
?>