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_5333cea8259e5/front/views/xml/tmpl/ |
Upload File : |
<?php /** * @version $Id$ * @copyright Copyright (C) 2005 - 2009 Joomla! Vargas. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @author Guillermo Vargas (guille@vargas.co.cr) */ // No direct access defined( '_JEXEC' ) or die( 'Restricted access' ); require_once(JPATH_COMPONENT . '/displayer.php'); class XmapXmlDisplayer extends XmapDisplayer { /** * * @var array Stores the list of links that have been already included in * the sitemap to avoid duplicated items */ var $_links; /** * * @var string */ var $view = 'xml'; protected $showTitle = false; protected $showExcluded = false; /** * * @var int Indicates if this is a google news sitemap or not */ var $isNews = 0; /** * * @var int Indicates if this is a google news sitemap or not */ var $isImages = 0; function __construct($config, $sitemap) { parent::__construct($config, $sitemap); $this->uids = array(); $this->defaultLanguage = strtolower(JFactory::getLanguage()->getTag()); if (preg_match('/^([a-z]+)-.*/',$this->defaultLanguage,$matches) && !in_array($this->defaultLanguage, array(' zh-cn',' zh-tw')) ) { $this->defaultLanguage = $matches[1]; } $this->showTitle = JRequest::getBool('filter_showtitle', 0); $this->showExcluded = JRequest::getBool('filter_showexcluded', 0); $db = JFactory::getDbo(); $this->nullDate = $db->getNullDate(); } /** * Prints an XML node for the sitemap * * @param stdclass $node */ function printNode($node) { $node->isExcluded = false; if ($this->isExcluded($node->id,$node->uid)) { if (!$this->showExcluded || !$this->canEdit) { return false; } $node->isExcluded = true; } if ($this->isNews && (!isset($node->newsItem) || !$node->newsItem)) { return true; } // For images sitemaps only display pages with images if ($this->isImages && (!isset($node->images) || !count($node->images))) { return true; } // Get the item's URL $link = JRoute::_($node->link, true, @$node->secure == 0 ? (JFactory::getURI()->isSSL() ? 1 : -1) : $node->secure); if (!isset($node->browserNav)) $node->browserNav = 0; if ($node->browserNav != 3 // ignore "no link" && empty($this->_links[$link])) { // ignore links that have been added already $this->count++; $this->_links[$link] = 1; if (!isset($node->priority)) $node->priority = "0.5"; if (!isset($node->changefreq)) $node->changefreq = 'daily'; // Get the chancefrequency and priority for this item $changefreq = $this->getProperty('changefreq', $node->changefreq, $node->id, 'xml', $node->uid); $priority = $this->getProperty('priority', $node->priority, $node->id, 'xml', $node->uid); echo '<url>' . "\n"; echo '<loc>', $link, '</loc>' . "\n"; if ($this->canEdit) { if ($this->showTitle) { echo '<title><![CDATA['.$node->name.']]></title>' . "\n"; } if ($this->showExcluded) { echo '<rowclass>',($node->isExcluded? 'excluded':''),'</rowclass>'; } echo '<uid>', $node->uid, '</uid>' . "\n"; echo '<itemid>', $node->id, '</itemid>' . "\n"; } $modified = (isset($node->modified) && $node->modified != FALSE && $node->modified != $this->nullDate && $node->modified != -1) ? $node->modified : NULL; if (!$modified && $this->isNews) { $modified = time(); } if ($modified && !is_numeric($modified)){ $date = new JDate($modified); $modified = $date->toUnix(); } if ($modified) { $modified = gmdate('Y-m-d\TH:i:s\Z', $modified); } // If this is not a news sitemap if (!$this->isNews) { if ($this->isImages) { foreach ($node->images as $image) { echo '<image:image>', "\n"; echo '<image:loc>', $image->src, '</image:loc>', "\n"; if ($image->title) { $image->title = str_replace('&', '&', html_entity_decode($image->title, ENT_NOQUOTES, 'UTF-8')); echo '<image:title>', $image->title, '</image:title>', "\n"; } else { echo '<image:title />'; } if (isset($image->license) && $image->license) { echo '<image:license>',str_replace('&', '&',html_entity_decode($image->license, ENT_NOQUOTES, 'UTF-8')),'</image:license>',"\n"; } echo '</image:image>', "\n"; } } else { if ($modified){ echo '<lastmod>', $modified, '</lastmod>' . "\n"; } echo '<changefreq>', $changefreq, '</changefreq>' . "\n"; echo '<priority>', $priority, '</priority>' . "\n"; } } else { if (isset($node->keywords)) { $keywords = htmlspecialchars($node->keywords); } else { $keywords = ''; } if (!isset($node->language) || $node->language == '*') { $node->language = $this->defaultLanguage; } echo "<news:news>\n"; echo '<news:publication>'."\n"; echo ' <news:name>'.(htmlspecialchars($this->sitemap->params->get('news_publication_name'))).'</news:name>'."\n"; echo ' <news:language>'.$node->language.'</news:language>'."\n"; echo '</news:publication>'."\n"; echo '<news:publication_date>', $modified, '</news:publication_date>' . "\n"; echo '<news:title><![CDATA['.$node->name.']]></news:title>' . "\n"; if ($keywords) { echo '<news:keywords>', $keywords, '</news:keywords>' . "\n"; } echo "</news:news>\n"; } echo '</url>', "\n"; } else { return empty($this->_links[$link]); } return true; } /** * * @param string $property The property that is needed * @param string $value The default value if the property is not found * @param int $Itemid The menu item id * @param string $view (xml / html) * @param int $uid Unique id of the element on the sitemap * (the id asigned by the extension) * @return string */ function getProperty($property, $value, $Itemid, $view, $uid) { if (isset($this->jview->sitemapItems[$view][$Itemid][$uid][$property])) { return $this->jview->sitemapItems[$view][$Itemid][$uid][$property]; } return $value; } /** * Called on every level change * * @param int $level * @return boolean */ function changeLevel($level) { return true; } /** * Function called before displaying the menu * * @param stdclass $menu The menu node item * @return boolean */ function startMenu($menu) { return true; } /** * Function called after displaying the menu * * @param stdclass $menu The menu node item * @return boolean */ function endMenu($menu) { return true; } }