/** * Sitemap filter * * Receives existing sitemap and adds articles section */ function _article_sitemap($sitemap) { $limit = 15; $articlesperpage = 40; /* Create tree and add index and feed links at the top */ $articletree = new hktree(); $articletree->addNode('index', 0, 'Article Index', JOJO_Plugin_Jojo_article::_getPrefix() . '/'); $articletree->addNode('index-rss', 'index', 'Articles RSS Feed', JOJO_Plugin_Jojo_article::_getPrefix('rss')); /* Get the article content from the database */ $articles = JOJO_Plugin_Jojo_article::getArticles($limit); $n = count($articles); foreach ($articles as $a) { $articletree->addNode($a['articleid'], 0, $a['ar_title'], $a['url']); } /* Get number of articles for pagination */ $now = strtotime('now'); $articlescount = JOJO::selectQuery("SELECT COUNT(*) AS numarticles FROM article WHERE ar_livedate<{$now} AND (ar_expirydate<=0 OR ar_expirydate>{$now})"); $numarticles = $articlescount[0]['numarticles']; $numpages = ceil($numarticles / $articlesperpage); /* calculate pagination */ if ($numpages == 1) { if ($limit < $numarticles) { $articletree->addNode('p1', 0, 'More Articles', 'articles/'); } } else { for ($p = 1; $p <= $numpages; $p++) { $url = $p == 1 ? 'articles/' : 'articles/p' . $p . '/'; $articletree->addNode('p' . $p, 0, 'Page ' . $p, $url); } } /* Remove any other links to the articles section form the sitemap */ foreach ($sitemap as $k => $section) { $sitemap[$k]['tree'] = JOJO_Plugin_Jojo_article::_sitemapRemoveSelf($section['tree']); } /* Add to the sitemap array */ $sitemap['articles'] = array('title' => 'Articles', 'tree' => $articletree->asArray(), 'order' => 2, 'header' => '', 'footer' => ''); /* Tags are broken at the moment. //tags if (tableexists('tag')) { $tagtree = new hktree(); //$articletree->liststyle = 'disc'; $tagtree->addNode('index',0,'Tag Index','tags/'); $limit = 20; //Article listing $tags = JOJO::selectQuery("SELECT * FROM tag WHERE 1 ORDER BY tag LIMIT " . $limit); $n = count($tags); for ($i=0;$i<$n;$i++) { $tags[$i]['url'] = 'tags/'.JOJO::cleanURL($tags[$i]['tag']).'/'; $tagtree->addNode($tags[$i]['tag'],0,$tags[$i]['tag'],$tags[$i]['url']); } if ($n) { // Add to the sitemap array $sitemapsection = array(); $sitemapsection['title'] = 'Tags'; $sitemapsection['tree'] = $tagtree->asArray(); $sitemapsection['order'] = 5; $sitemapsection['header'] = ''; $sitemapsection['footer'] = ''; $sitemap[] = $sitemapsection; } } */ return $sitemap; }
<?php /** * Jojo CMS - Internal links plugin * ================ * * Copyright 2007-2008 Robbie MacKay <*****@*****.**> * * See the enclosed file license.txt for license information (LGPL). If you * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. * * @author Robbie MacKay <*****@*****.**> * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @link http://rjmackay.wordpress.org/code/ * @package internal_links */ /* Add a Sitemap page is one does not exist */ Jojo::updateQuery("UPDATE page SET pg_link='JOJO_Plugin_internal_links_scan' WHERE pg_link='internal_links_scan.php'"); $data = JOJO::selectQuery("SELECT * FROM page WHERE pg_link='JOJO_Plugin_internal_links_scan'"); if (count($data) == 0) { echo "Adding <b>scan</b> Page to menu<br />"; $data = JOJO::selectQuery("SELECT * FROM page WHERE pg_title = 'Not on Menu'"); $_NOT_NO_MENU_ID = $data[0]['pageid']; JOJO::insertQuery("INSERT INTO page SET pg_title='Scan', pg_link='internal_links_scan.php', pg_url='scan.php', pg_desc='page used for xinha existing page links', pg_parent={$_NOT_NO_MENU_ID}"); } /* Add Google sitemap (sitemap.xml) page if one does not exist */ /* $data = JOJO::selectQuery("SELECT * FROM page WHERE pg_link = 'xml_sitemap.php'"); if (count($data) == 0) { echo "Adding <b>Google Sitemap</b> Page<br />"; JOJO::insertQuery("INSERT INTO page SET pg_title = 'XML Sitemap', pg_link = 'xml_sitemap.php', pg_url = 'sitemap.xml', pg_parent=" . JOJO::cleanInt($_NOT_NO_MENU_ID) . ", pg_order=0, pg_mainnav='no', pg_body = ''"); } */