assign('pages_list', Sitemap::getPages()) ->assign('components', Sitemap::getComponents()) ->render(); } /** * Create sitemap */ public static function create() { // Get pages list $pages_list = Sitemap::getPages(); // Create sitemap content $map = ''."\n"; $map .= ''."\n"; foreach ($pages_list as $page) { if ($page['parent'] != '') { $parent = $page['parent'].'/'; $priority = '0.5'; } else { $parent = ''; $priority = '1.0'; } $map .= "\t".''."\n\t\t".''.Option::get('siteurl').$parent.$page['slug'].''."\n\t\t".''.date("Y-m-d", (int) $page['date']).''."\n\t\t".'weekly'."\n\t\t".''.$priority.''."\n\t".''."\n"; } // Get list of components $components = Sitemap::getComponents(); // Add components to sitemap if (count($components) > 0) { foreach ($components as $component) { $map .= "\t".''."\n\t\t".''.Option::get('siteurl').Text::lowercase($component).''."\n\t\t".''.date("Y-m-d", time()).''."\n\t\t".'weekly'."\n\t\t".'1.0'."\n\t".''."\n"; } } // Close sitemap $map .= ''; // Save sitemap return File::setContent(ROOT . DS . 'sitemap.xml', $map); } /** * Get pages */ protected static function getPages() { // Init vars $pages_array = array(); $count = 0; // Get pages table $pages = new Table('pages'); // Get Pages List $pages_list = $pages->select('[slug!="error404" and status="published"]'); foreach ($pages_list as $page) { $pages_array[$count]['title'] = Html::toText($page['title']); $pages_array[$count]['parent'] = $page['parent']; $pages_array[$count]['date'] = $page['date']; $pages_array[$count]['author'] = $page['author']; $pages_array[$count]['slug'] = ($page['slug'] == Option::get('defaultpage')) ? '' : $page['slug'] ; if (isset($page['parent'])) { $c_p = $page['parent']; } else { $c_p = ''; } if ($c_p != '') { $_page = $pages->select('[slug="'.$page['parent'].'"]', null); if (isset($_page['title'])) { $_title = $_page['title']; } else { $_title = ''; } $pages_array[$count]['sort'] = $_title . ' ' . $page['title']; } else { $pages_array[$count]['sort'] = $page['title']; } $_title = ''; $count++; } // Sort pages $_pages_list = Arr::subvalSort($pages_array, 'sort'); // return return $_pages_list; } /** * Get components */ protected static function getComponents() { $components = array(); if (count(Plugin::$components) > 0) { foreach (Plugin::$components as $component) { if ( ! in_array($component, Sitemap::$forbidden_components)) $components[] = Text::lowercase($component); } } return $components; } }