651 lines
20 KiB
PHP
651 lines
20 KiB
PHP
<?php
|
|
/*
|
|
* @package Joomla.Framework
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*
|
|
* @component Phoca Component
|
|
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License version 2 or later;
|
|
*/
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Router\Route;
|
|
|
|
defined('_JEXEC') or die();
|
|
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
|
|
use Joomla\CMS\Component\ComponentHelper;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Table\Table;
|
|
jimport('joomla.application.component.model');
|
|
phocagalleryimport('phocagallery.ordering.ordering');
|
|
phocagalleryimport('phocagallery.file.filethumbnail');
|
|
|
|
class PhocagalleryModelCategory extends BaseDatabaseModel
|
|
{
|
|
var $_id = null;
|
|
var $_data = null;
|
|
var $_category = null;
|
|
var $_total = null;
|
|
var $_context = 'com_phocagallery.category';
|
|
private $_ordering = null;
|
|
|
|
function __construct() {
|
|
|
|
$app = Factory::getApplication();
|
|
parent::__construct();
|
|
|
|
$config = Factory::getConfig();
|
|
$paramsC = ComponentHelper::getParams('com_phocagallery') ;
|
|
$default_pagination = (int)$paramsC->get( 'default_pagination_category', '20' );
|
|
$image_ordering = $paramsC->get( 'image_ordering', 1 );
|
|
$context = $this->_context.'.';
|
|
|
|
// Get the pagination request variables
|
|
$this->setState('limit', $app->getUserStateFromRequest($context .'limit', 'limit', $default_pagination, 'int'));
|
|
$this->setState('limitstart', $app->input->get('limitstart', 0, 'int'));
|
|
// In case limit has been changed, adjust limitstart accordingly
|
|
$this->setState('limitstart', ($this->getState('limit') != 0 ? (floor($this->getState('limitstart') / $this->getState('limit')) * $this->getState('limit')) : 0));
|
|
// Get the filter request variables
|
|
|
|
$this->setState('filter.language',$app->getLanguageFilter());
|
|
|
|
$this->setState('imgordering', $app->getUserStateFromRequest($context .'imgordering', 'imgordering', $image_ordering, 'int'));
|
|
|
|
//$this->setState('filter_order', J Request::get Cmd('filter_order', 'ordering'));
|
|
//$this->setState('filter_order_dir', J Request::get Cmd('filter_order_Dir', 'ASC'));
|
|
|
|
$id = $app->input->get('id', 0, 'int');
|
|
$this->setId((int)$id);
|
|
}
|
|
|
|
function setId($id) {
|
|
$this->_id = $id;
|
|
$this->_category = null;
|
|
}
|
|
|
|
/*
|
|
* IMAGES
|
|
*/
|
|
function getData( $rightDisplayDelete = 0, $tagId = 0) {
|
|
if (empty($this->_data)) {
|
|
|
|
$query = $this->_buildQuery($rightDisplayDelete, $tagId);
|
|
$this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit'));
|
|
}
|
|
return $this->_data;
|
|
}
|
|
|
|
function getTotal($rightDisplayDelete = 0, $tagId = 0) {
|
|
if (empty($this->_total)) {
|
|
$query = $this->_buildQuery($rightDisplayDelete, $tagId, 1);
|
|
$this->_total = $this->_getListCount($query);
|
|
}
|
|
return $this->_total;
|
|
}
|
|
|
|
function getPagination($rightDisplayDelete = 0, $tagId = 0) {
|
|
if (empty($this->_pagination)) {
|
|
jimport('joomla.html.pagination');
|
|
$this->_pagination = new PhocaGalleryPaginationCategory( $this->getTotal($rightDisplayDelete, $tagId), $this->getState('limitstart'), $this->getState('limit') );
|
|
}
|
|
return $this->_pagination;
|
|
}
|
|
|
|
function getOrdering() {
|
|
if(empty($this->_ordering)) {
|
|
$this->_ordering = PhocaGalleryOrdering::renderOrderingFront($this->getState('imgordering'), 1);
|
|
}
|
|
return $this->_ordering;
|
|
}
|
|
|
|
function _buildQuery($rightDisplayDelete = 0, $tagId = 0, $count = 0) {
|
|
|
|
$app = Factory::getApplication();
|
|
$user = Factory::getUser();
|
|
$params = $app->getParams();
|
|
//$image_ordering = $params->get( 'image_ordering', 1 );
|
|
|
|
$wheres = array();
|
|
|
|
$enable_overlib = $params->get( 'enable_overlib', 0 );
|
|
$imageOrdering = PhocaGalleryOrdering::getOrderingString($this->getState('imgordering'), 1);
|
|
|
|
// Filter by language
|
|
if ($this->getState('filter.language')) {
|
|
$wheres[] = ' a.language IN ('.$this->_db->Quote(Factory::getLanguage()->getTag()).','.$this->_db->Quote('*').')';
|
|
}
|
|
|
|
// Link from comment system
|
|
$cimgid = $app->input->get( 'cimgid', 0, 'int');
|
|
if ($cimgid > 0) {
|
|
$wheres[] = ' a.id = '.(int)$cimgid;
|
|
}
|
|
|
|
$selectUser = '';
|
|
$leftUser = '';
|
|
if ($enable_overlib > 3) {
|
|
$selectUser = ', ua.id AS userid, ua.username AS username, ua.name AS usernameno';
|
|
$leftUser = ' LEFT JOIN #__users AS ua ON ua.id = a.userid';
|
|
//$whereUser = ' AND ua.id ='.(int)$user->id;
|
|
}
|
|
|
|
if ($rightDisplayDelete == 0 ) {
|
|
$published = ' AND a.published = 1';
|
|
$published .= ' AND a.approved = 1';
|
|
} else {
|
|
$published = '';
|
|
}
|
|
|
|
$leftTag = '';
|
|
if ((int)$tagId > 0) {
|
|
$leftTag = ' LEFT JOIN #__phocagallery_tags_ref AS t ON t.imgid = a.id';
|
|
}
|
|
if ((int)$tagId > 0) {
|
|
$wheres[] = ' t.tagid= '.(int)$tagId;
|
|
} else {
|
|
$wheres[] = ' a.catid= '.(int)$this->_id;
|
|
}
|
|
|
|
$leftCat = ' LEFT JOIN #__phocagallery_categories AS cc ON cc.id = a.catid';
|
|
|
|
|
|
if ($count == 1) {
|
|
$query = 'SELECT a.id'
|
|
//. $selectUser
|
|
.' FROM #__phocagallery AS a'
|
|
//.' LEFT JOIN #__phocagallery_img_votes_statistics AS r ON r.imgid = a.id'
|
|
. $leftCat
|
|
//. $leftUser
|
|
. $leftTag
|
|
. ' WHERE ' . implode( ' AND ', $wheres )
|
|
. $published
|
|
//. $imageOrdering['output'];
|
|
. ' ORDER BY a.id';
|
|
} else {
|
|
$query = 'SELECT a.*, cc.alias AS catalias, cc.accessuserid AS cataccessuserid, cc.access AS cataccess,'
|
|
. ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(\':\', cc.id, cc.alias) ELSE cc.id END as catslug'
|
|
. $selectUser
|
|
.' FROM #__phocagallery AS a'
|
|
.' LEFT JOIN #__phocagallery_img_votes_statistics AS r ON r.imgid = a.id'
|
|
. $leftCat
|
|
. $leftUser
|
|
. $leftTag
|
|
. ' WHERE ' . implode( ' AND ', $wheres )
|
|
. $published
|
|
. $imageOrdering['output'];
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
|
|
/*
|
|
* CATEGORY - get info about this category
|
|
*/
|
|
function getCategory() {
|
|
|
|
$app = Factory::getApplication();
|
|
if ($this->_id == 0) {
|
|
return '';
|
|
}
|
|
if ($this->_loadCategory()) {
|
|
|
|
$user = Factory::getUser();
|
|
if (!$this->_category->published) {
|
|
//$mainframe->redirect(JRoute::_('index.php', false), JText::_("COM_PHOCAGALLERY_CATEGORY_IS_UNPUBLISHED"));
|
|
|
|
throw new Exception(Text::_( "COM_PHOCAGALLERY_CATEGORY_IS_UNPUBLISHED" ), 404);
|
|
exit;
|
|
}
|
|
if (!$this->_category->approved) {
|
|
//$mainframe->redirect(JRoute::_('index.php', false), JText::_("COM_PHOCAGALLERY_CATEGORY_IS_UNAUTHORIZED"));// don't loop
|
|
|
|
throw new Exception(Text::_( "COM_PHOCAGALLERY_ERROR_CATEGORY_IS_UNAUTHORIZED" ), 404);
|
|
exit;
|
|
}
|
|
|
|
// USER RIGHT - ACCESS - - - - - -
|
|
$rightDisplay = 1;//default is set to 1 (all users can see the category)
|
|
if (!empty($this->_category)) {
|
|
$rightDisplay = PhocaGalleryAccess::getUserRight('accessuserid', $this->_category->accessuserid, $this->_category->access, $user->getAuthorisedViewLevels(), $user->get('id', 0), 0);
|
|
}
|
|
|
|
|
|
if ($rightDisplay == 0) {
|
|
$uri = \Joomla\CMS\Uri\Uri::getInstance();
|
|
$t['pl'] = 'index.php?option=com_users&view=login&return='.base64_encode($uri->toString());
|
|
|
|
$app->enqueueMessage(Text::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
|
|
$app->redirect(Route::_($t['pl'], false));
|
|
//exit;
|
|
}
|
|
// - - - - - - - - - - - - - - - -
|
|
}
|
|
return $this->_category;
|
|
}
|
|
|
|
function _loadCategory() {
|
|
if (empty($this->_category)){
|
|
|
|
//$query = 'SELECT c.*,' .
|
|
|
|
$query = 'SELECT c.id, c.title, c.alias, c.description, c.published, c.approved, c.parent_id, c.deleteuserid, c.accessuserid, c.uploaduserid, c.owner_id, c.access, c.metakey, c.metadesc, c.latitude, c.longitude, c.zoom, c.geotitle, c.userfolder, c.image_id,' .
|
|
' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as slug '.
|
|
' FROM #__phocagallery_categories AS c' .
|
|
' WHERE c.id = '. (int) $this->_id;
|
|
' AND c.approved = 1';
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$this->_category = $this->_db->loadObject();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
/*
|
|
* PARENT CATEGORIES
|
|
*/
|
|
function getParentCategory() {
|
|
|
|
$parentCategory = 0;
|
|
|
|
if (isset($this->_category->parent_id) && isset($this->_category->id)) {
|
|
$app = Factory::getApplication();
|
|
$params = $app->getParams();
|
|
$category_ordering = $params->get( 'category_ordering', 1 );
|
|
$categoryOrdering = PhocaGalleryOrdering::getOrderingString($category_ordering, 2);
|
|
|
|
//$query = 'SELECT cc.*' .
|
|
$query = 'SELECT cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access' .
|
|
' FROM #__phocagallery_categories AS cc' .
|
|
' WHERE cc.id = '.(int) $this->_category->parent_id.
|
|
' AND cc.published = 1' .
|
|
' AND cc.approved = 1' .
|
|
' AND cc.id <> '.(int) $this->_category->id.
|
|
$categoryOrdering['output'];
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$parentCategory = $this->_db->loadObject();
|
|
}
|
|
|
|
return $parentCategory ;
|
|
}
|
|
|
|
/*
|
|
* SUB CATEGORIES
|
|
*/
|
|
function getSubCategory() {
|
|
|
|
$app = Factory::getApplication();
|
|
$params = $app->getParams();
|
|
$category_ordering = $params->get( 'category_ordering', 1 );
|
|
$categoryOrdering = PhocaGalleryOrdering::getOrderingString($category_ordering, 2);
|
|
|
|
// Filter by language
|
|
$whereLang = '';
|
|
if ($this->getState('filter.language')) {
|
|
$whereLang = ' AND cc.language IN ('.$this->_db->Quote(Factory::getLanguage()->getTag()).','.$this->_db->Quote('*').')';
|
|
}
|
|
|
|
//$query = 'SELECT c.*, COUNT(a.id) countimage' ... Cannot be used because get error if there is no image
|
|
//$query = 'SELECT cc.*, a.filename, a.extm, a.exts, a.extw, a.exth'
|
|
//$query = 'SELECT cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access, cc.image_id';
|
|
|
|
//$query = 'SELECT DISTINCT cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access, cc.image_id, a.filename, a.extm, a.exts, a.extw, a.exth, a.extid';
|
|
|
|
$query = 'SELECT DISTINCT cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access, cc.image_id, min(a.filename) as filename, min(a.extm) as extm, min(a.exts) as exts, min(a.extw) as extw, min(a.exth) as exth, min(a.extid) as extid';
|
|
|
|
$query .= ' FROM #__phocagallery_categories AS cc'
|
|
.' LEFT JOIN #__phocagallery AS a ON cc.id = a.catid'
|
|
.' WHERE cc.parent_id = '.(int) $this->_id
|
|
.' AND cc.published = 1'
|
|
.' AND cc.approved = 1'
|
|
.' AND cc.id <> '.(int) $this->_id
|
|
// .' AND a.published = 1'
|
|
// .' AND countimage > 0'
|
|
// .' AND (SELECT COUNT(a.id) AS countimage'
|
|
// .' FROM #__phocagallery as a'
|
|
// .' WHERE a.catid = c.id'
|
|
// .' AND a.published = 1) > 0'
|
|
. $whereLang
|
|
//.' GROUP BY cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access, cc.image_id, a.filename, a.extm, a.exts, a.extw, a.exth, a.extid'
|
|
.' GROUP BY cc.id, cc.title, cc.alias, cc.published, cc.approved, cc.parent_id, cc.deleteuserid, cc.accessuserid, cc.uploaduserid, cc.access, cc.image_id'
|
|
.$categoryOrdering['output'];
|
|
|
|
|
|
|
|
$this->_db->setQuery($query);
|
|
$subCategory = $this->_db->loadObjectList();
|
|
|
|
|
|
return $subCategory;
|
|
}
|
|
|
|
// Called from SubCategories
|
|
// Called from Category Controller
|
|
function getCountItem($catid = 0, $rightDisplayDelete = 0) {
|
|
|
|
if ($rightDisplayDelete == 0 ) {
|
|
$published = ' WHERE a.published = 1 AND a.approved = 1 AND a.catid = '.$catid;
|
|
} else {
|
|
$published = ' WHERE a.catid = '.$catid;
|
|
}
|
|
|
|
$query = 'SELECT COUNT(a.id) FROM #__phocagallery AS a'
|
|
. $published;
|
|
;
|
|
$this->_db->setQuery( $query );
|
|
/*if (!$this->_db->query()) {
|
|
$this->setError('Database Error 3');
|
|
return false;
|
|
}*/
|
|
return $this->_db->loadRow();
|
|
}
|
|
|
|
|
|
/*
|
|
* Called from Controller
|
|
*/
|
|
function getCategoryIdFromImageId($id) {
|
|
// id is id
|
|
$query = 'SELECT a.catid' .
|
|
' FROM #__phocagallery AS a' .
|
|
' WHERE a.id = '. (int) $id;
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$categoryId = $this->_db->loadObject();
|
|
|
|
return $categoryId;
|
|
}
|
|
|
|
function getCategoryAlias($id) {
|
|
// id is catid
|
|
$query = 'SELECT c.alias' .
|
|
' FROM #__phocagallery_categories AS c' .
|
|
' WHERE c.id = '. (int) $id;
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$categoryAlias = $this->_db->loadObject();
|
|
|
|
return $categoryAlias;
|
|
}
|
|
|
|
/*
|
|
* Actions
|
|
*/
|
|
function delete($id = 0) {
|
|
|
|
// Get all filenames we want to delete from database, we delete all thumbnails from server of this file
|
|
$queryd = 'SELECT filename as filename FROM #__phocagallery WHERE id ='.(int)$id;
|
|
$this->_db->setQuery($queryd);
|
|
$file_object = $this->_db->loadObjectList();
|
|
|
|
$query = 'DELETE FROM #__phocagallery'
|
|
. ' WHERE id ='.(int)$id;
|
|
|
|
$this->_db->setQuery( $query );
|
|
$this->_db->execute();
|
|
/*if(!$this->_db->query()) {
|
|
$this->setError('Database Error 2');
|
|
return false;
|
|
}*/
|
|
|
|
// Delete thumbnails - medium and large, small from server
|
|
// All id we want to delete - gel all filenames
|
|
foreach ($file_object as $key => $value) {
|
|
//The file can be stored in other category - don't delete it from server because other category use it
|
|
$querys = "SELECT id as id FROM #__phocagallery WHERE filename='".$value->filename."' ";
|
|
$this->_db->setQuery($queryd);
|
|
$same_file_object = $this->_db->loadObject();
|
|
|
|
//same file in other category doesn't exist - we can delete it
|
|
if (!$same_file_object){
|
|
//Delete all thumbnail files but not original
|
|
PhocaGalleryFileThumbnail::deleteFileThumbnail($value->filename, 1, 1, 1);
|
|
PhocaGalleryFile::deleteFile($value->filename);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function publish($id = 0, $publish = 1) {
|
|
|
|
$user = Factory::getUser();
|
|
$query = 'UPDATE #__phocagallery'
|
|
. ' SET published = '.(int) $publish
|
|
. ' WHERE id = '.(int)$id
|
|
. ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ) )';
|
|
|
|
$this->_db->setQuery( $query );
|
|
$this->_db->execute();
|
|
/*if (!$this->_db->query()) {
|
|
$this->setError('Database Error 2');
|
|
return false;
|
|
}*/
|
|
return true;
|
|
}
|
|
|
|
function store($data, $return) {
|
|
//If this file doesn't exists don't save it
|
|
|
|
|
|
|
|
if (!PhocaGalleryFile::existsFileOriginal($data['filename'])) {
|
|
$this->setError('File not exists');
|
|
return false;
|
|
}
|
|
|
|
$data['imgorigsize'] = PhocaGalleryFile::getFileSize($data['filename'], 0);
|
|
$data['format'] = PhocaGalleryFile::getFileFormat($data['filename']);
|
|
|
|
//If there is no title and no alias, use filename as title and alias
|
|
if (!isset($data['title']) || (isset($data['title']) && $data['title'] == '')) {
|
|
$data['title'] = PhocaGalleryFile::getTitleFromFile($data['filename']);
|
|
}
|
|
|
|
if (!isset($data['alias']) || (isset($data['alias']) && $data['alias'] == '')) {
|
|
$data['alias'] = PhocaGalleryFile::getTitleFromFile($data['filename']);
|
|
}
|
|
|
|
//clean alias name (no bad characters)
|
|
//$data['alias'] = PhocaGalleryText::getAliasName($data['alias']);
|
|
|
|
|
|
|
|
if((!isset($data['longitude']) || (isset($data['longitude']) && $data['longitude'] == '')) ||
|
|
(!isset($data['latitude']) || (isset($data['latitude']) && $data['latitude'] ==''))) {
|
|
phocagalleryimport('phocagallery.geo.geo');
|
|
$coords = PhocaGalleryGeo::getGeoCoords($data['filename']);
|
|
|
|
if (!isset($data['longitude']) || (isset($data['longitude']) && $data['longitude'] =='')){
|
|
$data['longitude'] = $coords['longitude'];
|
|
}
|
|
|
|
if (!isset($data['latitude']) || (isset($data['latitude']) && $data['latitude'] =='')){
|
|
$data['latitude'] = $coords['latitude'];
|
|
}
|
|
|
|
if ((!isset($data['zoom']) || (isset($data['zoom']) && $data['zoom'] == '')) && $data['longitude'] != '' && $data['latitude'] != ''){
|
|
$data['zoom'] = PhocaGallerySettings::getAdvancedSettings('geozoom');
|
|
}
|
|
}
|
|
|
|
$row = $this->getTable('phocagallery', 'Table');
|
|
|
|
|
|
// Bind the form fields to the Phoca gallery table
|
|
if (!$row->bind($data)) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
// Create the timestamp for the date
|
|
$row->date = gmdate('Y-m-d H:i:s');
|
|
|
|
// if new item, order last in appropriate group
|
|
if (!$row->id) {
|
|
$where = 'catid = ' . (int) $row->catid ;
|
|
$row->ordering = $row->getNextOrder( $where );
|
|
}
|
|
|
|
// Make sure the Phoca gallery table is valid
|
|
if (!$row->check()) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
// Store the Phoca gallery table to the database
|
|
if (!$row->store()) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
//Create thumbnail small, medium, large
|
|
$returnFrontMessage = PhocaGalleryFileThumbnail::getOrCreateThumbnail($row->filename, $return, 1, 1, 1, 1);
|
|
|
|
if ($returnFrontMessage == 'Success') {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function rate($data) {
|
|
$row = $this->getTable('phocagalleryvotes', 'Table');
|
|
|
|
|
|
|
|
if (!$row->bind($data)) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
$row->date = gmdate('Y-m-d H:i:s');
|
|
|
|
$row->published = 1;
|
|
|
|
if (!$row->id) {
|
|
$where = 'catid = ' . (int) $row->catid ;
|
|
$row->ordering = $row->getNextOrder( $where );
|
|
}
|
|
|
|
if (!$row->check()) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
if (!$row->store()) {
|
|
$this->setError($this->_db->getErrorMsg());
|
|
return false;
|
|
}
|
|
|
|
// Update the Vote Statistics
|
|
phocagalleryimport('phocagallery.rate.ratecategory');
|
|
if (!PhocaGalleryRateCategory::updateVoteStatistics( $data['catid'])) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function comment($data) {
|
|
|
|
$row = $this->getTable('phocagallerycomments', 'Table');
|
|
|
|
if (!$row->bind($data)) {
|
|
$this->setError($row->getError());
|
|
return false;
|
|
}
|
|
|
|
$row->date = gmdate('Y-m-d H:i:s');
|
|
$row->published = 1;
|
|
|
|
if (!$row->id) {
|
|
$where = 'catid = ' . (int) $row->catid ;
|
|
$row->ordering = $row->getNextOrder( $where );
|
|
}
|
|
|
|
if (!$row->check()) {
|
|
$this->setError($row->getError());
|
|
return false;
|
|
}
|
|
|
|
if (!$row->store()) {
|
|
$this->setError($row->getError());
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function hit($id) {
|
|
|
|
$app = Factory::getApplication();
|
|
$table = Table::getInstance('phocagalleryc', 'Table');
|
|
$table->hit($id);
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
function getCountImages($catId, $published = 1) {
|
|
$app = Factory::getApplication();
|
|
|
|
$query = 'SELECT COUNT(i.id) AS countimg'
|
|
.' FROM #__phocagallery AS i'
|
|
.' WHERE i.catid = '. (int) $catId
|
|
.' AND i.published ='.(int)$published
|
|
.' AND i.approved = 1';
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$countPublished = $this->_db->loadObject();
|
|
|
|
return $countPublished;
|
|
}
|
|
|
|
function getHits($catId) {
|
|
$app = Factory::getApplication();
|
|
|
|
$query = 'SELECT cc.hits AS catviewed'
|
|
.' FROM #__phocagallery_categories AS cc'
|
|
.' WHERE cc.id = '. (int) $catId;
|
|
$this->_db->setQuery($query, 0, 1);
|
|
$categoryViewed = $this->_db->loadObject();
|
|
|
|
return $categoryViewed;
|
|
}
|
|
|
|
function getStatisticsImages($catId, $order, $order2 = 'ASC', $limit = 3) {
|
|
|
|
$query = 'SELECT i.*,'
|
|
.' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(\':\', cc.id, cc.alias) ELSE cc.id END as catslug'
|
|
.' FROM #__phocagallery AS i'
|
|
.' LEFT JOIN #__phocagallery_categories AS cc ON cc.id = i.catid'
|
|
.' WHERE i.catid = '.(int) $catId
|
|
.' AND i.published = 1'
|
|
.' AND i.approved = 1'
|
|
.' ORDER BY '.$order.' '.$order2;
|
|
|
|
$this->_db->setQuery($query, 0, $limit);
|
|
$statistics = $this->_db->loadObjectList();
|
|
$item = array();
|
|
|
|
$count = 0;
|
|
$total = count($statistics);
|
|
for($i = 0; $i < $total; $i++) {
|
|
$statisticsData[$count] = $statistics[$i] ;
|
|
$item[$i] =& $statisticsData[$count];
|
|
$item[$i]->slug = $item[$i]->id.':'.$item[$i]->alias;
|
|
$item[$i]->item_type = "image";
|
|
$extImg = PhocaGalleryImage::isExtImage($item[$i]->extid);
|
|
if ($extImg) {
|
|
$item[$i]->linkthumbnailpath = $item[$i]->extm;
|
|
} else {
|
|
$item[$i]->linkthumbnailpath = PhocaGalleryImageFront::displayCategoryImageOrNoImage($item[$i]->filename, 'medium');
|
|
}
|
|
$count++;
|
|
}
|
|
return $item;
|
|
}
|
|
|
|
}
|
|
?>
|