<?php
/*
 * @package Joomla 1.5
 * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 *
 * @component Phoca Component
 * @copyright Copyright (C) Jan Pavelka www.phoca.cz
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 */
defined('_JEXEC') or die();
jimport( 'joomla.application.component.view');
phocagalleryimport('phocagallery.access.access');
phocagalleryimport('phocagallery.path.path');
phocagalleryimport('phocagallery.file.file');
phocagalleryimport('phocagallery.render.renderinfo');
phocagalleryimport('phocagallery.picasa.picasa');

class PhocaGalleryViewCategories extends JView
{
	function display($tpl = null) {		
		
		global $mainframe;
		$user 		= &JFactory::getUser();
		$uri 		= &JFactory::getURI();
		$path		= &PhocaGalleryPath::getPath();
		$params		= &$mainframe->getParams();
		$tmpl		= array();
		$tmplGeo	= array();
		
		$this->_setLibraries();
		
		// PARAMS - - - - - - - - - -
		$image_categories_size 			= $params->get( 'image_categories_size', 4 );
		$medium_image_width 			= (int)$params->get( 'medium_image_width', 100 ) + 18;
		$medium_image_height 			= (int)$params->get( 'medium_image_height', 100 ) + 18;
		$small_image_width 				= (int)$params->get( 'small_image_width', 50 ) + 18;
		$small_image_height 			= (int)$params->get( 'small_image_height', 50 ) + 18;
		$tmpl['phocagallerywidth'] 		= $params->get( 'phocagallery_width', '' );
		$tmpl['categoriescolumns'] 		= $params->get( 'categories_columns', 1 );
		$tmpl['displayrating']			= $params->get( 'display_rating', 0 );
		$tmpl['phocagallerycenter']		= $params->get( 'phocagallery_center', '');
		$tmpl['categoriesimageordering']= $params->get( 'categories_image_ordering', 9 );
		$tmpl['displayimagecategories'] = $params->get( 'display_image_categories', 1 );// Display or hide image beside the category name
		$display_categories_geotagging 	= $params->get( 'display_categories_geotagging', 0 );// Display Geo CATEGORIES VIEW
		// Access Category - display category in CATEGORIES VIEW, which user cannot access
		$display_access_category 		= $params->get( 'display_access_category', 1 );
		$display_empty_categories		= $params->get( 'display_empty_categories', 0 );
		$hideCatArray					= explode( ';', trim( $params->get( 'hide_categories', '' ) ) );
		$tmpl['equalpercentagewidth']	= $params->get( 'equal_percentage_width');
		$tmpl['categoriesdisplayavatar']= $params->get( 'categories_display_avatar');
		

		
		// Correct Picasa Images - get Info
		switch($image_categories_size) {
			// medium
			case 1:
			case 5:
				$tmpl['picasa_correct_width']	= (int)$params->get( 'medium_image_width', 100 );	
				$tmpl['picasa_correct_height']	= (int)$params->get( 'medium_image_height', 100 );
			break;
			
			case 0:
			case 4:
			default:
				$tmpl['picasa_correct_width']	= (int)$params->get( 'small_image_width', 50 );	
				$tmpl['picasa_correct_height']	= (int)$params->get( 'small_image_height', 50 );
			break;
		}
		
		// - - - - - - - - - - - - - - - 
	
		// Get background for the image
		phocagalleryimport('phocagallery.image.imagefront');
		$catImg = PhocaGalleryImageFront::getCategoriesImageBackground($image_categories_size, $small_image_width, $small_image_height,  $medium_image_height, $medium_image_width);
		
		$tmpl['imagebg'] 		= $catImg->image;
		$tmpl['imagewidth'] 	= $catImg->width;
		

		//$total				= $this->get('total');
		//$tmpl['pagination']	= &$this->get('pagination');
		
		// Image next to Category in Categories View is ordered by Random as default
		phocagalleryimport('phocagallery.ordering.ordering');
		$categoriesImageOrdering = PhocaGalleryOrdering::getOrderingString($tmpl['categoriesimageordering']);
		$tmpl['sz'] = base64_decode('PGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogcmdiKDIxMSwgMjExLCAyMTEpOyI+UG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBob2NhLmN6IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJQaG9jYS5jeiI+UGhvY2E8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhvY2EuY3ovcGhvY2FnYWxsZXJ5IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJQaG9jYSBHYWxsZXJ5Ij5HYWxsZXJ5PC9hPjwvZGl2Pg0K');
		// MODEL
		$model		= &$this->getModel();
		$items		= $this->get('data');
		
		
		// Add link and unset the categories which user cannot see (if it is enabled in params)
		// If it will be unset while access view, we must sort the keys from category array - ACCESS
		$unSet = 0;
		
		foreach ($items as $key => $item) {

			// Unset empty categories if it is set
			if ($display_empty_categories == 0) {
				if($items[$key]->numlinks < 1) {
					unset($items[$key]);
					$unSet 		= 1;
					continue;
				}
			}
			
			// Unset hidden category
			if (!empty($hideCatArray) && is_array($hideCatArray)) {
				$unSetHCA = 0;
				foreach ($hideCatArray as $valueHCA) {
					if((int)trim($valueHCA) == $items[$key]->id) {
						unset($items[$key]);
						$unSet 		= 1;
						$unSetHCA 	= 1;
						break;
					}
				}
				if ($unSetHCA == 1) {
					continue;
				}
			}
		
			
			// Link
			$items[$key]->link	= JRoute::_('index.php?option=com_phocagallery&view=category&id='. $item->slug.'&Itemid='. JRequest::getVar('Itemid', 1, 'get', 'int') ); 
			
			// USER RIGHT - ACCESS - - - - -
			// First Check - check if we can display category
			$rightDisplay	= 1;
			if (!empty($items[$key])) {
			
				$rightDisplay = PhocaGalleryAccess::getUserRight('accessuserid', $items[$key]->accessuserid, $items[$key]->access, $user->get('aid', 0), $user->get('id', 0), $display_access_category);
			}
			// Second Check - if we can display hidden category, set Key icon for them
			//                if we don't have access right to see them
			// Display Key Icon (in case we want to display unaccessable categories in list view)
			$rightDisplayKey  = 1;
		
			if ($display_access_category == 1) {
				// we simulate that we want not to display unaccessable categories
				// so if we get rightDisplayKey = 0 then the key will be displayed
				if (!empty($items[$key])) {
					$rightDisplayKey = PhocaGalleryAccess::getUserRight('accessuserid', $items[$key]->accessuserid, $items[$key]->access, $user->get('aid', 0), $user->get('id', 0), 0); // 0 - simulation
				}
			}
			
			// DISPLAY AVATAR, IMAGE(ordered), IMAGE(not ordered, not recursive) OR FOLDER ICON
			$displayAvatar = 0;
			if($tmpl['categoriesdisplayavatar'] == 1 && isset($items[$key]->avatar) && $items[$key]->avatar !='' && $items[$key]->avatarapproved == 1 && $items[$key]->avatarpublished == 1) {
				$sizeString = PhocaGalleryImageFront::getSizeString($image_categories_size);
				$pathAvatarAbs	= $path->avatar_abs  .'thumbs'.DS.'phoca_thumb_'.$sizeString.'_'. $items[$key]->avatar;
				$pathAvatarRel	= $path->avatar_rel . 'thumbs/phoca_thumb_'.$sizeString.'_'. $items[$key]->avatar;
				if (JFile::exists($pathAvatarAbs)){
					$items[$key]->linkthumbnailpath	=  $pathAvatarRel;
					$displayAvatar = 1;
				}
			}
			if ($displayAvatar == 0) {	
				if (isset($items[$key]->extid) && $items[$key]->extid != '') {
					if ($tmpl['categoriesimageordering'] != 10) {
						$imagePic		= PhocaGalleryImageFront::getRandomImageRecursive($items[$key]->id, $categoriesImageOrdering, 1);
						$fileThumbnail	= PhocaGalleryImageFront::displayCategoriesExtImgOrFolder($imagePic->exts,$imagePic->extm, $imagePic->extw,$imagePic->exth, $image_categories_size, $rightDisplayKey);
					} else {	
						$fileThumbnail		= PhocaGalleryImageFront::displayCategoriesExtImgOrFolder($items[$key]->exts,$items[$key]->extm, $items[$key]->extw, $items[$key]->exth, $image_categories_size, $rightDisplayKey);
					}

					$items[$key]->linkthumbnailpath	= $fileThumbnail->rel;
					$items[$key]->extw				= $fileThumbnail->extw;
					$items[$key]->exth				= $fileThumbnail->exth;
					$items[$key]->extpic			= $fileThumbnail->extpic;
				} else {
					if ($tmpl['categoriesimageordering'] != 10) {
						$items[$key]->filename	= PhocaGalleryImageFront::getRandomImageRecursive($items[$key]->id, $categoriesImageOrdering);
					}
					$fileThumbnail	= PhocaGalleryImageFront::displayCategoriesImageOrFolder($items[$key]->filename, $image_categories_size, $rightDisplayKey);
					$items[$key]->linkthumbnailpath	= $fileThumbnail->rel;
				}
			}
		
			if ($rightDisplay == 0) {
				unset($items[$key]);
				$unSet = 1;
			}
			// - - - - - - - - - - - - - - - 	
			
		}
		
		$tmpl['mtb'] = PhocaGalleryRenderInfo::getPhocaIc((int)$params->get( 'display_phoca_info', 1 ));
		
		// ACCESS - - - - - - 
		// In case we unset some category from the list, we must sort the array new
		if ($unSet == 1) {
			$items = array_values($items);
		}
		// - - - - - - - - - - - - - - - -

		// Do Pagination - we can do it after reducing all unneeded items, not before
		$totalCount 		= count($items);
		$model->setTotal($totalCount);
		$tmpl['pagination']	= &$this->get('pagination');
		$items 				= array_slice($items,(int)$tmpl['pagination']->limitstart, (int)$tmpl['pagination']->limit);
		// - - - - - - - - - - - - - - - -

		
		// Display Image of Categories Description
		if ($params->get('image') != -1) {
			$attribs['align']	= $params->get('image_align');
			$attribs['hspace']	= 6;
			// Use the static HTML library to build the image tag
			$tmpl['image'] 		= JHTML::_('image', 'images/stories/'.$params->get('image'), JText::_('Phoca Gallery'), $attribs);
		}
		
		// ACTION
		$tmpl['action']	= $uri->toString();
		
		// ASSIGN
		$this->assignRef('tmpl',		$tmpl);
		$this->assignRef('params',		$params);
		$this->assignRef('categories',	$items);
		
		
		if ($display_categories_geotagging == 1) {
		
			// PARAMS - - - - - - - - - -
			$tmplGeo['categorieslng'] 		= $params->get( 'categories_lng', '' );
			$tmplGeo['categorieslat'] 		= $params->get( 'categories_lat', '' );
			$tmplGeo['categorieszoom'] 		= $params->get( 'categories_zoom', 2 );
			$tmplGeo['googlemapsapikey'] 	= $params->get( 'google_maps_api_key', '' );
			$tmplGeo['categoriesmapwidth'] 	= $params->get( 'categories_map_width', '' );
			$tmplGeo['categoriesmapheight'] = $params->get( 'categorires_map_height', 500 );
			// - - - - - - - - - - - - - - -
			
			// if no lng and lat will be added, Phoca Gallery will try to find it in categories
			if ($tmplGeo['categorieslat'] == '' || $tmplGeo['categorieslng'] == '') {
				phocagalleryimport('phocagallery.geo.geo');
				$latLng = PhocaGalleryGeo::findLatLngFromCategory($items);
				$tmplGeo['categorieslng'] = $latLng['lng'];
				$tmplGeo['categorieslat'] = $latLng['lat'];
			}
		
			$this->assignRef('tmplGeo',	$tmplGeo);
			parent::display('map');
		} else {
			parent::display($tpl);
		}
	}

	function _setLibraries() {
		
		$document	= &JFactory::getDocument();
		
		// Libraries
		$library 				= &PhocaGalleryLibrary::getLibrary();
		$libraries['pg-css-ie'] = $library->getLibrary('pg-css-ie');
		
		// CSS for IE 8
		if ( $libraries['pg-css-ie']->value == 0 ) {
			$document->addCustomTag("<!--[if lt IE 8]>\n<link rel=\"stylesheet\" href=\""
			.JURI::base(true)
			."/components/com_phocagallery/assets/phocagalleryieall.css\" type=\"text/css\" />\n<![endif]-->");
			$library->setLibrary('pg-css-ie', 1);
		}
		
		// CSS
		JHTML::stylesheet( 'phocagallery.css', 'components/com_phocagallery/assets/' );
	}
}
?>