382 lines
15 KiB
PHP
382 lines
15 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\Client\ClientHelper;
|
|
use Joomla\CMS\MVC\View\HtmlView;
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Uri\Uri;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Router\Route;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
use Joomla\CMS\Object\CMSObject;
|
|
use Joomla\CMS\Mail\MailHelper;
|
|
jimport( 'joomla.client.helper' );
|
|
jimport( 'joomla.application.component.view' );
|
|
jimport( 'joomla.html.pane' );
|
|
use Joomla\String\StringHelper;
|
|
|
|
class PhocaDownloadViewUser extends HtmlView
|
|
{
|
|
protected $_context_files = 'com_phocadownload.phocadownloaduserfiles';
|
|
protected $r;
|
|
|
|
function display($tpl = null) {
|
|
|
|
$app = Factory::getApplication();
|
|
$document = Factory::getDocument();
|
|
$uri = Uri::getInstance();
|
|
$menus = $app->getMenu();
|
|
$menu = $menus->getActive();
|
|
$this->t['p'] = $app->getParams();
|
|
$user = Factory::getUser();
|
|
$db = Factory::getDBO();
|
|
$user = Factory::getUser();
|
|
$userLevels = implode (',', $user->getAuthorisedViewLevels());
|
|
|
|
$this->t['pi'] = 'media/com_phocadownload/images/';
|
|
$this->t['pp'] = 'index.php?option=com_phocadownload&view=user&controller=user';
|
|
$this->t['pl'] = 'index.php?option=com_users&view=login&return='.base64_encode($this->t['pp'].'&Itemid='. $app->input->get('Itemid', 0, 'int'));
|
|
|
|
$neededAccessLevels = PhocaDownloadAccess::getNeededAccessLevels();
|
|
$access = PhocaDownloadAccess::isAccess($user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
if (!$access) {
|
|
$app->enqueueMessage(Text::_("COM_PHOCADOWNLOAD_NOT_AUTHORISED_ACTION"), 'error');
|
|
$app->redirect(Route::_($this->t['pl'], false));
|
|
return;
|
|
}
|
|
|
|
PhocaDownloadRenderFront::renderMainJs();
|
|
PhocaDownloadRenderFront::renderAllCSS();
|
|
|
|
HTMLHelper::_('jquery.framework', false);
|
|
$document = Factory::getDocument();
|
|
$document->addScriptDeclaration(
|
|
'jQuery(document).ready(function(){
|
|
jQuery(\'.phfileuploadcheckcat\').click(function(){
|
|
if( !jQuery(\'#catid\').val() || jQuery(\'#catid\').val() == 0) {
|
|
alert(\''.Text::_('COM_PHOCADOWNLOAD_PLEASE_SELECT_CATEGORY').'\'); return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
})});'
|
|
);
|
|
|
|
|
|
// = = = = = = = = = = =
|
|
// PANE
|
|
// = = = = = = = = = = =
|
|
// - - - - - - - - - -
|
|
// ALL TABS
|
|
// - - - - - - - - - -
|
|
// UCP is disabled (security reasons)
|
|
if ((int)$this->t['p']->get( 'enable_user_cp', 0 ) == 0) {
|
|
$app->enqueueMessage(Text::_("COM_PHOCADOWNLOAD_USER_UPLOAD_DISABLED"), 'error');
|
|
$app->redirect(Uri::base(false));
|
|
exit;
|
|
}
|
|
|
|
$this->t['tab'] = $app->input->get('tab', 0, 'string');
|
|
$this->t['maxuploadchar'] = $this->t['p']->get( 'max_upload_char', 1000 );
|
|
$this->t['enableuseruploadapprove'] = $this->t['p']->get( 'enable_user_upload_approve', 0 );
|
|
$this->t['showpageheading'] = $this->t['p']->get( 'show_page_heading', 1 );
|
|
$this->t['uploadmaxsize'] = $this->t['p']->get( 'user_file_upload_size', 3145728 );
|
|
$this->t['uploadmaxsizeread'] = PhocaDownloadFile::getFileSizeReadable($this->t['uploadmaxsize']);
|
|
$this->t['userfilesmaxcount'] = $this->t['p']->get( 'user_files_max_count', 5 );
|
|
$this->t['userfilesmaxsize'] = $this->t['p']->get( 'user_files_max_size', 20971520 );
|
|
$this->t['send_mail_upload'] = $this->t['p']->get( 'send_mail_upload', 0 );
|
|
$this->t['pw'] = PhocaDownloadRenderFront::renderPhocaDownload();
|
|
//Subcateogry
|
|
//$this->t['parent_id'] = $app->input->get('parentcategoryid', 0, 'int');
|
|
|
|
//$document->addScript(JUri::base(true).'/components/com_phocadownload/assets/js/comments.js');
|
|
$document->addCustomTag(PhocaDownloadRenderFront::renderOnUploadJS());
|
|
$document->addCustomTag(PhocaDownloadRenderFront::renderDescriptionUploadJS((int)$this->t['maxuploadchar']));
|
|
$document->addCustomTag(PhocaDownloadRenderFront::userTabOrdering());
|
|
$model = $this->getModel('user');
|
|
|
|
// Upload Form - - - - - - - - - - - - - - -
|
|
$ftp = !ClientHelper::hasCredentials('ftp');// Set FTP form
|
|
$session = Factory::getSession();
|
|
$this->t['session'] = $session;
|
|
// END Upload Form - - - - - - - - - - - - -
|
|
|
|
$this->t['displayupload'] = 1;
|
|
|
|
|
|
|
|
// - - - - - - - - - -
|
|
// FORM
|
|
// - - - - - - - - - -
|
|
// No Controller because of returning back the values in case some form field is not OK
|
|
|
|
// Set default for returning back
|
|
$formData = new CMSObject();
|
|
$formData->set('title', '');
|
|
$formData->set('description','');
|
|
$formData->set('author','');
|
|
$formData->set('email','');
|
|
$formData->set('license','');
|
|
$formData->set('website','');
|
|
$formData->set('version','');
|
|
|
|
$this->t['errorcatid'] = '';
|
|
$this->t['erroremail'] = '';
|
|
$this->t['errorwebsite'] = '';
|
|
$this->t['errorfile'] = '';
|
|
|
|
$task = $app->input->get( 'task', '', 'string' );
|
|
|
|
if($task == 'upload') {
|
|
$post['title'] = $app->input->get( 'phocadownloaduploadtitle', '', 'string' );
|
|
$post['description'] = $app->input->get( 'phocadownloaduploaddescription', '', 'string' );
|
|
$post['catidfiles'] = $app->input->get( 'catidfiles', 0, 'int' );
|
|
$post['description'] = substr($post['description'], 0, (int)$this->t['maxuploadchar']);
|
|
|
|
$post['approved'] = 0;
|
|
$post['published'] = 1;
|
|
$post['owner_id'] = $user->id;
|
|
if ($this->t['enableuseruploadapprove'] == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
$post['author'] = $app->input->get( 'phocadownloaduploadauthor', '', 'string' );
|
|
$post['email'] = $app->input->get( 'phocadownloaduploademail', '', 'string' );
|
|
$post['website'] = $app->input->get( 'phocadownloaduploadwebsite', '', 'string' );
|
|
$post['license'] = $app->input->get( 'phocadownloaduploadlicense', '', 'string' );
|
|
$post['version'] = $app->input->get( 'phocadownloaduploadversion', '', 'string' );
|
|
|
|
if ($post['title'] != '') {$formData->set('title', $post['title']);}
|
|
if ($post['description'] != '') {$formData->set('description', $post['description']);}
|
|
if ($post['author'] != '') {$formData->set('author', $post['author']);}
|
|
if ($post['email'] != '') {$formData->set('email', $post['email']);}
|
|
if ($post['website'] != '') {$formData->set('website', $post['website']);}
|
|
if ($post['license'] != '') {$formData->set('license', $post['license']);}
|
|
if ($post['version'] != '') {$formData->set('version', $post['version']);}
|
|
|
|
//catid
|
|
$returnForm = 0;
|
|
if ($post['catidfiles'] < 1) {
|
|
$this->t['errorcatid'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_SELECT_CATEGORY');
|
|
$returnForm = 1;
|
|
}
|
|
jimport('joomla.mail.helper');
|
|
if ($post['email'] != '' && !MailHelper::isEmailAddress($post['email']) ) {
|
|
$this->t['erroremail'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_ENTER_VALID_EMAIL_ADDRESS');
|
|
$returnForm = 1;
|
|
}
|
|
if ($post['website'] != '' && !PhocaDownloadUtils::isURLAddress($post['website']) ) {
|
|
$this->t['errorwebsite'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_ENTER_VALID_WEBSITE');
|
|
$returnForm = 1;
|
|
}
|
|
|
|
// Upload
|
|
$errUploadMsg = '';
|
|
$redirectUrl = '';
|
|
|
|
$fileArray = Factory::getApplication()->input->files->get( 'Filedata', null, 'raw');
|
|
|
|
if(empty($fileArray)) {
|
|
|
|
$this->t['errorfile'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_ADD_FILE_OR_IF_ADDED_CHECK_IF_IT_HAS_RIGHT_FORMAT_AND_SIZE');
|
|
$returnForm = 1;
|
|
|
|
} else if (isset($fileArray[0]) && $fileArray[0] == ''){
|
|
$this->t['errorfile'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_ADD_FILE_OR_IF_ADDED_CHECK_IF_IT_HAS_RIGHT_FORMAT_AND_SIZE');
|
|
$returnForm = 1;
|
|
$fileArray['name'] = '';
|
|
|
|
} else if (isset($fileArray['name']) && $fileArray['name'] == '') {
|
|
|
|
$this->t['errorfile'] = Text::_('COM_PHOCADOWNLOAD_PLEASE_ADD_FILE_OR_IF_ADDED_CHECK_IF_IT_HAS_RIGHT_FORMAT_AND_SIZE');
|
|
$returnForm = 1;
|
|
}
|
|
|
|
if ($post['title'] == '') {
|
|
$post['title'] = PhocaDownloadFile::removeExtension($fileArray['name']);
|
|
}
|
|
$post['alias'] = PhocaDownloadUtils::getAliasName($post['title']);
|
|
|
|
|
|
if ($returnForm == 0) {
|
|
$errorUploadMsg = '';
|
|
if($model->singleFileUpload($errorUploadMsg, $fileArray, $post)) {
|
|
|
|
if ($this->t['send_mail_upload'] > 0) {
|
|
PhocaDownloadMail::sendMail((int)$this->t['send_mail_upload'], $post['title'], 2);
|
|
}
|
|
|
|
$Itemid = $app->input->get( 'Itemid', 0, 'int');
|
|
$limitStart = $app->input->get( 'limitstart', 0, 'int');
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
$link = 'index.php?option=com_phocadownload&view=user&Itemid='. $Itemid . $limitStartUrl;
|
|
$app->enqueueMessage(Text::_("COM_PHOCADOWNLOAD_SUCCESS_FILE_UPLOADED"), 'success');
|
|
$app->redirect(Route::_($link, false));
|
|
exit;
|
|
} else {
|
|
$this->t['errorfile'] = Text::_('COM_PHOCADOWNLOAD_ERROR_FILE_UPLOADED');
|
|
if ($errorUploadMsg != '') {
|
|
$this->t['errorfile'] .= '<br />' . $errorUploadMsg;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// - - - - - - - - - - -
|
|
// FILES
|
|
// - - - - - - - - - - -
|
|
$this->t['filesitems'] = $model->getDataFiles($user->id);
|
|
$this->t['filestotal'] = $model->getTotalFiles($user->id);
|
|
$this->t['filespagination'] = $model->getPaginationFiles($user->id);
|
|
|
|
$filter_published_files = $app->getUserStateFromRequest( $this->_context_files.'.filter_published','filter_published', '','word');
|
|
$filter_catid_files = $app->getUserStateFromRequest( $this->_context_files.'.filter_catid','filter_catid',0, 'int' );
|
|
$catid_files = $app->getUserStateFromRequest( $this->_context_files. '.catid', 'catid', 0, 'int');
|
|
//$filter_sectionid_files = $app->getUserStateFromRequest( $this->_context_files.'.filter_sectionid', 'filter_sectionid', 0, 'int' );
|
|
$filter_order_files = $app->getUserStateFromRequest( $this->_context_files.'.filter_order','filter_order','a.ordering', 'cmd' );
|
|
$filter_order_Dir_files = $app->getUserStateFromRequest( $this->_context_files.'.filter_order_Dir','filter_order_Dir', '', 'word' );
|
|
$search_files = $app->getUserStateFromRequest( $this->_context_files.'.search', 'search', '', 'string' );
|
|
$search_files = StringHelper::strtolower( $search_files );
|
|
|
|
// build list of categories
|
|
$javascript = 'class="form-control" size="1" onchange="document.phocadownloadfilesform.submit();"';
|
|
|
|
// get list of categories for dropdown filter
|
|
$whereC = array();
|
|
//if ($filter_sectionid_files > 0) {
|
|
// $whereC[] = ' cc.section = '.$db->Quote($filter_sectionid_files);
|
|
//}
|
|
//$whereC[] = "(cc.uploaduserid LIKE '%-1%' OR cc.uploaduserid LIKE '%".(int)$user->id."%')";
|
|
//$whereC[] = "(cc.uploaduserid LIKE '%-1%' OR cc.uploaduserid LIKE '%,{".(int)$user->id."}' OR cc.uploaduserid LIKE '{".(int)$user->id."},%' OR cc.uploaduserid LIKE '%,{".(int)$user->id."},%' OR cc.uploaduserid ={".(int)$user->id."} )";
|
|
$whereC[] = "(cc.uploaduserid LIKE '%-1%' OR cc.uploaduserid LIKE '%,".(int)$user->id."' OR cc.uploaduserid LIKE '".(int)$user->id.",%' OR cc.uploaduserid LIKE '%,".(int)$user->id.",%' OR cc.uploaduserid =".(int)$user->id." )";
|
|
$whereC = ( count( $whereC ) ? ' WHERE '. implode( ' AND ', $whereC ) : '' );
|
|
|
|
// get list of categories for dropdown filter
|
|
$query = 'SELECT cc.id AS value, cc.title AS text, cc.parent_id as parent_id' .
|
|
' FROM #__phocadownload_categories AS cc' .
|
|
$whereC.
|
|
' ORDER BY cc.ordering';
|
|
|
|
$lists_files['catid'] = PhocaDownloadCategory::filterCategory($query, $catid_files, TRUE, TRUE, TRUE);
|
|
|
|
|
|
/*$whereS = array();
|
|
//$whereS[] = "(cc.uploaduserid LIKE '%-1%' OR cc.uploaduserid LIKE '%".(int)$user->id."%')";
|
|
$whereS[] = "(cc.uploaduserid LIKE '%-1%' OR cc.uploaduserid LIKE '%,".(int)$user->id."' OR cc.uploaduserid LIKE '".(int)$user->id.",%' OR cc.uploaduserid LIKE '%,".(int)$user->id.",%' OR cc.uploaduserid =".(int)$user->id." )";
|
|
$whereS[] = 's.published = 1';
|
|
$whereS = ( count( $whereS ) ? ' WHERE '. implode( ' AND ', $whereS ) : '' );
|
|
// sectionid
|
|
$query = 'SELECT s.title AS text, s.id AS value'
|
|
. ' FROM #__phocadownload_sections AS s'
|
|
. ' LEFT JOIN #__phocadownload_categories AS cc ON cc.section = s.id'
|
|
. $whereS
|
|
. ' GROUP BY s.id'
|
|
. ' ORDER BY s.ordering';
|
|
|
|
|
|
|
|
// state filter
|
|
/* $state_files[] = JHtml::_('select.option', '', '- '. JText::_( 'Select State' ) .' -' );
|
|
$state_files[] = HTMLHelper::_('select.option', 'P', Text::_( 'Published' ) );
|
|
$state_files[] = HTMLHelper::_('select.option', 'U', Text::_( 'Unpublished') );
|
|
$lists_image['state'] = JHtml::_('select.genericlist', $state_files, 'filter_published', 'class="form-control" size="1" onchange="document.phocadownloadfilesform.submit();"', 'value', 'text', $filter_published );*/
|
|
|
|
//$lists_files['sectionid'] = PhocaDownloadCategory::filterSection($query, $filter_sectionid_files, TRUE);
|
|
|
|
// state filter
|
|
$lists_files['state'] = HTMLHelper::_('grid.state', $filter_published_files );
|
|
|
|
// table ordering
|
|
$lists_files['order_Dir'] = $filter_order_Dir_files;
|
|
$lists_files['order'] = $filter_order_files;
|
|
|
|
// search filter
|
|
$lists_files['search']= $search_files;
|
|
|
|
$this->t['catidfiles'] = $catid_files;
|
|
|
|
$this->t['filestab'] = 1;
|
|
|
|
// Tabs
|
|
$displayTabs = 0;
|
|
if ((int)$this->t['filestab'] == 0) {
|
|
$currentTab['files'] = -1;
|
|
} else {
|
|
$currentTab['files'] = $displayTabs;
|
|
$displayTabs++;
|
|
}
|
|
|
|
$this->t['displaytabs'] = $displayTabs;
|
|
$this->t['currenttab'] = $currentTab;
|
|
|
|
|
|
// ACTION
|
|
$this->t['action'] = $uri->toString();
|
|
// SEF problem
|
|
$isThereQM = false;
|
|
$isThereQM = preg_match("/\?/i", $this->t['action']);
|
|
if ($isThereQM) {
|
|
$amp = '&';
|
|
} else {
|
|
$amp = '?';
|
|
}
|
|
$this->t['actionamp'] = htmlspecialchars($this->t['action']) . $amp;
|
|
$this->t['istheretab'] = false;
|
|
$this->t['istheretab'] = preg_match("/tab=/i", $this->t['action']);
|
|
|
|
|
|
$this->t['ps'] = '&tab='. $this->t['currenttab']['files']
|
|
. '&limitstart='.$this->t['filespagination']->limitstart;
|
|
|
|
|
|
// ASIGN
|
|
//$this->assignRef( 'listsfiles', $lists_files);
|
|
$this->t['listsfiles'] = $lists_files;
|
|
//$this->assignRef( 'formdata', $formData);
|
|
$this->t['formdata'] = $formData;
|
|
//$this->assignRef( 'tmpl', $this->t);
|
|
//$this->assignRef( 'params', $this->t['p']);
|
|
//$session = JFactory::getSession();
|
|
//$this->assignRef('session', $session);
|
|
|
|
// Bootstrap 3 Layout
|
|
/*$this->t['display_bootstrap3_layout'] = $this->t['p']->get( 'display_bootstrap3_layout', 0 );
|
|
if ($this->t['display_bootstrap3_layout'] > 0) {
|
|
|
|
HTMLHelper::_('jquery.framework', false);
|
|
if ((int)$this->t['display_bootstrap3_layout'] == 2) {
|
|
HTMLHelper::stylesheet('media/com_phocadownload/bootstrap/css/bootstrap.min.css' );
|
|
HTMLHelper::stylesheet('media/com_phocadownload/bootstrap/css/bootstrap.extended.css' );
|
|
}
|
|
// Loaded by jquery.framework;
|
|
//$document->addScript(JUri::root(true).'/media/com_phocadownload/bootstrap/js/bootstrap.min.js');
|
|
/* $document->addScript(Uri::root(true).'/media/com_phocadownload/js/jquery.equalheights.min.js');
|
|
$document->addScriptDeclaration(
|
|
'jQuery(window).load(function(){
|
|
jQuery(\'.ph-thumbnail\').equalHeights();
|
|
});');*//*
|
|
}
|
|
|
|
if ($this->t['display_bootstrap3_layout'] > 0) {
|
|
parent::display('bootstrap');
|
|
} else {
|
|
parent::display($tpl);
|
|
}*/
|
|
|
|
parent::display($tpl);
|
|
}
|
|
}
|
|
?>
|