summaryrefslogtreecommitdiff
path: root/templates/themes/sitemap/theme.php
diff options
context:
space:
mode:
authorSimon McFarlane <simon@piston.pw>2015-05-26 23:31:47 -0700
committerSimon McFarlane <simon@piston.pw>2015-05-29 01:34:53 -0700
commit4b40f69a4e6d190f6d342875bd084c2a6c9d8b0f (patch)
treefcc5dc9efa24afcb0bda3740b59f0c4e81c42f62 /templates/themes/sitemap/theme.php
parent2ac451ecb7aaae1ed1402425b8df6a5cb9831f2b (diff)
parentd20149b57929c27da87a7d9603d85717da15c5bc (diff)
Merge remote-tracking branch 'upstream/master' into vichan-merge
Diffstat (limited to 'templates/themes/sitemap/theme.php')
-rw-r--r--templates/themes/sitemap/theme.php47
1 files changed, 27 insertions, 20 deletions
diff --git a/templates/themes/sitemap/theme.php b/templates/themes/sitemap/theme.php
index 3e048dd5..52779d53 100644
--- a/templates/themes/sitemap/theme.php
+++ b/templates/themes/sitemap/theme.php
@@ -10,30 +10,37 @@
// - boards (board list changed)
// - post (a post has been made)
// - thread (a thread has been made)
+
+ if ($action != 'all') {
+ if ($action != 'post-thread' && $action != 'post-delete')
+ return;
- if ($action != 'post-thread' && $action != 'post-delete')
- return;
-
- if (isset($settings['regen_time']) && $settings['regen_time'] > 0) {
- if ($last_gen = @filemtime($settings['path'])) {
- if (time() - $last_gen < (int)$settings['regen_time'])
- return; // Too soon
+ if (isset($settings['regen_time']) && $settings['regen_time'] > 0) {
+ if ($last_gen = @filemtime($settings['path'])) {
+ if (time() - $last_gen < (int)$settings['regen_time'])
+ return; // Too soon
+ }
}
}
+
+ if ($config['smart_build']) {
+ file_unlink($settings['path']);
+ }
+ else {
+ $boards = explode(' ', $settings['boards']);
- $boards = explode(' ', $settings['boards']);
-
- $threads = array();
+ $threads = array();
- foreach ($boards as $board) {
- $query = query(sprintf("SELECT `id` AS `thread_id`, (SELECT `time` FROM ``posts_%s`` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM ``posts_%s`` WHERE `thread` IS NULL", $board, $board)) or error(db_error());
- $threads[$board] = $query->fetchAll(PDO::FETCH_ASSOC);
- }
+ foreach ($boards as $board) {
+ $query = query(sprintf("SELECT `id`, `id` AS `thread_id`, `slug`, (SELECT `time` FROM ``posts_%s`` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM ``posts_%s`` WHERE `thread` IS NULL", $board, $board)) or error(db_error());
+ $threads[$board] = $query->fetchAll(PDO::FETCH_ASSOC);
+ }
- file_write($settings['path'], Element('themes/sitemap/sitemap.xml', Array(
- 'settings' => $settings,
- 'config' => $config,
- 'threads' => $threads,
- 'boards' => $boards,
- )));
+ file_write($settings['path'], Element('themes/sitemap/sitemap.xml', Array(
+ 'settings' => $settings,
+ 'config' => $config,
+ 'threads' => $threads,
+ 'boards' => $boards,
+ )));
+ }
}