1148 lines
40 KiB
PHP
1148 lines
40 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
|
|
*/
|
|
defined('_JEXEC') or die();
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Router\Route;
|
|
use Joomla\CMS\Session\Session;
|
|
use Joomla\CMS\Client\ClientHelper;
|
|
use Joomla\CMS\Component\ComponentHelper;
|
|
use Joomla\CMS\Filesystem\Folder;
|
|
use Joomla\CMS\Plugin\PluginHelper;
|
|
phocagalleryimport('phocagallery.access.access');
|
|
jimport( 'joomla.filesystem.file' );
|
|
jimport( 'joomla.filesystem.folder' );
|
|
phocagalleryimport('phocagallery.file.file');
|
|
phocagalleryimport('phocagallery.file.fileupload');
|
|
phocagalleryimport('phocagallery.file.fileuploadfront');
|
|
phocagalleryimport('phocagallery.file.filefolder');
|
|
phocagalleryimport('phocagallery.rate.ratecategory');
|
|
phocagalleryimport('phocagallery.comment.comment');
|
|
phocagalleryimport('phocagallery.comment.commentcategory');
|
|
phocagalleryimport('phocagallery.upload.uploadfront');
|
|
phocagalleryimport('phocagallery.user.user');
|
|
phocagalleryimport('phocagallery.youtube.youtube');
|
|
|
|
class PhocaGalleryControllerCategory extends PhocaGalleryController
|
|
{
|
|
|
|
function display($cachable = false, $urlparams = false) {
|
|
if ( ! Factory::getApplication()->input->get( 'view' ) ) {
|
|
$this->input->set('view', 'category' );
|
|
}
|
|
parent::display($cachable, $urlparams);
|
|
}
|
|
|
|
function remove() {
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
$view = $this->input->get('view', '');
|
|
$id = $this->input->get( 'removeid', '', 'int');
|
|
$catid = $this->input->get( 'id', '', 'string');// ID of category
|
|
$Itemid = $this->input->get('Itemid', '');
|
|
$limitStart = $this->input->get('limitstart', 0);
|
|
|
|
$catid = (int)$catid;
|
|
$id = (int)$id;
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
// Get catid of an id in case catid will be not send (SEF)
|
|
$catidAlias = $catid; // because of JRoute redirect
|
|
if ($id > 0 && $catid == '') {
|
|
$catidObject = $model->getCategoryIdFromImageId($id);
|
|
$catid = (int)$catidObject->catid;
|
|
$catidAliasObject = $model->getCategoryAlias($catid);
|
|
if ($catidAliasObject->alias !='') {
|
|
$catidAlias = $catid . ':' . $catidAliasObject->alias;
|
|
}
|
|
}
|
|
|
|
// USER RIGHT - DELETE - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayDelete = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayDelete = PhocaGalleryAccess::getUserRight('deleteuserid', $catAccess->deleteuserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - -
|
|
|
|
if ($view != 'category') {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ((int)$id < 1) {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_ERROR_IMAGE_NOT_EXISTS'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ($rightDisplayDelete == 1) {
|
|
if(!$model->delete((int)$id)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_DELETING_ITEM');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_DELETING_ITEM');
|
|
}
|
|
} else {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
|
|
exit;
|
|
}
|
|
|
|
$countItem = $model->getCountItem((int)$catid, $rightDisplayDelete);
|
|
if ($countItem) {
|
|
if ((int)$countItem[0] == $limitStart) {
|
|
$limitStart = 0;
|
|
}
|
|
} else {
|
|
$limitStart = 0;
|
|
}
|
|
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&Itemid='. $Itemid . $limitStartUrl, false));
|
|
}
|
|
|
|
function publish() {
|
|
$app = Factory::getApplication();
|
|
|
|
$user = Factory::getUser();
|
|
$view = $this->input->get('view', '', 'string');
|
|
$id = $this->input->get( 'publishid', '', 'int');
|
|
$catid = $this->input->get('id', '', 'string');// ID of category
|
|
$Itemid = $this->input->get('Itemid', '', 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$id = (int)$id;
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
// Get catid of an id in case catid will be not send (SEF)
|
|
$catidAlias = $catid; // because of JRoute redirect
|
|
if ($id > 0 && $catid == '') {
|
|
$catidObject = $model->getCategoryIdFromImageId($id);
|
|
$catid = (int)$catidObject->catid;
|
|
$catidAliasObject = $model->getCategoryAlias($catid);
|
|
if ($catidAliasObject->alias !='') {
|
|
$catidAlias = $catid . ':' . $catidAliasObject->alias;
|
|
}
|
|
}
|
|
|
|
// USER RIGHT - DELETE - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayDelete = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayDelete = PhocaGalleryAccess::getUserRight('deleteuserid', $catAccess->deleteuserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - -
|
|
|
|
if ($view != 'category') {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ((int)$id < 1) {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_ERROR_IMAGE_NOT_EXISTS'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ($rightDisplayDelete == 1) {
|
|
if(!$model->publish((int)$id, 1)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_PUBLISHING_ITEM');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_PUBLISHING_ITEM');
|
|
}
|
|
} else {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
|
|
exit;
|
|
}
|
|
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&Itemid='. $Itemid . $limitStartUrl, false));
|
|
}
|
|
|
|
function unpublish() {
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
$view = $this->input->get('view', '', 'string');
|
|
$id = $this->input->get( 'publishid', '', 'int');
|
|
$catid = $this->input->get('id', '', 'string');// ID of category
|
|
$Itemid = $this->input->get('Itemid', '', 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$id = (int)$id;
|
|
$catid = (int)$catid;
|
|
$model = $this->getModel('category');
|
|
|
|
|
|
|
|
// Get catid of an id in case catid will be not send (SEF)
|
|
$catidAlias = $catid; // because of JRoute redirect
|
|
if ($id > 0 && $catid == '') {
|
|
$catidObject = $model->getCategoryIdFromImageId($id);
|
|
$catid = (int)$catidObject->catid;
|
|
$catidAliasObject = $model->getCategoryAlias($catid);
|
|
if ($catidAliasObject->alias !='') {
|
|
$catidAlias = $catid . ':' . $catidAliasObject->alias;
|
|
}
|
|
}
|
|
|
|
// USER RIGHT - DELETE - - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayDelete = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayDelete = PhocaGalleryAccess::getUserRight('deleteuserid', $catAccess->deleteuserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
|
|
if ($view != 'category') {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ((int)$id < 1) {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_ERROR_IMAGE_NOT_EXISTS'), 'error');
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ($rightDisplayDelete == 1) {
|
|
if(!$model->publish((int)$id, 0)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_UNPUBLISHING_ITEM');
|
|
} else {
|
|
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_UNPUBLISHING_ITEM');
|
|
}
|
|
} else {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
|
|
exit;
|
|
}
|
|
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&Itemid='. $Itemid . $limitStartUrl, false) );
|
|
}
|
|
|
|
/*
|
|
* Java Upload
|
|
*/
|
|
/*
|
|
function javaupload() {
|
|
$app = Factory::getApplication();
|
|
Session::checkToken( 'request' ) or jexit( 'Invalid Token' );
|
|
$errUploadMsg = '';
|
|
$redirectUrl = '';
|
|
|
|
if (!$this->_realJavaUpload($errUploadMsg, $redirectUrl) ) {
|
|
exit( 'ERROR: '.$errUploadMsg);
|
|
} else {
|
|
exit( 'SUCCESS');
|
|
}
|
|
}
|
|
|
|
function _realJavaUpload(&$errUploadMsg, &$redirectUrl) {
|
|
$app = Factory::getApplication();
|
|
Session::checkToken( 'request' ) or jexit( 'Invalid Token' );
|
|
foreach ($ FILES as $file => $fileArray) {
|
|
echo('File key: '. $file . "\n");
|
|
foreach ($fileArray as $item=>$val) {
|
|
echo(' Data received: ' . $item.'=>'.$val . "\n");
|
|
}
|
|
if (!$this->_singleFileUpload($errUploadMsg, $fileArray, $redirectUrl)) {
|
|
$errUploadMsg = Text::_($errUploadMsg);
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
*/
|
|
/*
|
|
function javaupload() {
|
|
|
|
Session::checkToken( 'request' ) or exit( 'ERROR: '. Text::_('COM_PHOCAGALLERY_INVALID_TOKEN'));
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
|
|
$return = $this->input->get('return-url', null, 'base64');
|
|
$format = $this->input->get('format', 'html', 'cmd');
|
|
$viewBack = $this->input->get('viewback', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
$catid = $this->input->get('id', '', 'string');
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$catid = (int)$catid;
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
|
|
// USER RIGHT - UPLOAD - - - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayUpload = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayUpload = PhocaGalleryAccess::getUserRight('uploaduserid', $catAccess->uploaduserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
// USER RIGHT - FOLDER - - - - - - - - - - - -
|
|
$rightFolder = '';
|
|
|
|
if (isset($catAccess->userfolder)) {
|
|
$rightFolder = $catAccess->userfolder;
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
if ($rightDisplayUpload == 1) {
|
|
|
|
if ($rightFolder == '') {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_DEFINED'));
|
|
return false;
|
|
}
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS'));
|
|
return false;
|
|
}
|
|
|
|
// Check the size of all images by users
|
|
/* $maxUserImageSize = (int)$paramsC->get( 'user_images_max_size', 20971520 );
|
|
$allFileSize = PhocaGalleryFileUploadFront::getSizeAllOriginalImages($file, $this->_user->id);
|
|
|
|
if ($maxUserImageSize > 0 && (int) $allFileSize > $maxUserImageSize) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_WARNING_USERIMAGES_TOOLARGE');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}*/
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
/* $this->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
$this->input->set('return-url', base64_encode($return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realJavaUpload(1);
|
|
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerCategory::save((int)$catid, $fileName, false, $succeeded, $errUploadMsg, false)) {
|
|
//$app->enqueueMessage(JText::_('COM_PHOCAGALLERY_SUCCESS_FILE_UPLOAD'));
|
|
exit( 'SUCCESS');
|
|
return true;
|
|
} else {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_ERROR_UNABLE_TO_UPLOAD_FILE'));
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
return false;
|
|
}
|
|
}*/
|
|
|
|
function upload() {
|
|
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
|
|
$return = $this->input->get('return-url', null, 'base64');
|
|
$format = $this->input->get('format', 'html', 'cmd');
|
|
$viewBack = $this->input->get('viewback', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
$catid = $this->input->get('id', '', 'string');
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
|
|
$catidAlias = $catid;// for return
|
|
$catid = (int)$catid;
|
|
// Set the limistart (TO DO)
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
|
|
|
|
$return = Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&tab='.$tab.'&Itemid='.$Itemid.$limitStartUrl, false);
|
|
$redirectUrl = $return;
|
|
$model = $this->getModel('category');
|
|
|
|
// USER RIGHT - UPLOAD - - - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayUpload = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayUpload = PhocaGalleryAccess::getUserRight('uploaduserid', $catAccess->uploaduserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
// USER RIGHT - FOLDER - - - - - - - - - - - -
|
|
$rightFolder = '';
|
|
if (isset($catAccess->userfolder)) {
|
|
$rightFolder = $catAccess->userfolder;
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
if ($rightDisplayUpload == 1) {
|
|
|
|
if ($rightFolder == '') {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_DEFINED');
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS');
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
// Check the size of all images by users
|
|
/* $maxUserImageSize = (int)$paramsC->get( 'user_images_max_size', 20971520 );
|
|
$allFileSize = PhocaGalleryFileUploadFront::getSizeAllOriginalImages($file, $this->_user->id);
|
|
|
|
if ($maxUserImageSize > 0 && (int) $allFileSize > $maxUserImageSize) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_WARNING_USERIMAGES_TOOLARGE');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}*/
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
$this->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
$this->input->set('return-url', base64_encode($return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realSingleUpload(1);
|
|
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerCategory::save((int)$catid, $fileName, $return, $succeeded, $errUploadMsg, false)) {
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($redirectUrl);
|
|
return true;
|
|
} else {
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION');
|
|
$redirectUrl = Route::_('index.php?option=com_users&view=login', false);
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function ytbupload() {
|
|
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
|
|
$return = $this->input->get('return-url', null, 'base64');
|
|
$format = $this->input->get('format', 'html', 'cmd');
|
|
$viewBack = $this->input->get('viewback', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
$catid = $this->input->get('id', '', 'string');
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid',0 , 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$catid = (int)$catid;
|
|
|
|
$return = Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&tab='.$tab.'&Itemid='.$Itemid.$limitStartUrl, false);
|
|
$redirectUrl = $return;
|
|
|
|
if ((int)$catid < 1) {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_PLEASE_SELECT_CATEGORY'), 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
$catidAlias = $catid;// for return
|
|
// Set the limistart (TO DO)
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
|
|
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
|
|
|
|
|
|
// USER RIGHT - UPLOAD - - - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayUpload = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
|
|
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayUpload = PhocaGalleryAccess::getUserRight('uploaduserid', $catAccess->uploaduserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
// USER RIGHT - FOLDER - - - - - - - - - - - -
|
|
$rightFolder = '';
|
|
if (isset($catAccess->userfolder)) {
|
|
$rightFolder = $catAccess->userfolder;
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
|
|
if ($rightDisplayUpload == 1) {
|
|
|
|
if ($rightFolder == '') {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_DEFINED');
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS');
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
$this->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
$this->input->set('return-url', base64_encode($return));// set return url
|
|
//$fileName = PhocaGalleryFileUpload::realSingleUpload(2);
|
|
|
|
|
|
|
|
|
|
$ytbLink = $this->input->get( 'phocagalleryytbuploadlink', '', 'string');
|
|
|
|
$errorYtbMsg = '';
|
|
$ytbData = PhocaGalleryYoutube::importYtb($ytbLink, $rightFolder . '/', $errorYtbMsg);
|
|
|
|
|
|
if ($ytbData && isset($ytbData['filename'])) {
|
|
if(PhocaGalleryControllerCategory::save((int)$catid, $ytbData['filename'], $return, $succeeded, $errUploadMsg, false, $ytbData)) {
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($redirectUrl);
|
|
return true;
|
|
} else {
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
} else {
|
|
$app->enqueueMessage($errorYtbMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
|
|
}
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerUser::save((int)$catid, $fileName, $return, $succeeded, $errUploadMsg, false)) {
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($redirectUrl);
|
|
return true;
|
|
} else {
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION');
|
|
$app->enqueueMessage($errUploadMsg, 'error');
|
|
$app->redirect($this->_loginurl);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function multipleupload() {
|
|
|
|
|
|
$app = Factory::getApplication();
|
|
$app->allowCache(false);
|
|
|
|
|
|
|
|
// Chunk Files
|
|
header('Content-type: text/plain; charset=UTF-8');
|
|
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
|
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
|
header("Cache-Control: no-store, no-cache, must-revalidate");
|
|
header("Cache-Control: post-check=0, pre-check=0", false);
|
|
header("Pragma: no-cache");
|
|
|
|
|
|
|
|
|
|
|
|
Session::checkToken( 'request' ) or jexit(
|
|
json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 100,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_INVALID_TOKEN')))
|
|
);
|
|
|
|
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
$return = $this->input->get('return-url', null, 'base64');
|
|
$format = $this->input->get('format', 'html', 'cmd');
|
|
$viewBack = $this->input->get('viewback', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
$catid = $this->input->get('id', '', 'string');
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
|
|
$model = $this->getModel('category');
|
|
$catid = (int)$catid;
|
|
|
|
|
|
// USER RIGHT - UPLOAD - - - - - - - - - - -
|
|
// 2, 2 means that user access will be ignored in function getUserRight for display Delete button
|
|
$rightDisplayUpload = 0;
|
|
|
|
$catAccess = PhocaGalleryAccess::getCategoryAccess((int)$catid);
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayUpload = PhocaGalleryAccess::getUserRight('uploaduserid', $catAccess->uploaduserid, 2, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
// USER RIGHT - FOLDER - - - - - - - - - - - -
|
|
$rightFolder = '';
|
|
if (isset($catAccess->userfolder)) {
|
|
$rightFolder = $catAccess->userfolder;
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
if ($rightDisplayUpload == 1) {
|
|
|
|
|
|
|
|
if ($rightFolder == '') {
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 104,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_DEFINED'))));
|
|
return false;
|
|
}
|
|
|
|
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
|
|
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 104,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS'))));
|
|
return false;
|
|
}
|
|
|
|
|
|
// Check the size of all images by users
|
|
/* $maxUserImageSize = (int)$paramsC->get( 'user_images_max_size', 20971520 );
|
|
$allFileSize = PhocaGalleryFileUploadFront::getSizeAllOriginalImages($file, $this->_user->id);
|
|
|
|
if ($maxUserImageSize > 0 && (int) $allFileSize > $maxUserImageSize) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_WARNING_USERIMAGES_TOOLARGE');
|
|
$app->red irect($redirectUrl, $errUploadMsg);
|
|
return false;
|
|
}*/
|
|
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
$this->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
$this->input->set('return-url', base64_encode((string)$return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realMultipleUpload(1);
|
|
|
|
|
|
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerCategory::save((int)$catid, $fileName, false, $succeeded, $errUploadMsg, false)) {
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'OK', 'code' => 200,
|
|
'message' => Text::_('COM_PHOCAGALERY_SUCCESS').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_IMAGES_UPLOADED'))));
|
|
return true;
|
|
} else {
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 104,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_ERROR_UNABLE_TO_UPLOAD_FILE'))));
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 104,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'))));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function save($catid, $filename, $return, &$succeeded, &$errSaveMsg, $redirect=true, $ytbData = array()) {
|
|
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
|
|
$post['filename'] = $filename;
|
|
if (isset($ytbData['link'])) {
|
|
$post['videocode'] = $ytbData['link'];
|
|
}
|
|
if (isset($ytbData['title'])) {
|
|
$post['title'] = $ytbData['title'];
|
|
} else {
|
|
$post['title'] = $this->input->get( 'phocagalleryuploadtitle', '', 'string' );
|
|
}
|
|
if (isset($ytbData['desc'])) {
|
|
$post['description'] = $ytbData['desc'];
|
|
} else {
|
|
$post['description'] = $this->input->get( 'phocagalleryuploaddescription', '', 'string' );
|
|
}
|
|
$post['catid'] = $catid;
|
|
$post['published'] = 1;
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxUploadChar = $paramsC->get( 'max_upload_char', 1000 );
|
|
if (isset($ytbData['desc'])) {
|
|
} else {
|
|
$post['description'] = substr($post['description'], 0, (int)$maxUploadChar);
|
|
}
|
|
$enableUserImageApprove = (int)$paramsC->get( 'enable_userimage_approve', 0 );
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
$post['userid'] = $user->id;
|
|
|
|
$post['approved'] = 0;
|
|
if ($enableUserImageApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
|
|
|
|
$model = $this->getModel( 'category' );
|
|
|
|
|
|
if ($model->store($post, $return)) {
|
|
$succeeded = true;
|
|
$errSaveMsg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_ITEM' );
|
|
} else {
|
|
$succeeded = false;
|
|
$errSaveMsg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_ITEM' );
|
|
}
|
|
|
|
if ($redirect) {
|
|
$app->enqueueMessage( $errSaveMsg);
|
|
$app->redirect($return);
|
|
exit;
|
|
}
|
|
|
|
if ($succeeded) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
function rate() {
|
|
$app = Factory::getApplication();
|
|
|
|
$user = Factory::getUser();
|
|
$view = $this->input->get('view', '', 'string');
|
|
$catid = $this->input->get('id', '', 'string');
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$tab = $this->input->get('tab', '', 'int');
|
|
$catid = (int)$catid;
|
|
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
|
|
$post['catid'] = (int)$catid;
|
|
$post['userid'] = $user->id;
|
|
$post['rating'] = (int)$rating;
|
|
|
|
$catidAlias = $catid; //Itemid
|
|
if ($view != 'category') {
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
}
|
|
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
$checkUserVote = PhocaGalleryRateCategory::checkUserVote( $post['catid'], $post['userid'] );
|
|
|
|
// User has already rated this category
|
|
if ($checkUserVote) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_RATING_CATEGORY_ALREADY_RATED');
|
|
} else {
|
|
if ((int)$post['rating'] < 1 || (int)$post['rating'] > 5) {
|
|
$app->redirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
exit;
|
|
}
|
|
|
|
if ($access && $user->id > 0) {
|
|
if(!$model->rate($post)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_RATING_CATEGORY');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_RATING_CATEGORY');
|
|
// Features added by Bernard Gilly - alphaplug.com
|
|
// load external plugins
|
|
//$dispatcher = JDispatcher::getInstance();
|
|
PluginHelper::importPlugin('phocagallery');
|
|
$results = Factory::getApplication()->triggerEvent('onVoteCategory', array($catid, $rating, $user->id ) );
|
|
}
|
|
} else {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// Limit Start
|
|
$countItem = $model->getCountItem((int)$catid);
|
|
if ($countItem) {
|
|
if ((int)$countItem[0] == $limitStart) {
|
|
$limitStart = 0;
|
|
}
|
|
} else {
|
|
$limitStart = 0;
|
|
}
|
|
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
|
|
$app->enqueueMessage( $msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false) );
|
|
}
|
|
|
|
function comment() {
|
|
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
phocagalleryimport('phocagallery.comment.comment');
|
|
phocagalleryimport('phocagallery.comment.commentcategory');
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
|
|
|
|
$catid = $this->input->get('catid', '', 'string');
|
|
$post['title'] = $this->input->get('phocagallerycommentstitle', '', 'string' );
|
|
$post['comment']= $this->input->get('phocagallerycommentseditor', '', 'string');
|
|
$view = $this->input->get('view', '', 'string');
|
|
$return = $this->input->get('return-url', null, 'base64');
|
|
$format = $this->input->get('format', 'html', 'cmd');
|
|
$viewBack = $this->input->get('viewback', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
|
|
$rating = $this->input->get('rating', '', 'string');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCommentChar = $paramsC->get( 'max_comment_char', 1000 );
|
|
// Maximum of character, they will be saved in database
|
|
$post['comment'] = substr($post['comment'], 0, (int)$maxCommentChar);
|
|
|
|
// Close Tags
|
|
$post['comment'] = PhocaGalleryComment::closeTags($post['comment'], '[u]', '[/u]');
|
|
$post['comment'] = PhocaGalleryComment::closeTags($post['comment'], '[i]', '[/i]');
|
|
$post['comment'] = PhocaGalleryComment::closeTags($post['comment'], '[b]', '[/b]');
|
|
|
|
|
|
$post['catid'] = (int)$catid;
|
|
$post['userid'] = $user->id;
|
|
|
|
$catidAlias = $catid; //Itemid
|
|
if ($view != 'category') {
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery', false) );
|
|
}
|
|
|
|
$model = $this->getModel('category');
|
|
|
|
$checkUserComment = PhocaGalleryCommentCategory::checkUserComment( $post['catid'], $post['userid'] );
|
|
|
|
// User has already submitted a comment
|
|
if ($checkUserComment) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_COMMENT_ALREADY_SUBMITTED');
|
|
} else {
|
|
// If javascript will not protect the empty form
|
|
$msg = '';
|
|
$emptyForm = 0;
|
|
if ($post['title'] == '') {
|
|
$msg .= Text::_('COM_PHOCAGALLERY_ERROR_COMMENT_TITLE') . ' ';
|
|
$emtyForm = 1;
|
|
}
|
|
if ($post['comment'] == '') {
|
|
$msg .= Text::_('COM_PHOCAGALLERY_ERROR_COMMENT_COMMENT');
|
|
$emtyForm = 1;
|
|
}
|
|
if ($emptyForm == 0) {
|
|
if ($access > 0 && $user->id > 0) {
|
|
if(!$model->comment($post)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_COMMENT_SUBMITTING');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_COMMENT_SUBMIT');
|
|
// Features by Bernard Gilly - alphaplug.com
|
|
// load external plugins
|
|
//$dispatcher = JDispatcher::getInstance();
|
|
PluginHelper::importPlugin('phocagallery');
|
|
$results = Factory::getApplication()->triggerEvent('onCommentCategory', array($catid, $post['title'], $post['comment'], $user->id ) );
|
|
}
|
|
} else {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Limit Start
|
|
$countItem = $model->getCountItem((int)$catid);
|
|
if ($countItem) {
|
|
if ((int)$countItem[0] == $limitStart) {
|
|
$limitStart = 0;
|
|
}
|
|
} else {
|
|
$limitStart = 0;
|
|
}
|
|
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
|
|
$app->enqueueMessage( $msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$catidAlias.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false) );
|
|
}
|
|
|
|
function createsubcategory() {
|
|
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
$task = $this->input->get( 'task', '', 'string');
|
|
$post['title'] = $this->input->get( 'subcategoryname', '', 'string' );
|
|
$post['description'] = $this->input->get( 'phocagallerycreatesubcatdescription', '', 'string' );
|
|
$post['parent_id'] = $this->input->get('parentcategoryid',0, 'int' );
|
|
|
|
|
|
$task = $this->input->get('task', '', 'string');
|
|
$post['title'] = $this->input->get('subcategoryname', '' , 'string');
|
|
$post['description']= $this->input->get('phocagallerycreatesubcatdescription', '', 'string');
|
|
$post['parent_id']= $this->input->get('parentcategoryid', 0, 'int');
|
|
$catid = $this->input->get('catid', '', 'string');
|
|
$tab = $this->input->get('tab', 0, 'int');
|
|
$Itemid = $this->input->get('Itemid', 0, 'int');
|
|
|
|
$limitStart = $this->input->get('limitstart', 0, 'int');
|
|
$catid = (int)$catid;
|
|
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCreateCatChar = $paramsC->get( 'max_create_cat_char', 1000 );
|
|
$enableUserSubCatApprove = $paramsC->get( 'enable_usersubcat_approve', 0 );
|
|
$enableDirectSubCat = $paramsC->get( 'enable_direct_subcat', 0 );
|
|
$default_access = $paramsC->get( 'default_access', 1 );
|
|
$default_accessuserid = $paramsC->get( 'default_accessuserid', '' );
|
|
if (!empty($default_accessuserid)) {
|
|
$default_accessuserid = implode(',', $default_accessuserid);
|
|
}
|
|
|
|
$post['description'] = substr($post['description'], 0, (int)$maxCreateCatChar);
|
|
$post['alias'] = $post['title'];//PhocaGalleryText::getAliasName($post['title']);
|
|
$post['aliasfolder'] = PhocaGalleryText::getAliasName($post['title']);
|
|
|
|
$model = $this->getModel('user');
|
|
$userSubCatCount = $paramsC->get( 'user_subcat_count', 5 );
|
|
$user = Factory::getUser();
|
|
$post['approved'] = 0;
|
|
$id = $catid;
|
|
|
|
|
|
if ($enableUserSubCatApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
if ($limitStart > 0) {
|
|
$limitStartUrl = '&limitstart='.$limitStart;
|
|
} else {
|
|
$limitStartUrl = '';
|
|
}
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
$app = Factory::getApplication();
|
|
// USER IS NOT LOGGED
|
|
if (!$access) {
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
if ($enableDirectSubCat != 1) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION' );
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$id.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false));
|
|
return;
|
|
}
|
|
|
|
if ((int)$post['parent_id'] < 1) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_SELECTED' );
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$id.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false));
|
|
return;
|
|
}
|
|
|
|
// $isOwnerCategory = $model->isOwnerCategory($this->_user->id, (int)$post['parent_id']);
|
|
// $limitStartUrl = $this->getLimitStartUrl(0, 'subcat', (int)$isOwnerCategory );
|
|
// if(!$isOwnerCategory) {
|
|
// $msg = JText::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_ASSIGNED_TO_USER' );
|
|
// $app->redirect(JRoute::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false), $msg);
|
|
// exit;
|
|
// }
|
|
|
|
$subCatCount = $model->getCountUserSubCat($user->id);
|
|
$subCatCount = (int)$subCatCount + 1;
|
|
if ((int)$subCatCount > (int)$userSubCatCount) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_MAX_SUBCAT_COUNT_REACHED' );
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$id.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false) );
|
|
return;
|
|
}
|
|
|
|
$ownerMainCategory = $model->getOwnerMainCategory($user->id);
|
|
|
|
|
|
if (!$ownerMainCategory) {
|
|
// - - - - -
|
|
// NEW
|
|
// - - - - -
|
|
$msg = '';
|
|
// Create an user folder on the server
|
|
$userFolder = PhocaGalleryText::getAliasName($user->username) .'-'.substr($post['aliasfolder'], 0, 10) .'-'. substr(md5(uniqid(time())), 0, 4);
|
|
$errorMsg = '';
|
|
$createdFolder = PhocaGalleryFileFolder::createFolder($userFolder, $errorMsg);
|
|
if ($errorMsg != '') {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_FOLDER_CREATING'). ': ' . Text::_($errorMsg);
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$id.'&tab='.$tab.'&Itemid='. $Itemid . $limitStartUrl, false));
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$userFolder = $ownerMainCategory->userfolder;
|
|
}
|
|
|
|
if ($post['title'] != '') {
|
|
|
|
$post['access'] = (int)$default_access;
|
|
$post['accessuserid'] = $default_accessuserid;
|
|
//$post['access'] = 0;
|
|
$post['image_position'] = 'left';
|
|
$post['published'] = 1;
|
|
//$post['accessuserid'] = '-1';
|
|
$post['uploaduserid'] = $user->id;
|
|
$post['deleteuserid'] = $user->id;
|
|
$post['userfolder'] = $userFolder;
|
|
$post['owner_id'] = $user->id;
|
|
|
|
|
|
$id = $model->store($post);
|
|
if ($id && $id > 0) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_CREATING_CATEGORY' );
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_CREATING_CATEGORY' );
|
|
}
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_TITLE' );
|
|
}
|
|
$app->enqueueMessage($msg);
|
|
|
|
|
|
$this->setRedirect( Route::_('index.php?option=com_phocagallery&view=category&id='.$id.'&Itemid='. $Itemid . $limitStartUrl, false) );
|
|
return;
|
|
}
|
|
}
|
|
?>
|