|
|
@ -15,21 +15,28 @@ |
|
|
|
public static function build($action, $settings) { |
|
|
|
global $config; |
|
|
|
|
|
|
|
if ($action == 'all') |
|
|
|
if ($action == 'all' || |
|
|
|
$action == 'boards' || |
|
|
|
$action == 'news' || |
|
|
|
$action == 'post' || |
|
|
|
$action == 'post-thread' || |
|
|
|
$action == 'post-delete'){ |
|
|
|
file_write($config['dir']['home'] . $settings['file_main'], Categories::homepage($settings)); |
|
|
|
file_write($config['dir']['home'] . $settings['file_news'], Categories::news($settings)); |
|
|
|
} |
|
|
|
|
|
|
|
if ($action == 'all' || $action == 'boards') |
|
|
|
if ($action == 'all'){ |
|
|
|
file_write($config['dir']['home'] . $settings['file_sidebar'], Categories::sidebar($settings)); |
|
|
|
|
|
|
|
if ($action == 'all' || $action == 'news') |
|
|
|
file_write($config['dir']['home'] . $settings['file_news'], Categories::news($settings)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Build homepage |
|
|
|
public static function homepage($settings) { |
|
|
|
global $config; |
|
|
|
$query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); |
|
|
|
$news = $query->fetchAll(PDO::FETCH_ASSOC); |
|
|
|
$stats = Categories::getPostStatistics($settings); |
|
|
|
return Element( |
|
|
|
'themes/categories/frames.html', |
|
|
|
Array( |
|
|
@ -37,6 +44,7 @@ |
|
|
|
'settings' => $settings, |
|
|
|
'categories' => Categories::getCategories($config), |
|
|
|
'news' => $news, |
|
|
|
'stats' => $stats, |
|
|
|
'boardlist' => createBoardlist(false) |
|
|
|
|
|
|
|
) |
|
|
@ -49,11 +57,12 @@ |
|
|
|
|
|
|
|
$query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); |
|
|
|
$news = $query->fetchAll(PDO::FETCH_ASSOC); |
|
|
|
|
|
|
|
$stats = Categories::getPostStatistics($settings); |
|
|
|
return Element('themes/categories/news.html', Array( |
|
|
|
'settings' => $settings, |
|
|
|
'config' => $config, |
|
|
|
'news' => $news, |
|
|
|
'stats' => $stats, |
|
|
|
'boardlist' => createBoardlist(false) |
|
|
|
)); |
|
|
|
} |
|
|
@ -83,6 +92,57 @@ |
|
|
|
|
|
|
|
return $categories; |
|
|
|
} |
|
|
|
|
|
|
|
private static function getPostStatistics($settings) { |
|
|
|
global $config; |
|
|
|
|
|
|
|
if (!isset($config['boards'])) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
$stats = []; |
|
|
|
$unique = []; |
|
|
|
|
|
|
|
foreach (array_merge(... $config['boards']) as $uri) { |
|
|
|
$_board = getBoardInfo($uri); |
|
|
|
if (!$_board) { |
|
|
|
// board doesn't exist. |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
$boardStat['title'] = $_board['title']; |
|
|
|
|
|
|
|
$pph_query = query( |
|
|
|
sprintf("SELECT COUNT(*) AS count FROM ``posts_%s`` WHERE time > %d", |
|
|
|
$_board['uri'], |
|
|
|
time()-3600) |
|
|
|
) or error(db_error()); |
|
|
|
|
|
|
|
$boardStat['pph'] = $pph_query->fetch()['count']; |
|
|
|
|
|
|
|
$unique_query = query( |
|
|
|
sprintf("SELECT DISTINCT ip FROM ``posts_%s`` WHERE time > %d", |
|
|
|
$_board['uri'], |
|
|
|
time()-3600) |
|
|
|
) or error(db_error()); |
|
|
|
|
|
|
|
$unique_ips = $unique_query->fetchAll(); |
|
|
|
$boardStat['recent_ips'] = count($unique_ips); |
|
|
|
|
|
|
|
foreach ($unique_ips as $_k => $row) { |
|
|
|
$unique[$row['ip']] = true; |
|
|
|
} |
|
|
|
|
|
|
|
$stats['boards'][] = $boardStat; |
|
|
|
} |
|
|
|
|
|
|
|
$stats['recent_ips'] = count($unique); |
|
|
|
$stats['pph'] = array_sum(array_column($stats['boards'], 'pph')); |
|
|
|
|
|
|
|
return $stats; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
?> |
|
|
|