1
0
mirror of https://github.com/vichan-devel/vichan.git synced 2024-11-23 23:20:57 +01:00

sitemap theme for smart_build

This commit is contained in:
czaks 2015-04-03 05:57:39 +02:00
parent 61d2729a40
commit e273111340
2 changed files with 37 additions and 21 deletions

View File

@ -105,6 +105,11 @@ function sb_recent() {
return true; return true;
} }
function sb_sitemap() {
rebuildTheme("sitemap", "all");
return true;
}
$entrypoints = array(); $entrypoints = array();
$entrypoints['/%b/'] = 'sb_board'; $entrypoints['/%b/'] = 'sb_board';
@ -130,6 +135,7 @@ $entrypoints['/*/'] = 'sb_ukko';
$entrypoints['/*/index.html'] = 'sb_ukko'; $entrypoints['/*/index.html'] = 'sb_ukko';
$entrypoints['/recent.html'] = 'sb_recent'; $entrypoints['/recent.html'] = 'sb_recent';
$entrypoints['/%b/catalog.html'] = 'sb_catalog'; $entrypoints['/%b/catalog.html'] = 'sb_catalog';
$entrypoints['/sitemap.xml'] = 'sb_sitemap';
$reached = false; $reached = false;
@ -185,6 +191,9 @@ if ($reached) {
elseif (preg_match('/\.js$/', $request)) { elseif (preg_match('/\.js$/', $request)) {
header("Content-Type", "text/javascript; charset=utf-8"); header("Content-Type", "text/javascript; charset=utf-8");
} }
elseif (preg_match('/\.xml$/', $request)) {
header("Content-Type", "application/xml");
}
else { else {
header("Content-Type", "text/html; charset=utf-8"); header("Content-Type", "text/html; charset=utf-8");
} }

View File

@ -10,30 +10,37 @@
// - boards (board list changed) // - boards (board list changed)
// - post (a post has been made) // - post (a post has been made)
// - thread (a thread 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') if (isset($settings['regen_time']) && $settings['regen_time'] > 0) {
return; if ($last_gen = @filemtime($settings['path'])) {
if (time() - $last_gen < (int)$settings['regen_time'])
if (isset($settings['regen_time']) && $settings['regen_time'] > 0) { return; // Too soon
if ($last_gen = @filemtime($settings['path'])) { }
if (time() - $last_gen < (int)$settings['regen_time'])
return; // Too soon
} }
} }
$boards = explode(' ', $settings['boards']); if ($config['smart_build']) {
file_unlink($settings['path']);
$threads = array();
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);
} }
else {
$boards = explode(' ', $settings['boards']);
$threads = array();
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( file_write($settings['path'], Element('themes/sitemap/sitemap.xml', Array(
'settings' => $settings, 'settings' => $settings,
'config' => $config, 'config' => $config,
'threads' => $threads, 'threads' => $threads,
'boards' => $boards, 'boards' => $boards,
))); )));
}
} }