Rev 1372 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php////////////////////////////////////////////////////////////////////////////////// //// Copyright (C) 2006 Phorum Development Team //// http://www.phorum.org //// //// This program is free software. You can redistribute it and/or modify //// it under the terms of either the current Phorum License (viewable at //// phorum.org) or the Phorum License that was distributed with this file //// //// This program is distributed in the hope that it will be useful, //// but WITHOUT ANY WARRANTY, without even the implied warranty of //// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //// //// You should have received a copy of the Phorum License //// along with this program. //////////////////////////////////////////////////////////////////////////////////include_once "./include/admin/PhorumInputForm.php";// The place where our sanity checking modules are.$sanity_checks_dir = "./include/admin/sanity_checks";// ========================================================================// Load in the available sanity checks.// ========================================================================$sanity_checks = array();$dh = opendir ($sanity_checks_dir);if (! $dh) die("Could not open sanity checks directory");while ($file = readdir($dh)) {if (preg_match('/^(.+)\.php$/', $file, $m)) {unset($phorum_check);include("$sanity_checks_dir/$file");$func = "phorum_check_$m[1]";if (! isset($phorum_check) || ! function_exists($func)) {die("$sanity_checks_dir/$file is no valid check file! " ."Either \$phorum_check is not set or the " ."function " . htmlspecialchars($func) . " does not exist");continue;}$sanity_checks[] = array ('function' => $func,'description' => $phorum_check,);}}// Give module writers a possiblity to write custom sanity checks.$sanity_checks = phorum_hook("sanity_checks", $sanity_checks);// ========================================================================// Build the sanity checking page and run all checks.// ========================================================================// Mapping of status to display representation.$status2display = array(// STATUS BACKGROUND FONT TEXTPHORUM_SANITY_OK => array('green', 'white', 'ALL IS OK'),PHORUM_SANITY_WARN => array('darkorange', 'white', 'WARNING'),PHORUM_SANITY_CRIT => array('red', 'white', 'ERROR'),);$frm = new PhorumInputForm ("", "post", "Restart sanity checks");$frm->hidden("module", "sanity_checks");$frm->addbreak("Phorum System Sanity Checks");$frm->addmessage("Below you will find the results for a number of sanity checksthat have been performed on your system. If you see anywarnings or errors, then read the comments for them andtry to resolve the issues.");// Make using $php_errormsg possible for the checks.ini_set('track_errors', 1);// In the case checks take a little while, we want the user// to have visible feedback.ob_flush();// Run the sanity checks.foreach ($sanity_checks as $check){// Call the sanity check function. This function is expected// to return an array containing the following elements://// [1] A status, which can be one of// PHORUM_SANITY_OK No problem found// PHORUM_SANITY_WARN Problem found, but no fatal one// PHORUM_SANITY_CRIT Critical problem found//// [2] A description of the problem that was found or NULL.//// [3] A solution for the problem or NULL.//list($status, $error, $solution) = call_user_func($check["function"]);if (isset($error)) $error = str_replace("\n", " ", $error);if (isset($solution)) $solution = str_replace("\n", " ", $solution);$display = $status2display[$status];$block = "<div style=\"color:{$display[1]};background-color:{$display[0]};text-align:center;border:1px solid black;\">{$display[2]}</div>";$row = $frm->addrow($check['description'], $block);if (! empty($error)) {if (! empty($solution))$error .= "<br/><br/>" ."<strong>Possible solution:</strong>" ."<br/><br/>" .$solution;$frm->addhelp($row,"Sanity check failed",$error);}}$frm->show();?>