view.rss.php
2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
// namespace components\com_jmap\views\sitemap;
/**
* @package JMAP::SITEMAP::components::com_jmap
* @subpackage views
* @subpackage sitemap
* @author Joomla! Extensions Store
* @copyright (C) 2015 - Joomla! Extensions Store
* @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
*/
defined ( '_JEXEC' ) or die ( 'Restricted access' );
jimport ( 'joomla.utilities.date' );
/**
* Main view class
*
* @package JMAP::SITEMAP::components::com_jmap
* @subpackage views
* @subpackage sitemap
* @since 1.0
*/
class JMapViewSitemap extends JMapView {
/**
* Convert links in a text from relative to absolute
*
* @param string $text The text processed
* @return string Text with converted links
*/
protected function relToAbsLinks($text) {
$base = JUri::base(false);
$text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto|data)([^\"]*)\"/", "$1=\"$base\$2\"", $text);
return $text;
}
/**
* Display the XML sitemap
* @access public
* @return void
*/
function display($tpl = null) {
$document = $this->document;
$document->setMimeEncoding('application/xml');
// Call by cache handler get no params, so recover from model state
if(!$tpl) {
$tpl = $this->getModel ()->getState ( 'documentformat' );
}
// Retrieve language info
$language = JFactory::getLanguage();
$langTag = $language->getTag();
$langCode = @array_shift(explode('-', $langTag));
// Retrieve Joomla config info
$this->joomlaConfig = JFactory::getConfig();
$this->sysLang = $langCode;
$this->rssLang = strtolower($langTag);
$this->globalConfig = JFactory::getConfig();
$this->data = $this->get ( 'SitemapData' );
$this->cparams = $this->getModel ()->getState ( 'cparams' );
$this->application = JFactory::getApplication();
$this->xslt = $this->getModel()->getState('xslt');
$this->limitRecent = $this->cparams->get('rss_limit_recent', null);
$uriInstance = JUri::getInstance();
if($this->cparams->get('append_livesite', true)) {
$customHttpPort = trim($this->cparams->get('custom_http_port', ''));
$getPort = $customHttpPort ? ':' . $customHttpPort : '';
$customDomain = trim($this->cparams->get('custom_sitemap_domain', ''));
$getDomain = $customDomain ? rtrim($customDomain, '/') : rtrim($uriInstance->getScheme() . '://' . $uriInstance->getHost(), '/');
$this->liveSite = rtrim($getDomain . $getPort, '/');
} else {
$this->liveSite = null;
}
// Initialize output links buffer with exclusion for links
$this->outputtedLinksBuffer = $this->getModel()->getExcludedLinks($this->liveSite);
$this->setLayout('default');
parent::display ( $tpl );
}
}