2013-07-18 17:30:00 +02:00
< ? php
require 'info.php' ;
2013-07-18 18:06:26 +02:00
function catalog_build ( $action , $settings , $board ) {
global $config ;
2013-07-18 17:30:00 +02:00
// Possible values for $action:
// - all (rebuild everything, initialization)
// - news (news has been updated)
// - boards (board list changed)
2013-07-18 18:06:26 +02:00
// - post (a reply has been made)
// - post-thread (a thread has been made)
2013-07-18 17:30:00 +02:00
2014-04-05 23:04:46 +02:00
if ( $settings [ 'all' ]) {
$_boards = listBoards ();
$boards = array ();
foreach ( $_boards as $i => $b )
$boards [] = $b [ 'uri' ];
} else {
$boards = explode ( ' ' , $settings [ 'boards' ]);
}
2013-07-18 18:06:26 +02:00
if ( $action == 'all' ) {
copy ( 'templates/themes/catalog/catalog.css' , $config [ 'dir' ][ 'home' ] . $settings [ 'css' ]);
2013-07-18 17:30:00 +02:00
foreach ( $boards as $board ) {
2013-07-18 18:06:26 +02:00
$b = new Catalog ();
$b -> build ( $settings , $board );
2013-07-18 17:30:00 +02:00
}
2014-04-05 23:04:46 +02:00
} elseif ( $action == 'post-thread' || ( $settings [ 'update_on_posts' ] && $action == 'post' ) || ( $settings [ 'update_on_posts' ] && $action == 'post-delete' ) && ( in_array ( $board , $boards ) | $settings [ 'all' ])) {
2013-07-18 18:06:26 +02:00
$b = new Catalog ();
$b -> build ( $settings , $board );
2013-07-18 17:30:00 +02:00
}
2013-07-18 18:06:26 +02:00
}
// Wrap functions in a class so they don't interfere with normal Tinyboard operations
class Catalog {
public function build ( $settings , $board_name ) {
2013-07-18 17:30:00 +02:00
global $config , $board ;
2013-07-18 18:06:26 +02:00
openBoard ( $board_name );
2013-07-18 17:30:00 +02:00
$recent_images = array ();
$recent_posts = array ();
$stats = array ();
2013-08-01 04:14:26 +02:00
$query = query ( sprintf ( " SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM ``posts_%s`` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM ``posts_%s`` WHERE `thread` IS NULL ORDER BY `bump` DESC " , $board_name , $board_name , $board_name )) or error ( db_error ());
2013-07-18 17:30:00 +02:00
2013-08-01 02:51:43 +02:00
while ( $post = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-07-18 17:30:00 +02:00
$post [ 'link' ] = $config [ 'root' ] . $board [ 'dir' ] . $config [ 'dir' ][ 'res' ] . sprintf ( $config [ 'file_page' ], ( $post [ 'thread' ] ? $post [ 'thread' ] : $post [ 'id' ]));
$post [ 'board_name' ] = $board [ 'name' ];
$post [ 'file' ] = $config [ 'uri_thumb' ] . $post [ 'thumb' ];
$recent_posts [] = $post ;
}
2013-07-18 18:06:26 +02:00
file_write ( $config [ 'dir' ][ 'home' ] . $board_name . '/catalog.html' , Element ( 'themes/catalog/catalog.html' , Array (
2013-07-18 17:30:00 +02:00
'settings' => $settings ,
'config' => $config ,
'boardlist' => createBoardlist (),
'recent_images' => $recent_images ,
'recent_posts' => $recent_posts ,
'stats' => $stats ,
'board' => $board_name ,
'link' => $config [ 'root' ] . $board [ 'dir' ]
2013-07-18 18:06:26 +02:00
)));
2013-07-18 17:30:00 +02:00
}
};