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;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| ?>
 |