Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /AppServ/www/news/tmp/install_5333e468bd5e2/ |
Upload File : |
<?php // $HeadURL: https://joomgallery.org/svn/joomgallery/JG-2.0/Plugins/XMap/trunk/com_joomgallery.php $ // $Id: com_joomgallery.php 4163 2013-03-31 14:57:41Z chraneco $ /****************************************************************************************\ ** JoomGallery Plugin for XMap ** ** By: JoomGallery::ProjectTeam ** ** Copyright (C) 2013 - 2013 JoomGallery::ProjectTeam ** ** Released under GNU GPL Public License ** ** License: http://www.gnu.org/copyleft/gpl.html or have a look ** ** at administrator/components/com_joomgallery/LICENSE.TXT ** \****************************************************************************************/ defined('_JEXEC') or die('Direct Access to this location is not allowed.'); /** * Handles standard JoomGallery images and categories * * @package JoomGallery * @since 1.0 */ class xmap_com_joomgallery { /** * Holds the interface object of JoomGallery * * @var JoomInterface * @since 2.0 */ static $jginterface; /** * This function is called before a menu item is printed. We use it to set the * proper unique ID for the item * * @param object $node Menu item to be "prepared" * @param array $params The extension parameters * @return void * @since 1.0 */ static function prepareMenuItem(&$node,&$params) { $link_query = parse_url($node->link); parse_str(html_entity_decode($link_query['query']), $link_vars); $view = JArrayHelper::getValue($link_vars, 'view', '', ''); if($view =='detail') { $id = intval(JArrayHelper::getValue($link_vars, 'id', 0)); $node->uid = 'com_joomgalleryi'.$id; $node->expandible = false; } else { if($view =='category') { $cid = intval(JArrayHelper::getValue($link_vars, 'catid', 0)); $node->uid = 'com_joomgalleryc'.$cid; $node->expandible = true; } } } /** * Gets the tree of category structure * * @param object $xmap The XMap displayer object * @param object $parent The parent node * @param array $params The extension parameters * @return void * @since 1.0 */ static function getTree($xmap, $parent, &$params) { if($xmap->isNews) { // This component does not provide news content. // Don't waste time and resources. return; } $link_query = parse_url($parent->link); if(!isset($link_query['query'])) { return; } // Get the interface of JoomGallery self::getJGInterface(); parse_str(html_entity_decode($link_query['query']), $link_vars); // Get the parameters // Set expand_categories param to determine the search of image items $expand_categories = JArrayHelper::getValue($params, 'expand_categories', 1); $expand_categories = (( $expand_categories == 1 || ($expand_categories == 2 && $xmap->view == 'xml') || ($expand_categories == 3 && $xmap->view == 'html') || $xmap->view == 'navigator' ) && self::$jginterface->getJConfig('jg_detailpic_open') == 0 && self::$jginterface->getJConfig('jg_showdetailpage') == 1); $params['expand_categories'] = $expand_categories; // Set cat_priority and cat_changefreq params $priority = JArrayHelper::getValue($params, 'cat_priority', $parent->priority); $changefreq = JArrayHelper::getValue($params, 'cat_changefreq', $parent->changefreq); if($priority == '-1') { $priority = $parent->priority; } if($changefreq == '-1') { $changefreq = $parent->changefreq; } $params['cat_priority'] = $priority; $params['cat_changefreq'] = $changefreq; // Set img_priority and img_changefreq params $priority = JArrayHelper::getValue($params, 'img_priority', $parent->priority); $changefreq = JArrayHelper::getValue($params, 'img_changefreq', $parent->changefreq); if($priority == '-1') { $priority = $parent->priority; } if($changefreq == '-1') { $changefreq = $parent->changefreq; } $params['img_priority'] = $priority; $params['img_changefreq'] = $changefreq; $params['max_images'] = intval(JArrayHelper::getValue($params, 'max_images', 0)); $cid = intval(JArrayHelper::getValue($link_vars, 'catid', 1)); self::expandCategory($xmap, $parent, $cid, $params, $parent->id); } /** * Add category items and images within a category * * @param object $xmap The XMap displayer object * @param object $parent The parent node * @param int $catid The ID of the category to expand * @param array $params The extension parameters * @param int $itemid The itemid to use for this category's children * @return void * @since 1.0 */ static function expandCategory($xmap, $parent, $catid, &$params, $itemid) { if(!self::$jginterface) { return; } // Get category structure static $catstructure = null; if(!$catstructure) { $catstructure = self::$jginterface->getAmbit()->getCategoryStructure(); } if(empty($catstructure)) { // No viewable category in gallery return; } // If catid = 1 call getRootCats() to get the cats at most upper level if($catid == 1) { $rootcats = self::getRootCats(); $subcats = $rootcats; } else { // Include images of category if configured. // Deny if detail view of JoomGallery is not reachable. if($params['expand_categories']) { self::getImages($xmap, $parent, $catid, $params, $itemid); } // Get sub-categories of category // Returns an array with catids, so construct an array with objects needed for the nodes $subcatsjg = JoomHelper::getAllSubCategories($catid, false, true); $subcats = array(); foreach($subcatsjg as $key => $value) { // Deny elements with wrong hierarchy level, because getAllSubCategories delivers subcategories of all levels if($catstructure[$value]->parent_id == $catid) { if(!isset($subcats[$key])) { $subcats[$key] = new stdClass(); } $subcats[$key]->cid = $value; } } } if(count($subcats) > 0) { $xmap->changeLevel(1); foreach($subcats as $subcat) { $node = new stdClass(); $node->id = $parent->id; $node->uid = $parent->uid.'c'.$subcat->cid; $node->browserNav = $parent->browserNav; $node->priority = $params['cat_priority']; $node->changefreq = $params['cat_changefreq']; $modifieddate = self::getModifiedDate($subcat->cid); if(!is_null($modifieddate)) { $node->modified = $modifieddate; } $node->name = $catstructure[$subcat->cid]->name; $node->expandible = true; $node->secure = $parent->secure; $node->keywords = $catstructure[$subcat->cid]->name; $node->newsItem = 0; $node->slug = $subcat->cid; $node->link = 'index.php?option=com_joomgallery&view=category&catid='.$subcat->cid.'&Itemid='.$parent->id; $node->itemid = $parent->id; // Print the category node and look recursively for sub-categories if($xmap->printNode($node)) { self::expandCategory($xmap, $parent, $subcat->cid, $params, $node->itemid); } } $xmap->changeLevel(-1); } } /** * Add all image items within a category * * @param object $xmap The XMap displayer object * @param object $parent The parent node * @param int $catid The ID of the category to expand * @param array $params The extension parameters * @param int $itemid The itemid to use for this category's children * @return void * @since 1.0 */ static function getImages($xmap, $parent, $catid, &$params, $Itemid) { // Get images from interface, ordered by imgdate $images = self::$jginterface->getPicsByCategory($catid, null, 'imgdate desc', $params['max_images']); if(count($images) > 0) { $xmap->changeLevel(1); foreach($images as $image) { $node = new stdClass(); $node->id = $parent->id; $node->uid = $parent->uid . 'i' . $image->id; $node->browserNav = $parent->browserNav; $node->priority = $params['img_priority']; $node->changefreq = $params['img_changefreq']; $node->name = $image->imgtitle; // Convert imgdate to timestamp $node->modified = strtotime($image->imgdate); $node->expandible = false; $node->secure = $parent->secure; $node->keywords = $image->imgtitle; $node->newsItem = 0; $node->language = null; $node->link = 'index.php?option=com_joomgallery&view=detail&id='.$image->id.'&Itemid='.$parent->id; $xmap->printNode($node); } $xmap->changeLevel(-1); } } /** * Loads the interface object of JoomGallery * * @return void * @since 2.0 */ private static function getJGInterface() { if(self::$jginterface) { return; } // Check if JoomGallery component is installed and enabled if(!JComponentHelper::isEnabled('com_joomgallery', true)) { return; } // Check if file of interface exists $jg_interface = JPATH_SITE.'/components/com_joomgallery/interface.php'; if(!is_file($jg_interface)) { return; } require_once $jg_interface; self::$jginterface = new JoomInterface(); } /** * Get the root categories of gallery * * @return array An array of category items * @since 1.0 */ private static function getRootCats() { $user = JFactory::getUser(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('c.cid') ->from(_JOOM_TABLE_CATEGORIES.' AS c') ->where('c.published = 1') ->where('c.hidden = 0') ->where('c.parent_id = 1') ->where('c.access IN ('.implode(',', $user->getAuthorisedViewLevels()).')') ->order('c.lft'); $db->setQuery($query); return $db->loadObjectList(); } /** * Get the latest image date to determine the modification date of category * * @param int $cid ID of the category * @return string The latest image date of the category * @since 1.0 */ private static function getModifiedDate(&$cid) { $image = self::$jginterface->getPicsByCategory($cid, null, 'imgdate desc', 1, 0); if(empty($image)) { $imgdate = null; } else { $imgdate = strtotime($image[0]->imgdate); } return $imgdate; } }