Subversion Repositories Applications.papyrus

Rev

Rev 1688 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
831 florian 1
<?php
2
 
3
////////////////////////////////////////////////////////////////////////////////
4
//                                                                            //
5
//   Copyright (C) 2006  Phorum Development Team                              //
6
//   http://www.phorum.org                                                    //
7
//                                                                            //
8
//   This program is free software. You can redistribute it and/or modify     //
9
//   it under the terms of either the current Phorum License (viewable at     //
10
//   phorum.org) or the Phorum License that was distributed with this file    //
11
//                                                                            //
12
//   This program is distributed in the hope that it will be useful,          //
13
//   but WITHOUT ANY WARRANTY, without even the implied warranty of           //
14
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     //
15
//                                                                            //
16
//   You should have received a copy of the Phorum License                    //
17
//   along with this program.                                                 //
18
////////////////////////////////////////////////////////////////////////////////
19
 
20
    include_once "./include/admin/PhorumInputForm.php";
21
 
22
    // The place where our sanity checking modules are.
23
    $sanity_checks_dir = "./include/admin/sanity_checks";
24
 
25
    // ========================================================================
26
    // Load in the available sanity checks.
27
    // ========================================================================
28
 
29
    $sanity_checks = array();
30
    $dh = opendir ($sanity_checks_dir);
31
    if (! $dh) die("Could not open sanity checks directory");
32
    while ($file = readdir($dh)) {
33
        if (preg_match('/^(.+)\.php$/', $file, $m)) {
34
            unset($phorum_check);
35
            include("$sanity_checks_dir/$file");
36
            $func = "phorum_check_$m[1]";
37
            if (! isset($phorum_check) || ! function_exists($func)) {
38
                die("$sanity_checks_dir/$file is no valid check file! " .
39
                    "Either \$phorum_check is not set or the " .
40
                    "function " . htmlspecialchars($func) . " does not exist");
41
                continue;
42
            }
43
 
44
            $sanity_checks[] = array (
45
                'function'    => $func,
46
                'description' => $phorum_check,
47
            );
48
        }
49
    }
50
 
51
    // Give module writers a possiblity to write custom sanity checks.
52
    $sanity_checks = phorum_hook("sanity_checks", $sanity_checks);
53
 
54
    // ========================================================================
55
    // Build the sanity checking page and run all checks.
56
    // ========================================================================
57
 
58
    // Mapping of status to display representation.
59
    $status2display = array(
60
    //  STATUS                       BACKGROUND    FONT     TEXT
61
        PHORUM_SANITY_OK    => array('green',      'white', 'ALL IS OK'),
62
        PHORUM_SANITY_WARN  => array('darkorange', 'white', 'WARNING'),
63
        PHORUM_SANITY_CRIT  => array('red',        'white', 'ERROR'),
64
    );
65
 
66
    $frm = new PhorumInputForm ("", "post", "Restart sanity checks");
67
    $frm->hidden("module", "sanity_checks");
68
    $frm->addbreak("Phorum System Sanity Checks");
69
    $frm->addmessage(
70
        "Below you will find the results for a number of sanity checks
71
         that have been performed on your system. If you see any
72
         warnings or errors, then read the comments for them and
73
         try to resolve the issues."
74
    );
75
 
76
    // Make using $php_errormsg possible for the checks.
77
    ini_set('track_errors', 1);
78
 
79
    // In the case checks take a little while, we want the user
80
    // to have visible feedback.
81
    ob_flush();
82
 
83
    // Run the sanity checks.
84
    foreach ($sanity_checks as $check)
85
    {
86
        // Call the sanity check function. This function is expected
87
        // to return an array containing the following elements:
88
        //
89
        // [1] A status, which can be one of
90
        //     PHORUM_SANITY_OK     No problem found
91
        //     PHORUM_SANITY_WARN   Problem found, but no fatal one
92
        //     PHORUM_SANITY_CRIT   Critical problem found
93
        //
94
        // [2] A description of the problem that was found or NULL.
95
        //
96
        // [3] A solution for the problem or NULL.
97
        //
98
        list($status, $error, $solution) = call_user_func($check["function"]);
99
        if (isset($error)) $error = str_replace("\n", " ", $error);
100
        if (isset($solution)) $solution = str_replace("\n", " ", $solution);
101
        $display = $status2display[$status];
102
        $block = "<div style=\"color:{$display[1]};background-color:{$display[0]};text-align:center;border:1px solid black;\">{$display[2]}</div>";
103
        $row = $frm->addrow($check['description'], $block);
104
        if (! empty($error)) {
105
            if (! empty($solution))
106
                $error .= "<br/><br/>" .
107
                          "<strong>Possible solution:</strong>" .
108
                          "<br/><br/>" .
109
                          $solution;
110
            $frm->addhelp($row,"Sanity check failed",$error);
111
        }
112
    }
113
 
114
    $frm->show();
115
 
116
?>