diff --git a/ext/sitemap/main.php b/ext/sitemap/main.php
index 7172dc21..79fd6dbc 100644
--- a/ext/sitemap/main.php
+++ b/ext/sitemap/main.php
@@ -1,4 +1,5 @@
@@ -9,159 +10,177 @@
* Documentation:
*/
-class XMLSitemap extends Extension {
- private $sitemap_queue = "";
- private $sitemap_filepath = ""; // set onPageRequest
-
- public function onPageRequest(PageRequestEvent $event) {
- if($event->page_matches("sitemap.xml"))
- {
- global $config;
-
- $this->sitemap_filepath = $_SERVER['DOCUMENT_ROOT']."/data/cache/sitemap.xml";
- // determine if new sitemap needs to be generated
- if ($this->new_sitemap_needed())
- {
- // determine which type of sitemap to generate
- if ($config->get_bool("sitemap_generatefull",false))
- $this->handle_full_sitemap(); // default false until cache fixed
- else
- $this->handle_smaller_sitemap();
- }
- else $this->display_existing_sitemap();
- }
+class XMLSitemap extends Extension
+{
+ private $sitemap_queue = "";
+ private $sitemap_filepath = ""; // set onPageRequest
+
+ public function onPageRequest(PageRequestEvent $event)
+ {
+ if ($event->page_matches("sitemap.xml")) {
+ global $config;
+
+ $this->sitemap_filepath = $_SERVER['DOCUMENT_ROOT'] . "/data/cache/sitemap.xml";
+ // determine if new sitemap needs to be generated
+ if ($this->new_sitemap_needed()) {
+ // determine which type of sitemap to generate
+ if ($config->get_bool("sitemap_generatefull", false)) {
+ $this->handle_full_sitemap(); // default false until cache fixed
+ } else {
+ $this->handle_smaller_sitemap();
+ }
+ } else $this->display_existing_sitemap();
+ }
}
-
- public function onSetupBuilding(SetupBuildingEvent $event) {
+
+ public function onSetupBuilding(SetupBuildingEvent $event)
+ {
$sb = new SetupBlock("Sitemap");
-
+
$sb->add_bool_option("sitemap_generatefull", "Generate full sitemap");
- $sb->add_label("
(Enabled: every image and tag in sitemap, generation takes longer)");
- $sb->add_label("
(Disabled: only display the last 50 uploads in the sitemap)");
-
+ $sb->add_label("
(Enabled: every image and tag in sitemap, generation takes longer)");
+ $sb->add_label("
(Disabled: only display the last 50 uploads in the sitemap)");
+
$event->panel->add_block($sb);
}
-
- // sitemap with only the latest 50 images
- private function handle_smaller_sitemap()
- {
- /* --- Add latest images to sitemap with higher priority --- */
- $latestimages = Image::find_images(0, 50, array());
- $latestimages_urllist = array();
- foreach($latestimages as $arrayid => $image)
- // create url from image id's
- $latestimages_urllist[$arrayid] = "post/view/$image->id";
- $this->add_sitemap_queue($latestimages_urllist, "monthly", "0.8", date("Y-m-d", $image->posted_timestamp));
-
- /* --- Display page --- */
- // when sitemap is ok, display it from the file
- $this->generate_display_sitemap();
- }
-
- // Full sitemap
- private function handle_full_sitemap()
- {
- global $database, $config;
- // add index
- $index = array();
- $index[0] = $config->get_string("front_page");
- $this->add_sitemap_queue($index, "weekly", "1");
+ // sitemap with only the latest 50 images
+ private function handle_smaller_sitemap()
+ {
+ /* --- Add latest images to sitemap with higher priority --- */
+ $latestimages = Image::find_images(0, 50, array());
+ $latestimages_urllist = array();
+ foreach ($latestimages as $arrayid => $image) {
+ // create url from image id's
+ $latestimages_urllist[$arrayid] = "post/view/$image->id";
+ }
- /* --- Add 20 most used tags --- */
- $popular_tags = $database->get_all("SELECT tag, count FROM tags ORDER BY `count` DESC LIMIT 0,20");
- foreach($popular_tags as $arrayid => $tag) {
- $tag = $tag['tag'];
- $popular_tags[$arrayid] = "post/list/$tag/";
- }
- $this->add_sitemap_queue($popular_tags, "monthly", "0.9" /* not sure how to deal with date here */);
+ $this->add_sitemap_queue($latestimages_urllist, "monthly", "0.8", date("Y-m-d", $image->posted_timestamp));
- /* --- Add latest images to sitemap with higher priority --- */
- $latestimages = Image::find_images(0, 50, array());
- $latestimages_urllist = array();
- foreach($latestimages as $arrayid => $image)
- // create url from image id's
- $latestimages_urllist[$arrayid] = "post/view/$image->id";
- $this->add_sitemap_queue($latestimages_urllist, "monthly", "0.8", date("Y-m-d", $image->posted_timestamp));
+ /* --- Display page --- */
+ // when sitemap is ok, display it from the file
+ $this->generate_display_sitemap();
+ }
- /* --- Add other tags --- */
- $other_tags = $database->get_all("SELECT tag, count FROM tags ORDER BY `count` DESC LIMIT 21,10000000");
- foreach($other_tags as $arrayid => $tag) {
- $tag = $tag['tag'];
- // create url from tags (tagme ignored)
- if ($tag != "tagme")
- $other_tags[$arrayid] = "post/list/$tag/";
- }
- $this->add_sitemap_queue($other_tags, "monthly", "0.7" /* not sure how to deal with date here */);
+ // Full sitemap
+ private function handle_full_sitemap()
+ {
+ global $database, $config;
- /* --- Add all other images to sitemap with lower priority --- */
- $otherimages = Image::find_images(51, 10000000, array());
- foreach($otherimages as $arrayid => $image)
- // create url from image id's
- $otherimages[$arrayid] = "post/view/$image->id";
- $this->add_sitemap_queue($otherimages, "monthly", "0.6", date("Y-m-d", $image->posted_timestamp));
-
-
- /* --- Display page --- */
- // when sitemap is ok, display it from the file
- $this->generate_display_sitemap();
- }
-
- // Adds an array of urls to the sitemap with the given information
- private function add_sitemap_queue(/*array(urls)*/ $urls, $changefreq="monthly", $priority="0.5", $date="2013-02-01") {
- foreach($urls as $url) {
- $link = make_http(make_link("$url"));
- $this->sitemap_queue .= "
+ // add index
+ $index = array();
+ $index[0] = $config->get_string("front_page");
+ $this->add_sitemap_queue($index, "weekly", "1");
+
+ /* --- Add 20 most used tags --- */
+ $popular_tags = $database->get_all("SELECT tag, count FROM tags ORDER BY `count` DESC LIMIT 0,20");
+ foreach ($popular_tags as $arrayid => $tag) {
+ $tag = $tag['tag'];
+ $popular_tags[$arrayid] = "post/list/$tag/";
+ }
+ $this->add_sitemap_queue($popular_tags, "monthly", "0.9" /* not sure how to deal with date here */);
+
+ /* --- Add latest images to sitemap with higher priority --- */
+ $latestimages = Image::find_images(0, 50, array());
+ $latestimages_urllist = array();
+ foreach ($latestimages as $arrayid => $image) {
+ // create url from image id's
+ $latestimages_urllist[$arrayid] = "post/view/$image->id";
+ }
+ $this->add_sitemap_queue($latestimages_urllist, "monthly", "0.8", date("Y-m-d", $image->posted_timestamp));
+
+ /* --- Add other tags --- */
+ $other_tags = $database->get_all("SELECT tag, count FROM tags ORDER BY `count` DESC LIMIT 21,10000000");
+ foreach ($other_tags as $arrayid => $tag) {
+ $tag = $tag['tag'];
+ // create url from tags (tagme ignored)
+ if ($tag != "tagme")
+ $other_tags[$arrayid] = "post/list/$tag/";
+ }
+ $this->add_sitemap_queue($other_tags, "monthly", "0.7" /* not sure how to deal with date here */);
+
+ /* --- Add all other images to sitemap with lower priority --- */
+ $otherimages = Image::find_images(51, 10000000, array());
+ foreach ($otherimages as $arrayid => $image) {
+ // create url from image id's
+ $otherimages[$arrayid] = "post/view/$image->id";
+ }
+ $this->add_sitemap_queue($otherimages, "monthly", "0.6", date("Y-m-d", $image->posted_timestamp));
+
+
+ /* --- Display page --- */
+ // when sitemap is ok, display it from the file
+ $this->generate_display_sitemap();
+ }
+
+ /**
+ * Adds an array of urls to the sitemap with the given information.
+ *
+ * @param array $urls
+ * @param string $changefreq
+ * @param string $priority
+ * @param string $date
+ */
+ private function add_sitemap_queue( /*array(urls)*/ $urls, $changefreq = "monthly",
+ $priority = "0.5", $date = "2013-02-01")
+ {
+ foreach ($urls as $url) {
+ $link = make_http(make_link("$url"));
+ $this->sitemap_queue .= "
$link
$date
$changefreq
$priority
";
- }
+ }
}
-
- // sets sitemap with entries in sitemap_queue
- private function generate_display_sitemap()
- {
- global $page;
-
- $xml = "<"."?xml version=\"1.0\" encoding=\"utf-8\"?".">
-
- $this->sitemap_queue
- ";
-
- // Generate new sitemap
- file_put_contents($this->sitemap_filepath, $xml);
- $page->set_mode("data");
- $page->set_type("application/xml");
- $page->set_data($xml);
- }
-
- // returns true if a new sitemap is needed
- private function new_sitemap_needed()
- {
- $sitemap_generation_interval = 86400; // allow new site map every day
- $last_generated_time = filemtime($this->sitemap_filepath);
-
- // if file doesn't exist, return true
- if ($last_generated_time == false) return true;
-
- // if it's been a day since last sitemap creation, return true
- if ($last_generated_time + $sitemap_generation_interval < time())
- return true;
- else return false;
- }
-
- private function display_existing_sitemap()
- {
- global $page;
- $xml = file_get_contents($this->sitemap_filepath);
-
- $page->set_mode("data");
- $page->set_type("application/xml");
- $page->set_data($xml);
- }
+ // sets sitemap with entries in sitemap_queue
+ private function generate_display_sitemap()
+ {
+ global $page;
+
+ $xml = "<" . "?xml version=\"1.0\" encoding=\"utf-8\"?" . ">
+
+ $this->sitemap_queue
+ ";
+
+ // Generate new sitemap
+ file_put_contents($this->sitemap_filepath, $xml);
+ $page->set_mode("data");
+ $page->set_type("application/xml");
+ $page->set_data($xml);
+ }
+
+ // returns true if a new sitemap is needed
+ private function new_sitemap_needed()
+ {
+ $sitemap_generation_interval = 86400; // allow new site map every day
+ $last_generated_time = filemtime($this->sitemap_filepath);
+
+ // if file doesn't exist, return true
+ if ($last_generated_time == false) {
+ return true;
+ }
+
+ // if it's been a day since last sitemap creation, return true
+ if ($last_generated_time + $sitemap_generation_interval < time()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private function display_existing_sitemap()
+ {
+ global $page;
+
+ $xml = file_get_contents($this->sitemap_filepath);
+
+ $page->set_mode("data");
+ $page->set_type("application/xml");
+ $page->set_data($xml);
+ }
}