1393 lines
50 KiB
PHP
1393 lines
50 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\Factory;
|
|
use Joomla\CMS\Component\ComponentHelper;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Uri\Uri;
|
|
use Joomla\CMS\Router\Route;
|
|
use Joomla\CMS\Object\CMSObject;
|
|
use Joomla\CMS\Session\Session;
|
|
use Joomla\Registry\Registry;
|
|
use Joomla\CMS\Client\ClientHelper;
|
|
use Joomla\CMS\Filesystem\File;
|
|
use Joomla\CMS\Filesystem\Path;
|
|
use Joomla\CMS\Plugin\PluginHelper;
|
|
use Joomla\CMS\Filesystem\Folder;
|
|
phocagalleryimport('phocagallery.access.access');
|
|
jimport( 'joomla.filesystem.folder' );
|
|
jimport( 'joomla.filesystem.file' );
|
|
phocagalleryimport('phocagallery.file.file');
|
|
phocagalleryimport('phocagallery.file.fileupload');
|
|
phocagalleryimport('phocagallery.file.filefolder');
|
|
phocagalleryimport('phocagallery.file.filethumbnail');
|
|
phocagalleryimport('phocagallery.comment.comment');
|
|
phocagalleryimport('phocagallery.comment.commentcategory');
|
|
phocagalleryimport('phocagallery.upload.uploadfront');
|
|
phocagalleryimport('phocagallery.user.user');
|
|
phocagalleryimport('phocagallery.youtube.youtube');
|
|
class PhocaGalleryControllerUser extends PhocaGalleryController
|
|
{
|
|
var $_user = null;
|
|
var $_view = 'user';
|
|
var $_tab = 0;
|
|
var $_limitstartsubcat = 0;
|
|
var $_limitstartimage = 0;
|
|
var $_itemid = 0;
|
|
var $_loginurl;
|
|
var $_loginstr;
|
|
var $_url;
|
|
|
|
function __construct() {
|
|
parent::__construct();
|
|
|
|
$app = Factory::getApplication();
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
// UCP is disabled (security reasons)
|
|
|
|
$enable_user_cp = $paramsC->get( 'enable_user_cp', 0 );
|
|
if ($enable_user_cp == 0) {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_UCP_DISABLED'), 'error');
|
|
$app->redirect( Uri::base(true) );
|
|
exit;
|
|
}
|
|
|
|
// Category
|
|
$this->registerTask( 'createcategory', 'createcategory' );//
|
|
|
|
// Subcategory
|
|
$this->registerTask( 'createsubcategory', 'createsubcategory' );//
|
|
$this->registerTask( 'editsubcategory', 'editsubcategory' );//
|
|
|
|
$this->registerTask( 'publishsubcat', 'publishsubcat' );//
|
|
$this->registerTask( 'unpublishsubcat', 'unpublishsubcat' );//
|
|
$this->registerTask( 'orderupsubcat', 'ordersubcat' );//
|
|
$this->registerTask( 'orderdownsubcat', 'ordersubcat' );//
|
|
$this->registerTask( 'saveordersubcat', 'saveordersubcat' );//
|
|
$this->registerTask( 'removesubcat', 'removesubcat' );//
|
|
|
|
// Image
|
|
$this->registerTask( 'upload', 'upload' );//
|
|
$this->registerTask( 'javaupload', 'javaupload' );//
|
|
$this->registerTask( 'ytbupload', 'ytbupload' );//
|
|
$this->registerTask( 'uploadavatar', 'uploadavatar' );//
|
|
$this->registerTask( 'editimage', 'editimage' );
|
|
|
|
$this->registerTask( 'publishimage', 'publishimage' );//
|
|
$this->registerTask( 'unpublishimage', 'unpublishimage' );//
|
|
$this->registerTask( 'orderupimage', 'orderimage' );//
|
|
$this->registerTask( 'orderdownimage', 'orderimage' );//
|
|
$this->registerTask( 'saveorderimage', 'saveorderimage' );//
|
|
$this->registerTask( 'removeimage', 'removeimage' );//
|
|
|
|
// Get variables
|
|
$this->_user = Factory::getUser();
|
|
$this->_view = $this->input->get( 'view', '', 'string' );
|
|
$this->_tab = $this->input->get( 'tab', 0, 'int' );
|
|
$this->_limitstartsubcat = $this->input->get( 'limitstartsubcat', 0, 'int' );
|
|
$this->_limitstartimage = $this->input->get( 'limitstartimage', 0, 'int' );
|
|
$this->_itemid = $this->input->get( 'Itemid', 0, 'int' );
|
|
|
|
$this->_loginurl = Route::_('index.php?option=com_users&view=login', false);
|
|
$this->_loginstr = Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION');
|
|
$this->_url = 'index.php?option=com_phocagallery&view=user&tab='.$this->_tab.'&Itemid='. $this->_itemid;
|
|
|
|
}
|
|
|
|
function display($cachable = false, $urlparams = Array()) {
|
|
if ( ! Factory::getApplication()->input->get('view') ) {
|
|
Factory::getApplication()->input->set('view', 'user' );
|
|
}
|
|
parent::display($cachable, $urlparams);
|
|
}
|
|
|
|
/*
|
|
* Handle limitstart (images/subcategories - we are in tab view so both need to be solved at once)
|
|
*/
|
|
function getLimitStartUrl($id = 0, $type = 'subcat', $catid = 0) {
|
|
|
|
$model = $this->getModel('user');
|
|
$limitStartUrl = new CMSObject();
|
|
$limitStartUrl->subcat = '&limitstartsubcat='.$this->_limitstartsubcat;
|
|
$limitStartUrl->image = '&limitstartsubcat='.$this->_limitstartimage;
|
|
|
|
if ((int)$id > 0 || (int)$catid > 0) {
|
|
if ($type == 'subcat') {
|
|
$countItem = $model->getCountItemSubCat((int)$id, $this->_user->id, (int)$catid);
|
|
|
|
if ($countItem && (int)$countItem[0] == (int)$this->_limitstartsubcat) {
|
|
$this->_limitstartsubcat = 0;
|
|
}
|
|
} else if ($type == 'image') {
|
|
$countItem = $model->getCountItemImage((int)$id, $this->_user->id,(int)$catid);
|
|
if ($countItem && (int)$countItem[0] == (int)$this->_limitstartimage) {
|
|
$this->_limitstartimage = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((int)$this->_limitstartsubcat > 0) {
|
|
$limitStartUrl->subcat = '&limitstartsubcat='.$this->_limitstartsubcat;
|
|
} else {
|
|
$limitStartUrl->subcat = '';
|
|
}
|
|
if ((int)$this->_limitstartimage > 0) {
|
|
$limitStartUrl->image = '&limitstartimage='.$this->_limitstartimage;
|
|
} else {
|
|
$limitStartUrl->image = '';
|
|
}
|
|
|
|
return $limitStartUrl;
|
|
}
|
|
|
|
// = = = = = = = = = =
|
|
//
|
|
// CATEGORY
|
|
//
|
|
// = = = = = = = = = =
|
|
|
|
/*
|
|
* Create, edit
|
|
*/
|
|
function createcategory() {
|
|
|
|
$app = Factory::getApplication();
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
$task = $this->input->get( 'task', '', 'string' );
|
|
$post['title'] = $this->input->get( 'categoryname', '', 'string' );
|
|
$post['description'] = $this->input->get( 'phocagallerycreatecatdescription', '', 'string' );
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCreateCatChar = $paramsC->get( 'max_create_cat_char', 1000 );
|
|
$enableUserCatApprove = (int)$paramsC->get( 'enable_usercat_approve', 0 );
|
|
$default_access = $paramsC->get( 'default_access', 1 );
|
|
$default_accessuserid = $paramsC->get( 'default_accessuserid', '' );
|
|
if (is_array($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']);
|
|
$post['approved'] = 0;
|
|
if ($enableUserCatApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
/*
|
|
switch ($this->t['userucplang']){
|
|
|
|
case 2:
|
|
$registry = new Registry;
|
|
$registry->loadString($user->params);
|
|
$lang = $registry->get('language','*');
|
|
$this->t['userucplangvalue'] = '<input type="hidden" name="language" value="'.$lang.'" />';
|
|
break;
|
|
|
|
case 3:
|
|
$lang = Factory::getLanguage()->getTag();
|
|
$this->t['userucplangvalue'] = '<input type="hidden" name="language" value="*" />';
|
|
break;
|
|
|
|
default:
|
|
case 1:
|
|
$this->t['userucplangvalue'] = '<input type="hidden" name="language" value="*" />';
|
|
break;
|
|
}*/
|
|
|
|
$limitStartUrl = new CMSObject();
|
|
$limitStartUrl->subcat = '&limitstartsubcat='.$this->_limitstartsubcat;
|
|
$limitStartUrl->image = '&limitstartsubcat='.$this->_limitstartimage;
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($this->_user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
// user is logged in
|
|
if ($access) {
|
|
if ($post['title'] != '') {
|
|
$model = $this->getModel('user');
|
|
// Owner can have only one main category - check it
|
|
$ownerMainCategory = $model->getOwnerMainCategory($this->_user->id);
|
|
// User has no category, he (she) can create one
|
|
if (!$ownerMainCategory) {
|
|
// - - - - -
|
|
// NEW
|
|
// - - - - -
|
|
$msg = '';
|
|
// Create an user folder on the server
|
|
$this->_userFolder = PhocaGalleryText::getAliasName($this->_user->username) .'-'.substr($post['aliasfolder'], 0, 10) .'-'. substr(md5(uniqid(time())), 0, 4);
|
|
$errorMsg = '';
|
|
$createdFolder = PhocaGalleryFileFolder::createFolder($this->_userFolder, $errorMsg);
|
|
if ($errorMsg != '') {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_FOLDER_CREATING'). ': ' . Text::_($errorMsg);
|
|
}
|
|
// -----------------------------------
|
|
|
|
|
|
|
|
|
|
// Folder Created, all right
|
|
if ($msg == '') {
|
|
// Set default values
|
|
$post['access'] = (int)$default_access;
|
|
$post['accessuserid'] = $default_accessuserid;
|
|
//$post['access'] = 1;
|
|
$post['parent_id'] = 0;
|
|
$post['image_position'] = 'left';
|
|
$post['published'] = 1;
|
|
$post['uploaduserid'] = $this->_user->id;
|
|
$post['deleteuserid'] = $this->_user->id;
|
|
$post['userfolder'] = $this->_userFolder;
|
|
$post['owner_id'] = $this->_user->id;
|
|
|
|
|
|
|
|
// Create new category
|
|
$id = $model->store($post);
|
|
if ($id && $id > 0) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_CATEGORY' );
|
|
|
|
$errUploadMsg = '';
|
|
$succeeded = '';
|
|
PhocaGalleryControllerUser::saveUser('', $succeeded, $errUploadMsg);
|
|
//$msg .= '<br />' . $errUploadMsg;
|
|
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_CATEGORY' );
|
|
}
|
|
}
|
|
} else {
|
|
if ($post['title'] != '') {
|
|
// - - - - -
|
|
// EDIT
|
|
// - - - - -
|
|
$post['id'] = $ownerMainCategory->id;
|
|
$id = $model->store($post);
|
|
if ($id && $id > 0) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_CATEGORY' );
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_CATEGORY' );
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_TITLE' );
|
|
}
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
} else {
|
|
$app = Factory::getApplication();
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
// = = = = = = = = = =
|
|
//
|
|
// SUBCATEGORY
|
|
//
|
|
// = = = = = = = = = =
|
|
function publishsubcat() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
if ($isOwnerCategory) {
|
|
if(!$model->publishsubcat((int)$id, 1)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_PUBLISHING_CATEGORY');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_PUBLISHING_CATEGORY');
|
|
}
|
|
} else {
|
|
$app = Factory::getApplication();
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl((int)$id, 'subcat');
|
|
$app = Factory::getApplication();
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function unpublishsubcat() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
if(!$model->publishsubcat((int)$id, 0)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_UNPUBLISHING_CATEGORY');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_UNPUBLISHING_CATEGORY');
|
|
}
|
|
} else {
|
|
|
|
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl((int)$id, 'subcat');
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function ordersubcat() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$task = $this->input->get( 'task', '', 'string' );
|
|
$model = $this->getModel( 'user' );
|
|
$isOwnerCategory = $model->isOwnerCategory((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
if ($isOwnerCategory) {
|
|
if ($task == 'orderupsubcat') {
|
|
$model->movesubcat(-1, (int)$id);
|
|
} else if ($task == 'orderdownsubcat') {
|
|
$model->movesubcat(1, (int)$id);
|
|
}
|
|
} else {
|
|
$app = Factory::getApplication();
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
$limitStartUrl = $this->getLimitStartUrl((int)$id, 'subcat');
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function saveordersubcat() {
|
|
$cid = $this->input->get( 'cid', array(), 'array' );
|
|
$order = $this->input->get( 'order', array(), 'array' );
|
|
$model = $this->getModel( 'user' );
|
|
$app = Factory::getApplication();
|
|
\Joomla\Utilities\ArrayHelper::toInteger($cid);
|
|
\Joomla\Utilities\ArrayHelper::toInteger($order);
|
|
|
|
$model->saveordersubcat($cid, $order);
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_NEW_ORDERING_SAVED' );
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
}
|
|
|
|
function removesubcat() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory((int)$this->_user->id, (int)$id);
|
|
$isOwnerAndParentCategory = $model->isOwnerCategorySubCat((int)$this->_user->id, (int)$id);
|
|
$errorMsg = '';
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
if(!$model->delete((int)$id, $errorMsg)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_DELETING_CATEGORY');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_DELETING_CATEGORY');
|
|
}
|
|
} else {
|
|
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
if ($errorMsg != '') {
|
|
$msg .= '<br />'.$errorMsg;
|
|
}
|
|
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat', (int)$isOwnerAndParentCategory );
|
|
$app->enqueueMessage($msg );
|
|
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, 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' );
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCreateCatChar = $paramsC->get( 'max_create_cat_char', 1000 );
|
|
$enableUserSubCatApprove = $paramsC->get( 'enable_usersubcat_approve', 0 );
|
|
$default_access = $paramsC->get( 'default_access', 1 );
|
|
$default_accessuserid = $paramsC->get( 'default_accessuserid', '' );
|
|
if (is_array($default_accessuserid )) {
|
|
$default_accessuserid = implode(',', $default_accessuserid);
|
|
}
|
|
$post['description'] = substr($post['description'], 0, (int)$maxCreateCatChar);
|
|
$post['alias'] = $post['title'];//PhocaGalleryText::getAliasName($post['title']);
|
|
$model = $this->getModel('user');
|
|
$userSubCatCount = $paramsC->get( 'user_subcat_count', 5 );
|
|
$post['approved'] = 0;
|
|
if ($enableUserSubCatApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($this->_user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
$app = Factory::getApplication();
|
|
// USER IS NOT LOGGED
|
|
if (!$access) {
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
if ((int)$post['parent_id'] < 1) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_SELECTED' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, (int)$post['parent_id']);
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat', (int)$isOwnerCategory );
|
|
if(!$isOwnerCategory) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_ASSIGNED_TO_USER' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
$subCatCount = $model->getCountUserSubCat($this->_user->id);
|
|
$subCatCount = (int)$subCatCount + 1;
|
|
if ((int)$subCatCount > (int)$userSubCatCount) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_MAX_SUBCAT_COUNT_REACHED' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
$ownerMainCategory = $model->getOwnerMainCategory($this->_user->id);
|
|
if (!$ownerMainCategory) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_MAIN_CATEGORY_NOT_CREATED');
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
}
|
|
|
|
if ($post['title'] != '') {
|
|
|
|
$post['access'] = (int)$default_access;
|
|
$post['accessuserid'] = $default_accessuserid;
|
|
$post['image_position'] = 'left';
|
|
$post['published'] = 1;
|
|
$post['uploaduserid'] = $this->_user->id;
|
|
$post['deleteuserid'] = $this->_user->id;
|
|
$post['userfolder'] = $ownerMainCategory->userfolder;
|
|
$post['owner_id'] = $this->_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::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function editsubcategory() {
|
|
|
|
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' );
|
|
$post['id'] = $this->input->get( 'id', 0, 'int' );
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCreateCatChar = $paramsC->get( 'max_create_cat_char', 1000 );
|
|
$post['description'] = substr($post['description'], 0, (int)$maxCreateCatChar);
|
|
$post['alias'] = $post['title'];//PhocaGalleryText::getAliasName($post['title']);
|
|
$model = $this->getModel('user');
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
|
|
$app = Factory::getApplication();
|
|
|
|
$neededAccessLevels = PhocaGalleryAccess::getNeededAccessLevels();
|
|
$access = PhocaGalleryAccess::isAccess($this->_user->getAuthorisedViewLevels(), $neededAccessLevels);
|
|
|
|
// USER IS NOT LOGGED
|
|
if (!$access) {
|
|
|
|
$app->enqueueMessage($this->_loginstr);
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, (int)$post['id']);
|
|
if(!$isOwnerCategory) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_ASSIGNED_TO_USER' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
if ((int)$post['id'] < 1) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_SELECTED' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
$ownerMainCategory = $model->getOwnerMainCategory($this->_user->id);
|
|
if (!$ownerMainCategory) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_MAIN_CATEGORY_NOT_CREATED');
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
}
|
|
|
|
if ($post['title'] != '') {
|
|
|
|
$id = $model->store($post);
|
|
if ($id && $id > 0) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_CATEGORY' );
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_CATEGORY' );
|
|
}
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_TITLE' );
|
|
}
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
// = = = = = = = = = =
|
|
//
|
|
// USER - Upload Avatar
|
|
//
|
|
// = = = = = = = = = =
|
|
|
|
function uploadavatar() {
|
|
$app = Factory::getApplication();
|
|
$errUploadMsg = '';
|
|
$redirectUrl = '';
|
|
$fileArray = $app->input->files->get('Filedata', null);
|
|
$this->_singleFileUploadAvatar($errUploadMsg, $fileArray, $redirectUrl);
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($redirectUrl);
|
|
exit;
|
|
}
|
|
|
|
function _singleFileUploadAvatar(&$errUploadMsg, $file, &$redirectUrl) {
|
|
$app = Factory::getApplication();
|
|
Session::checkToken( 'request' ) or jexit( 'Invalid Token' );
|
|
jimport('joomla.client.helper');
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$path = PhocaGalleryPath::getPath();
|
|
$format = $this->input->get( 'format', 'html', 'cmd');
|
|
$return = $this->input->get( 'return-url', null, 'base64' );
|
|
$viewBack = $this->input->get( 'viewback', '', 'string' );
|
|
$view = $this->input->get( 'view', '', 'string' );
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$return = Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false);
|
|
|
|
$enableUploadAvatar = (int)$paramsC->get( 'enable_upload_avatar', 1 );
|
|
if ($enableUploadAvatar != 1) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_NOT_ABLE_UPLOAD_AVATAR');
|
|
$redirectUrl = $return;
|
|
return false;
|
|
}
|
|
|
|
|
|
if (isset($file['name'])) {
|
|
$fileAvatar = md5(uniqid(time())) . '.' . File::getExt($file['name']);
|
|
$filepath = Path::clean($path->avatar_abs . '/'. $fileAvatar);
|
|
|
|
if (!PhocaGalleryFileUpload::canUpload( $file, $errUploadMsg )) {
|
|
if ($errUploadMsg == 'COM_PHOCAGALLERY_WARNING_FILE_TOOLARGE') {
|
|
$errUploadMsg = Text::_($errUploadMsg) . ' ('.PhocaGalleryFile::getFileSizeReadable($file['size']).')';
|
|
} else if ($errUploadMsg == 'COM_PHOCAGALLERY_WARNING_FILE_TOOLARGERESOLUTION') {
|
|
$imgSize = PhocaGalleryImage::getImageSize($file['tmp_name']);
|
|
$errUploadMsg = Text::_($errUploadMsg) . ' ('.(int)$imgSize[0].' x '.(int)$imgSize[1].' px)';
|
|
} else {
|
|
$errUploadMsg = Text::_($errUploadMsg);
|
|
}
|
|
$redirectUrl = $return;
|
|
return false;
|
|
}
|
|
|
|
if (!File::upload($file['tmp_name'], $filepath, false, true)) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_FILE_UNABLE_UPLOAD');
|
|
$redirectUrl = $return;
|
|
return false;
|
|
} else {
|
|
$redirectUrl = $return;
|
|
//Create thumbnail small, medium, large (Delete previous before)
|
|
PhocaGalleryFileThumbnail::deleteFileThumbnail ('avatars/'.$fileAvatar, 1,1,1);
|
|
$returnFrontMessage = PhocaGalleryFileThumbnail::getOrCreateThumbnail('avatars/'.$fileAvatar, $return, 1, 1, 1, 1);
|
|
if ($returnFrontMessage != 'Success') {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_THUMBNAIL_AVATAR_NOT_CREATED');
|
|
return false;
|
|
}
|
|
|
|
// Saving file name into database with relative path
|
|
$succeeded = false;
|
|
PhocaGalleryControllerUser::saveUser($fileAvatar, $succeeded, $errUploadMsg);
|
|
$redirectUrl = $return;
|
|
return $succeeded;
|
|
}
|
|
} else {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_WARNING_FILETYPE');
|
|
$redirectUrl = $return;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function saveUser($fileAvatar, &$succeeded, &$errSaveMsg) {
|
|
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
|
|
$post['avatar'] = $fileAvatar;
|
|
$post['userid'] = (int)$this->_user->id;
|
|
$post['published'] = 1;
|
|
$post['approved'] = 0;
|
|
$enableAvatarApprove = (int)$paramsC->get( 'enable_avatar_approve', 0 );
|
|
if ($enableAvatarApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
if ($fileAvatar != '') {
|
|
$new = 1;
|
|
}
|
|
|
|
$model = $this->getModel( 'user' );
|
|
|
|
$userAvatar = $model->getUserAvatar($post['userid']);
|
|
if($userAvatar) {
|
|
$post['id'] = $userAvatar->id;
|
|
if (isset($userAvatar->avatar) && $userAvatar->avatar != '' && $fileAvatar == '') {
|
|
// No new avatar - set the old one
|
|
$post['avatar'] = $userAvatar->avatar;
|
|
$new = 0;
|
|
} else if (isset($userAvatar->avatar) && $userAvatar->avatar != '' && $fileAvatar != '') {
|
|
// New avatar loaded - try to delete the old one from harddisc (server)
|
|
$model->removeAvatarFromDisc($userAvatar->avatar);
|
|
$new = 1;
|
|
}
|
|
$post['published'] = $userAvatar->published;
|
|
$post['approved'] = $userAvatar->approved;
|
|
}
|
|
|
|
if ($model->storeuser($post)) {
|
|
$succeeded = true;
|
|
$errSaveMsg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_AVATAR' );
|
|
// Features added by Bernard Gilly - alphaplug.com
|
|
// load external plugins
|
|
if ( isset($new) && $new ){
|
|
//$dispatcher = JDispatcher::getInstance();
|
|
PluginHelper::importPlugin('phocagallery');
|
|
$results = Factory::getApplication()->triggerEvent('onUploadAvatar', array() );
|
|
}
|
|
} else {
|
|
$succeeded = false;
|
|
$errSaveMsg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_AVATAR' );
|
|
}
|
|
|
|
return $succeeded;
|
|
}
|
|
|
|
|
|
|
|
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();
|
|
//$folder = $this->input->get( 'folder', '', '', 'path' );
|
|
$tab = $this->input->get( 'tab', 0, 'int' );
|
|
$format = $this->input->get( 'format', 'html', 'cmd');
|
|
$return = $this->input->get( 'return-url', null, 'base64' );
|
|
$viewBack = $this->input->get( 'viewback', '', 'string' );
|
|
$catid = $this->input->get( 'catid', 0, 'string' );
|
|
$Itemid = $this->input->get( 'Itemid', 0, 'int');
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$return = Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false);
|
|
$redirectUrl = $return;
|
|
$catid = (int)$catid;
|
|
if ((int)$catid < 1) {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_PLEASE_SELECT_CATEGORY'));
|
|
}
|
|
|
|
// Get user catid, we are not in the category, so we must find the catid
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, $catid);
|
|
|
|
|
|
if (!$isOwnerCategory) {
|
|
exit( 'ERROR: '.Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
}
|
|
|
|
// 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;
|
|
}
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
Factory::getApplication()->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
Factory::getApplication()->input->set('return-url', base64_encode($return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realJavaUpload(2);
|
|
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerUser::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() {
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
//$folder = $this->input->get( 'folder', '', '', 'path' );
|
|
$tab = $this->input->get( 'tab', 0, 'int' );
|
|
$format = $this->input->get( 'format', 'html', 'cmd');
|
|
$return = $this->input->get( 'return-url', null, 'base64' );
|
|
$viewBack = $this->input->get( 'viewback', '', '' );
|
|
$catid = $this->input->get( 'catid', 0, 'string' );
|
|
$Itemid = $this->input->get( 'Itemid', 0, 'int');
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$return = Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false);
|
|
$redirectUrl = $return;
|
|
$catid = (int)$catid;
|
|
if ((int)$catid < 1) {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_PLEASE_SELECT_CATEGORY'), 'error');
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
// Get user catid, we are not in the category, so we must find the catid
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, $catid);
|
|
|
|
|
|
if (!$isOwnerCategory) {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'), 'error');
|
|
$app->redirect($this->_loginurl);
|
|
return false;
|
|
}
|
|
|
|
|
|
// 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);
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS');
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
Factory::getApplication()->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
Factory::getApplication()->input->set('return-url', base64_encode($return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realSingleUpload(2);
|
|
|
|
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);
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION');
|
|
$app->enqueueMessage($errUploadMsg);
|
|
$app->redirect($this->_loginurl);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
function ytbupload() {
|
|
|
|
jimport('joomla.client.helper');
|
|
$app = Factory::getApplication();
|
|
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
|
|
$user = Factory::getUser();
|
|
$path = PhocaGalleryPath::getPath();
|
|
//$folder = $this->input->get( 'folder', '', '', 'path' );
|
|
$tab = $this->input->get( 'tab', 0, 'int' );
|
|
$format = $this->input->get( 'format', 'html', 'cmd');
|
|
$return = $this->input->get( 'return-url', null, 'base64' );
|
|
$viewBack = $this->input->get( 'viewback', '', '' );
|
|
$catid = $this->input->get( 'catid', 0, 'string' );
|
|
$Itemid = $this->input->get( 'Itemid', 0, 'int');
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$return = Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false);
|
|
$redirectUrl = $return;
|
|
$catid = (int)$catid;
|
|
if ((int)$catid < 1) {
|
|
$app->enqueueMessage( Text::_('COM_PHOCAGALLERY_PLEASE_SELECT_CATEGORY') );
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
// Get user catid, we are not in the category, so we must find the catid
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, $catid);
|
|
|
|
|
|
if (!$isOwnerCategory) {
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION') );
|
|
$app->redirect($this->_loginurl);
|
|
return false;
|
|
}
|
|
|
|
|
|
// 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 );
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
if (!Folder::exists($path->image_abs . $rightFolder . '/')) {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_EXISTS');
|
|
$app->enqueueMessage($errUploadMsg );
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
Factory::getApplication()->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
Factory::getApplication()->input->set('return-url', base64_encode($return));// set return url
|
|
//$fileName = PhocaGalleryFileUpload::realSingleUpload(2);
|
|
|
|
|
|
$ytbLink = $this->input->get( 'phocagalleryytbuploadlink', '', 'post', 'string');
|
|
$errorYtbMsg = '';
|
|
$ytbData = PhocaGalleryYoutube::importYtb($ytbLink, $rightFolder . '/', $errorYtbMsg);
|
|
|
|
|
|
if ($ytbData && isset($ytbData['filename'])) {
|
|
if(PhocaGalleryControllerUser::save((int)$catid, $ytbData['filename'], $return, $succeeded, $errUploadMsg, false, $ytbData)) {
|
|
$app->enqueueMessage($errUploadMsg );
|
|
$app->redirect($redirectUrl);
|
|
return true;
|
|
} else {
|
|
$app->enqueueMessage($errUploadMsg );
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
} else {
|
|
$app->enqueueMessage($errorYtbMsg );
|
|
$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 );
|
|
$app->redirect($redirectUrl);
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
$errUploadMsg = Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION');
|
|
$app->enqueueMessage($msg, Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$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");
|
|
|
|
// Invalid Token
|
|
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();
|
|
//$folder = $this->input->get( 'folder', '', '', 'path' );
|
|
$tab = $this->input->get( 'tab', 0, 'int' );
|
|
$format = $this->input->get( 'format', 'html', 'cmd');
|
|
$return = $this->input->get( 'return-url', null, 'base64' );
|
|
$viewBack = $this->input->get( 'viewback', '', '' );
|
|
$catid = $this->input->get( 'catid', 0, 'string' );
|
|
$Itemid = $this->input->get( 'Itemid', 0, 'int');
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'subcat');
|
|
$return = Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false);
|
|
$redirectUrl = $return;
|
|
$catid = (int)$catid;
|
|
if ((int)$catid < 1) {
|
|
jexit(json_encode(array( 'jsonrpc' => '2.0', 'result' => 'error', 'code' => 104,
|
|
'message' => Text::_('COM_PHOCAGALLERY_ERROR').': ',
|
|
'details' => Text::_('COM_PHOCAGALLERY_PLEASE_SELECT_CATEGORY'))));
|
|
return false;
|
|
}
|
|
|
|
// Get user catid, we are not in the category, so we must find the catid
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategory($this->_user->id, $catid);
|
|
|
|
|
|
if (!$isOwnerCategory) {
|
|
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;
|
|
}
|
|
|
|
// 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, $this->_user->getAuthorisedViewLevels(), $this->_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;
|
|
}
|
|
|
|
// Sending and setting data for common realsingleupload function
|
|
Factory::getApplication()->input->set('folder', $rightFolder);//Set the right path for uploaded image (category folder included)
|
|
Factory::getApplication()->input->set('return-url', base64_encode($return));// set return url
|
|
$fileName = PhocaGalleryFileUpload::realMultipleUpload(2);
|
|
|
|
if ($fileName != '') {
|
|
// Saving file name into database with relative path
|
|
$fileName = $rightFolder . '/' . strtolower($fileName);
|
|
if(PhocaGalleryControllerUser::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;
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
$post['userid'] = $user->id;
|
|
|
|
$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 );
|
|
|
|
$post['approved'] = 0;
|
|
if ($enableUserImageApprove == 0) {
|
|
$post['approved'] = 1;
|
|
}
|
|
|
|
$model = $this->getModel( 'user' );
|
|
|
|
if ($model->storeimage($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, $errSaveMsg);
|
|
exit;
|
|
}
|
|
|
|
if ($succeeded) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function publishimage() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategoryImage((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
if(!$model->publishimage((int)$id, 1)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_PUBLISHING_ITEM');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_PUBLISHING_ITEM');
|
|
}
|
|
} else {
|
|
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl((int)$id, 'image');
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function unpublishimage() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategoryImage((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
if(!$model->publishimage((int)$id, 0)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_UNPUBLISHING_ITEM');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_UNPUBLISHING_ITEM');
|
|
}
|
|
} else {
|
|
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl((int)$id, 'image');
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false), $msg );
|
|
}
|
|
|
|
function orderimage() {
|
|
$id = $this->input->get( 'id', 0, 'string' );
|
|
$task = $this->input->get( 'task', '', 'string' );
|
|
$model = $this->getModel( 'user' );
|
|
$isOwnerCategory = $model->isOwnerCategoryImage((int)$this->_user->id, (int)$id);
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
if ($task == 'orderupimage') {
|
|
$model->moveimage(-1, (int)$id);
|
|
} else if ($task == 'orderdownimage') {
|
|
$model->moveimage(1, (int)$id);
|
|
}
|
|
} else {
|
|
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'image');
|
|
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
|
|
function saveorderimage() {
|
|
$cid = $this->input->get( 'cid', array(), 'array' );
|
|
$order = $this->input->get( 'order', array(), 'array' );
|
|
$model = $this->getModel( 'user' );
|
|
\Joomla\Utilities\ArrayHelper::toInteger($cid);
|
|
\Joomla\Utilities\ArrayHelper::toInteger($order);
|
|
$app = Factory::getApplication();
|
|
|
|
$model->saveorderimage($cid, $order);
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_NEW_ORDERING_SAVED' );
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'image');
|
|
$app->enqueueMessage($msg);
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false), $msg);
|
|
}
|
|
|
|
function removeimage() {
|
|
$id = $this->input->get( 'id', '', 'string' );
|
|
$model = $this->getModel('user');
|
|
$isOwnerCategory = $model->isOwnerCategoryImage((int)$this->_user->id, (int)$id);
|
|
$errorMsg = '';
|
|
$id = (int)$id;
|
|
$app = Factory::getApplication();
|
|
if ($isOwnerCategory) {
|
|
|
|
// 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)$isOwnerCategory);
|
|
|
|
if (!empty($catAccess)) {
|
|
$rightDisplayDelete = PhocaGalleryAccess::getUserRight('deleteuserid', $catAccess->deleteuserid, 2, $this->_user->getAuthorisedViewLevels(), $this->_user->get('id', 0), 0);
|
|
}
|
|
// - - - - - - - - - - - - - - - - - - -
|
|
if($rightDisplayDelete) {
|
|
if(!$model->deleteimage((int)$id, $errorMsg)) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_DELETING_ITEM');
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_SUCCESS_DELETING_ITEM');
|
|
}
|
|
} else {
|
|
$msg = Text::_('COM_PHOCAGALLERY_ERROR_NO_RIGHTS_TO_DO_THIS_ACTION');
|
|
}
|
|
} else {
|
|
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$limitStartUrl = $this->getLimitStartUrl(0, 'image', (int)$isOwnerCategory);
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false), $msg );
|
|
}
|
|
|
|
|
|
|
|
function editimage() {
|
|
|
|
Session::checkToken() or jexit( 'Invalid Token' );
|
|
$task = $this->input->get( 'task', '', 'string' );
|
|
$post['title'] = $this->input->get( 'imagename', '', 'string' );
|
|
$post['description'] = $this->input->get( 'phocagalleryuploaddescription', '', 'string' );
|
|
$post['id'] = $this->input->get( 'id', 0, 'int' );
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$maxCreateCatChar = $paramsC->get( 'max_create_cat_char', 1000 );
|
|
$post['description'] = substr($post['description'], 0, (int)$maxCreateCatChar);
|
|
$post['alias'] = $post['title'];//PhocaGalleryText::getAliasName($post['title']);
|
|
$model = $this->getModel('user');
|
|
|
|
// Lang
|
|
$userLang = PhocaGalleryUser::getUserLang();
|
|
$post['language'] = $userLang['lang'];
|
|
|
|
|
|
$app = Factory::getApplication();
|
|
// USER IS NOT LOGGED
|
|
if ($this->_user->aid < 1 && $this->_user->id < 1) {
|
|
$app->enqueueMessage($this->_loginstr );
|
|
$app->redirect($this->_loginurl);
|
|
exit;
|
|
}
|
|
|
|
$isOwnerCategory = $model->isOwnerCategoryImage($this->_user->id, (int)$post['id']);
|
|
if(!$isOwnerCategory) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_ASSIGNED_TO_USER' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
if ((int)$post['id'] < 1) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_PARENT_CATEGORY_NOT_SELECTED' );
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
exit;
|
|
}
|
|
|
|
$ownerMainCategory = $model->getOwnerMainCategory($this->_user->id);
|
|
if (!$ownerMainCategory) {
|
|
$msg = Text::_('COM_PHOCAGALLERY_MAIN_CATEGORY_NOT_CREATED');
|
|
$app->enqueueMessage($msg );
|
|
$app->redirect(Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false));
|
|
}
|
|
|
|
if ($post['title'] != '') {
|
|
$id = $model->storeimage($post, '', 1);
|
|
if ($id && $id > 0) {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_SUCCESS_SAVING_ITEM' );
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_SAVING_ITEM' );
|
|
}
|
|
} else {
|
|
$msg = Text::_( 'COM_PHOCAGALLERY_ERROR_TITLE' );
|
|
}
|
|
$app->enqueueMessage($msg );
|
|
$this->setRedirect( Route::_($this->_url. $limitStartUrl->subcat . $limitStartUrl->image, false) );
|
|
}
|
|
}
|
|
?>
|