16 import(
'classes.handler.Handler');
18 define(
'SITEMAP_XSD_URL',
'https://www.sitemaps.org/schemas/sitemap/0.9');
27 function index($args, $request) {
28 $context = $request->getContext();
31 header(
"Content-Type: application/xml");
32 header(
"Cache-Control: private");
33 header(
"Content-Disposition: inline; filename=\"sitemap_index.xml\"");
37 header(
"Content-Type: application/xml");
38 header(
"Cache-Control: private");
39 header(
"Content-Disposition: inline; filename=\"sitemap.xml\"");
52 $doc =
new DOMDocument(
'1.0',
'utf-8');
53 $root = $doc->createElement(
'sitemapindex');
54 $root->setAttribute(
'xmlns', SITEMAP_XSD_URL);
56 $contexts = $contextDao->getAll(
true);
57 while ($context = $contexts->next()) {
58 $sitemapUrl = $request->url($context->getPath(),
'sitemap');
59 $sitemap = $doc->createElement(
'sitemap');
60 $sitemap->appendChild($doc->createElement(
'loc', htmlspecialchars($sitemapUrl, ENT_COMPAT,
'UTF-8')));
61 $root->appendChild($sitemap);
64 $doc->appendChild($root);
74 $context = $request->getContext();
75 $contextId = $context->getId();
77 $doc =
new DOMDocument(
'1.0',
'utf-8');
79 $root = $doc->createElement(
'urlset');
80 $root->setAttribute(
'xmlns', SITEMAP_XSD_URL);
83 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath())));
85 if ($context->getData(
'disableUserReg') != 1) {
86 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'user',
'register')));
89 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'login')));
91 if ($context->getData(
'enableAnnouncements') == 1) {
92 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'announcement')));
95 $announcementsResult = $announcementDao->getByAssocId($contextAssocType, $contextId);
96 while ($announcement = $announcementsResult->next()) {
97 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'announcement',
'view', $announcement->getId())));
101 if (!empty($context->getData(
'about'))) {
102 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'about')));
105 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'about',
'submissions')));
107 if (!empty($context->getData(
'editorialTeam'))) {
108 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'about',
'editorialTeam')));
111 if (!empty($context->getData(
'mailingAddress')) || !empty($context->getData(
'contactName'))) {
112 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(),
'about',
'contact')));
116 $menuItemsResult = $navigationMenuItemDao->getByType(NMI_TYPE_CUSTOM, $contextId);
117 while ($menuItem = $menuItemsResult->next()) {
118 $root->appendChild($this->
_createUrlTree($doc, $request->url($context->getPath(), $menuItem->getPath())));
121 $doc->appendChild($root);
135 protected function _createUrlTree($doc, $loc, $lastmod =
null, $changefreq =
null, $priority =
null) {
136 $url = $doc->createElement(
'url');
137 $url->appendChild($doc->createElement(
'loc', htmlspecialchars($loc, ENT_COMPAT,
'UTF-8')));
139 $url->appendChild($doc->createElement(
'lastmod', $lastmod));
142 $url->appendChild($doc->createElement(
'changefreq', $changefreq));
145 $url->appendChild($doc->createElement(
'priority', $priority));