assign('lang_manageboards', _gettext('Manage boards')); $manage_class = new Manage(); $bans_class = new Bans(); if (isset($_GET['graph'])) { $manage_class->ValidateSession(); require KU_ROOTDIR . 'lib/graph/phpgraphlib.php'; if (isset($_GET['type'])) { if ($_GET['type'] == 'day' || $_GET['type'] == 'week' || $_GET['type'] == 'postnum' || $_GET['type'] == 'unique' || $_GET['type'] == 'posttime') { $graph = new PHPGraphLib(600, 600); if ($_GET['type'] == 'day') { $graph->setTitle('Posts per board in past 24hrs'); $results = $ku_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC"); if (count($results) > 0) { $data = array(); foreach ($results as $line) { $posts = $tc_db->GetOne("SELECT HIGH_PRIORITY COUNT(*) FROM `" . KU_DBPREFIX . "posts_" . $line['name'] . "` WHERE `postedat` > " . (time() - 86400) . ""); $data = array_merge($data, array($line['name'] => $posts)); } } } elseif ($_GET['type'] == 'week') { $graph->setTitle('Posts per board in past week'); $results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC"); if (count($results) > 0) { $data = array(); foreach ($results as $line) { $posts = $tc_db->GetOne("SELECT HIGH_PRIORITY COUNT(*) FROM `" . KU_DBPREFIX . "posts_" . $line['name'] . "` WHERE `postedat` > " . (time() - 604800) . ""); $data = array_merge($data, array($line['name'] => $posts)); } } } elseif ($_GET['type'] == 'postnum') { $graph->setTitle('Total posts per board'); $results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC"); if (count($results) > 0) { $data = array(); foreach ($results as $line) { $posts = $tc_db->GetOne("SELECT `id` FROM `" . KU_DBPREFIX . "posts_" . $line['name'] . "` ORDER BY `id` DESC LIMIT 1"); $data = array_merge($data, array($line['name'] => $posts)); } } } elseif ($_GET['type'] == 'unique') { $graph->setTitle('Unique user posts per board'); $results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC"); if (count($results) > 0) { $data = array(); foreach ($results as $line) { $posts = $tc_db->GetOne("SELECT COUNT(DISTINCT `ipmd5`) FROM `" . KU_DBPREFIX . "posts_" . $line['name'] . "` WHERE `IS_DELETED` = 0"); $data = array_merge($data, array($line['name'] => $posts)); } } } elseif ($_GET['type'] == 'posttime') { $graph->setTitle('Average #minutes between posts (past week), boards without posts in past week not shown'); $results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC"); if (count($results) > 0) { $data = array(); foreach ($results as $line) { $posts = $tc_db->GetAll("SELECT `postedat` FROM `" . KU_DBPREFIX . "posts_" . $line['name'] . "` WHERE `postedat` > " . (time() - 604800) . " ORDER BY `id` ASC"); if (count($posts) > 0) { $i = 0; $lastpost_time = 0; $times = array(); foreach ($posts as $post) { $i++; if ($i > 1) { $times[] = ($post['postedat'] - $lastpost_time); } $lastpost_time = $post['postedat']; } $times_sum = array_sum($times); if ($times_sum > 0) { $times_sum = ($times_sum / 60); $times_avg = ($times_sum / count($times)); } else { $times_avg = 0; } } else { $times_avg = 0; } if ($times_avg > 0) { $data = array_merge($data, array($line['name'] => $times_avg)); } } } } $graph->addData($data); $graph->setTextColor('black'); $graph->createGraph(); } } die(); } /* Do these tasks each time manage.php is loaded */ /* Doesn't matter if this is run by a non-mod */ $bans_class->RemoveExpiredBans(); /* Doesn't matter if this is run by a non-mod */ delete_accepted_reports(); /* Does nothing if the user isn't logged in */ $manage_class->SetModerationCookies(); /* Decide what needs to be done */ $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'posting_rates'; switch ($action) { case 'logout': $manage_class->Logout(); break; case 'showlogin': $manage_class->LoginForm(); break; case 'login': $manage_class->CheckLogin(); /* Halts execution if not validated */ $manage_class->ValidateSession(); manage_page(); break; default: /* Halts execution if not validated */ $manage_class->ValidateSession(); manage_page($action); break; } /* Show a particular manage function */ function manage_page($action = 'posting_rates') { global $manage_class, $tpl_page; $manage_class->Header(); if (is_callable(array($manage_class, $action))) { $manage_class->$action(); } else { $tpl_page .= sprintf(_gettext('%s not implemented.'), $action); } $manage_class->Footer(); } /* Deletes reports that have the reported post has been deleted */ function delete_accepted_reports() { /* global $tc_db; $results = $tc_db->GetAll("SELECT ".KU_DBPREFIX."reports.id FROM ".KU_DBPREFIX."reports JOIN ".KU_DBPREFIX."posts ON ".KU_DBPREFIX."reports.postid = ".KU_DBPREFIX."posts.id AND ".KU_DBPREFIX."reports.boardid = ".KU_DBPREFIX."posts.boardid WHERE ".KU_DBPREFIX."posts.IS_DELETED = 1"); if (count($results)>0) { foreach($results AS $line) { $tc_db->Execute("DELETE FROM ".KU_DBPREFIX."reports WHERE id = ".$line['id'].""); } }*/ } //Devnote: Broken, needs to be fixed /* Check if a tab is currently open */ function pagetaken_check($pagename) { global $action; $tab_is_selected = false; $pages = array('home', 'administration', 'boards', 'moderation'); foreach ($pages as $page) { if (isset($_GET[$page])) { $tab_is_selected = true; } } if ($tab_is_selected && isset($_GET[$pagename])) { return true; } else { /* Special workaround for index page */ if ($pagename == 'home' && ($action == 'posting_rates' || $action == '') && !$tab_is_selected) { return true; } else { return false; } } } ?>