fetchAll(PDO::FETCH_ASSOC); $stats = Categories::getPostStatistics($settings); return Element( 'themes/categories/frames.html', Array( 'config' => $config, 'settings' => $settings, 'categories' => Categories::getCategories($config), 'news' => $news, 'stats' => $stats, 'boardlist' => createBoardlist(false) ) ); } // Build news page public static function news($settings) { global $config; $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/categories/news.html', Array( 'settings' => $settings, 'config' => $config, 'news' => $news, 'boardlist' => createBoardlist(false) )); } // Build sidebar public static function sidebar($settings) { global $config, $board; return Element('themes/categories/sidebar.html', Array( 'settings' => $settings, 'config' => $config, 'categories' => Categories::getCategories($config) )); } private static function getCategories($config) { $categories = $config['categories']; foreach ($categories as &$boards) { foreach ($boards as &$board) { $title = boardTitle($board); if (!$title) $title = $board; // board doesn't exist, but for some reason you want to display it anyway $board = Array('title' => $title, 'uri' => sprintf($config['board_path'], $board)); } } return $categories; } private static function getPostStatistics($settings) { $boards = query("SELECT uri FROM ``boards``"); $unique = Array(); $pph = 0; foreach ($boards->fetchAll() as $_board) { $pph_query = query( sprintf("SELECT COUNT(*) AS count FROM ``posts_%s`` WHERE time > %d", $_board['uri'], time()-3600) ) or error(db_error()); $pph += $pph_query->fetch()['count']; $unique_query = query( sprintf("SELECT ip FROM ``posts_%s`` WHERE time > %d", $_board['uri'], time()-3600) ) or error(db_error()); foreach ($unique_query->fetchAll() as $_k => $row) { $unique[$row['ip']] = true; } } $unique_ip_count = count($unique); return Array('pph' => $pph, 'unique_ip_count' => $unique_ip_count); } }; ?>