PageRenderTime 22ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/includes/modules/pages/sitemapxml/sitemapxml_ezpages.php

http://daocart.googlecode.com/
PHP | 126 lines | 114 code | 1 blank | 11 comment | 22 complexity | e4d8397f614e6e763fe4619dcae0d240 MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, BSD-3-Clause
  1. <?php
  2. /**
  3. * Sitemap XML
  4. *
  5. * @package Sitemap XML
  6. * @copyright Copyright 2005-2009, Andrew Berezin eCommerce-Service.com
  7. * @copyright Portions Copyright 2003-2008 Zen Cart Development Team
  8. * @copyright Portions Copyright 2003 osCommerce
  9. * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  10. * @version $Id: sitemapxml_ezpages.php, v 2.1.0 30.04.2009 10:35 AndrewBerezin $
  11. */
  12. $zen_SiteMapXML->message('<h3>' . TEXT_HEAD_EZPAGES . '</h3>');
  13. $select = '';
  14. $from = '';
  15. $where = '';
  16. $order_by = '';
  17. if (SITEMAPXML_EZPAGES_ORDERBY != '') {
  18. $order_by = SITEMAPXML_EZPAGES_ORDERBY;
  19. }
  20. $page_date_added = $db->Execute("SHOW COLUMNS
  21. FROM " . TABLE_EZPAGES . "
  22. LIKE 'date_added'");
  23. $page_last_modified = $db->Execute("SHOW COLUMNS
  24. FROM " . TABLE_EZPAGES . "
  25. LIKE 'last_modified'");
  26. $page_nofollow = $db->Execute("SHOW COLUMNS
  27. FROM " . TABLE_EZPAGES . "
  28. LIKE 'status_rel_nofollow'");
  29. if (!$page_nofollow->EOF) {
  30. $where .= " AND status_rel_nofollow=0";
  31. }
  32. if (defined('TABLE_EZPAGES_TEXT')) {
  33. $from = " LEFT JOIN " . TABLE_EZPAGES_TEXT . " pt ON (p.pages_id = pt.pages_id)";
  34. }
  35. if (!$page_date_added->EOF && !$page_last_modified->EOF) {
  36. $select .= ", GREATEST(IFNULL(p.date_added, '0001-01-01 00:00:00'), IFNULL(p.last_modified, '0001-01-01 00:00:00')) AS last_date";
  37. if ($order_by != '') {
  38. $order_by .= ", ";
  39. }
  40. $order_by .= "last_date DESC";
  41. $last_date = $db->Execute("SELECT MAX(GREATEST(IFNULL(p.date_added, '0001-01-01 00:00:00'), IFNULL(p.last_modified, '0001-01-01 00:00:00'))) AS last_date
  42. FROM " . TABLE_EZPAGES . " p " . $from . "
  43. WHERE alt_url_external = ''" . $where);
  44. $last_date = $last_date->fields['last_date'];
  45. } else {
  46. $last_date = 0;
  47. }
  48. if ($zen_SiteMapXML->SitemapOpen('ezpages', $last_date)) {
  49. $page_query = $db->Execute("SELECT p.toc_chapter
  50. FROM " . TABLE_EZPAGES . " p " . $from . "
  51. WHERE alt_url_external = ''
  52. AND ( (status_header = 1 AND header_sort_order > 0)
  53. OR (status_sidebox = 1 AND sidebox_sort_order > 0)
  54. OR (status_footer = 1 AND footer_sort_order > 0)
  55. )
  56. AND status_toc != 0" . $where . "
  57. GROUP BY toc_chapter"); // pages_id
  58. $toc_chapter_array = array();
  59. while (!$page_query->EOF) {
  60. //echo '<pre>';var_export($page_query->fields);echo '</pre>';
  61. $toc_chapter_array[$page_query->fields['toc_chapter']] = $page_query->fields['toc_chapter'];
  62. $page_query->MoveNext();
  63. }
  64. if (sizeof($toc_chapter_array) > 0) {
  65. $where_toc = " OR toc_chapter IN (" . implode(',', $toc_chapter_array) . ")";
  66. } else {
  67. $where_toc = '';
  68. }
  69. $page_query = $db->Execute("SELECT *" . $select . "
  70. FROM " . TABLE_EZPAGES . " p " . $from . "
  71. WHERE alt_url_external = ''
  72. AND ( (status_header = 1 AND header_sort_order > 0)
  73. OR (status_sidebox = 1 AND sidebox_sort_order > 0)
  74. OR (status_footer = 1 AND footer_sort_order > 0)
  75. " . $where_toc . "
  76. )" . $where .
  77. ($order_by != '' ? " ORDER BY " . $order_by : ''));
  78. $zen_SiteMapXML->SitemapSetMaxItems($page_query->RecordCount());
  79. while (!$page_query->EOF) {
  80. $page_query->fields['language_id'] = (isset($page_query->fields['language_id']) ? $page_query->fields['language_id'] : DEFAULT_LANGUAGE);
  81. $langParm = $zen_SiteMapXML->getLanguageParameter($page_query->fields['language_id']);
  82. if ($page_query->fields['alt_url'] != '') { // internal link
  83. if ($langParm != '') {
  84. $langParm = (strpos($page_query->fields['alt_url'], '?') === false ? '?' . ltrim('&', $langParm) : $langParm);
  85. }
  86. $link = (substr($page_query->fields['alt_url'],0,4) == 'http') ?
  87. $page_query->fields['alt_url'] :
  88. zen_href_link($page_query->fields['alt_url'] . $langParm, '', ($page_query->fields['page_is_ssl']=='0' ? 'NONSSL' : 'SSL'), false, true, true);
  89. $parse_url = parse_url($link);
  90. if (!isset($parse_url['path'])) $parse_url['path'] = '/';
  91. $link_base_url = $parse_url['scheme'] . '://' . $parse_url['host'] . str_replace('\\', '/', dirname($parse_url['path']));
  92. if ($link_base_url != $zen_SiteMapXML->base_url) {
  93. $zen_SiteMapXML->message(sprintf(TEXT_ERRROR_EZPAGES_OUTOFBASE, $page_query->fields['alt_url'], $link) . '<br />', 'error');
  94. $link = false;
  95. } else {
  96. if (basename($parse_url['path']) == 'index.php') {
  97. $query_string = explode('&', str_replace('&amp;', '&', $parse_url['query']));
  98. foreach($query_string as $query) {
  99. list($parm_name, $parm_value) = explode('=', $query);
  100. if ($parm_name == 'main_page') {
  101. if (defined('ROBOTS_PAGES_TO_SKIP') && in_array($parm_value, explode(",", constant('ROBOTS_PAGES_TO_SKIP'))) || $parm_value == 'down_for_maintenance') {
  102. $zen_SiteMapXML->message(sprintf(TEXT_ERRROR_EZPAGES_ROBOTS, $page_query->fields['alt_url'], $link) . '<br />', 'error');
  103. $link = false;
  104. break;
  105. }
  106. }
  107. }
  108. }
  109. }
  110. //$zen_SiteMapXML->checkHTTPcode($link);
  111. } else { // use EZPage ID to create link
  112. $link = zen_href_link(FILENAME_EZPAGES, 'id=' . $page_query->fields['pages_id'] . ((int)$page_query->fields['toc_chapter'] != 0 ? '&chapter=' . $page_query->fields['toc_chapter'] : '') . $langParm, ($page_query->fields['page_is_ssl']=='0' ? 'NONSSL' : 'SSL'), false);
  113. }
  114. if ($link != false) {
  115. if (isset($page_query->fields['last_date']) && $page_query->fields['last_date'] != null) {
  116. $last_date = strtotime($page_query->fields['last_date']);
  117. } else {
  118. $last_date = '';
  119. }
  120. $zen_SiteMapXML->SitemapWriteItem($link, $last_date, SITEMAPXML_EZPAGES_CHANGEFREQ);
  121. }
  122. $page_query->MoveNext();
  123. }
  124. $zen_SiteMapXML->SitemapClose();
  125. }