xref: /plugin/qc/admin.php (revision e840d0fcd25176272f44c7f2716cddf36cca88e8)
1*e840d0fcSDominik Eckelmann<?php
2*e840d0fcSDominik Eckelmannif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
3*e840d0fcSDominik Eckelmannif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4*e840d0fcSDominik Eckelmann
5*e840d0fcSDominik Eckelmannrequire_once(DOKU_PLUGIN.'admin.php');
6*e840d0fcSDominik Eckelmannrequire_once(DOKU_INC.'inc/pageutils.php');
7*e840d0fcSDominik Eckelmannrequire_once(DOKU_INC.'inc/io.php');
8*e840d0fcSDominik Eckelmannrequire_once(DOKU_INC.'inc/common.php');
9*e840d0fcSDominik Eckelmann
10*e840d0fcSDominik Eckelmann/**
11*e840d0fcSDominik Eckelmann * This plugin is used to display a summery of all FIXME pages
12*e840d0fcSDominik Eckelmann *
13*e840d0fcSDominik Eckelmann * @see http://dokuwiki.org/plugin:qc
14*e840d0fcSDominik Eckelmann * @author Dominik Eckelmann <dokuwiki@cosmocode.de>
15*e840d0fcSDominik Eckelmann */
16*e840d0fcSDominik Eckelmannclass admin_plugin_qc extends DokuWiki_Admin_Plugin {
17*e840d0fcSDominik Eckelmann
18*e840d0fcSDominik Eckelmann    var $data;
19*e840d0fcSDominik Eckelmann    var $order;
20*e840d0fcSDominik Eckelmann
21*e840d0fcSDominik Eckelmann    function getMenuSort()      { return 999; }
22*e840d0fcSDominik Eckelmann    function forAdminOnly()     { return false; }
23*e840d0fcSDominik Eckelmann
24*e840d0fcSDominik Eckelmann    /**
25*e840d0fcSDominik Eckelmann     * handle the request befor html output
26*e840d0fcSDominik Eckelmann     *
27*e840d0fcSDominik Eckelmann     * @see html()
28*e840d0fcSDominik Eckelmann     */
29*e840d0fcSDominik Eckelmann    function handle() {
30*e840d0fcSDominik Eckelmann        global $conf;
31*e840d0fcSDominik Eckelmann
32*e840d0fcSDominik Eckelmann        // load the quality data
33*e840d0fcSDominik Eckelmann        if (is_file($conf['tmpdir'].'/qcgather')) {
34*e840d0fcSDominik Eckelmann            $this->data = io_readFile($conf['tmpdir'].'/qcgather');
35*e840d0fcSDominik Eckelmann            $this->data = unserialize($this->data);
36*e840d0fcSDominik Eckelmann        } else {
37*e840d0fcSDominik Eckelmann            $this->data = array();
38*e840d0fcSDominik Eckelmann        }
39*e840d0fcSDominik Eckelmann
40*e840d0fcSDominik Eckelmann        // order the data
41*e840d0fcSDominik Eckelmann        if (!isset($_REQUEST['pluginqc']['order'])) {
42*e840d0fcSDominik Eckelmann            $_REQUEST['pluginqc']['order'] = 'quality';
43*e840d0fcSDominik Eckelmann        }
44*e840d0fcSDominik Eckelmann
45*e840d0fcSDominik Eckelmann        switch ($_REQUEST['pluginqc']['order']) {
46*e840d0fcSDominik Eckelmann            case 'fixme':
47*e840d0fcSDominik Eckelmann                uasort($this->data, array($this, 'sortFixme'));
48*e840d0fcSDominik Eckelmann                $this->order = 'fixme';
49*e840d0fcSDominik Eckelmann                break;
50*e840d0fcSDominik Eckelmann            default:
51*e840d0fcSDominik Eckelmann                uasort($this->data, array($this, 'sortQuality'));
52*e840d0fcSDominik Eckelmann                $this->order = 'quality';
53*e840d0fcSDominik Eckelmann        }
54*e840d0fcSDominik Eckelmann    }
55*e840d0fcSDominik Eckelmann
56*e840d0fcSDominik Eckelmann    /**
57*e840d0fcSDominik Eckelmann     * output html for the admin page
58*e840d0fcSDominik Eckelmann     */
59*e840d0fcSDominik Eckelmann    function html() {
60*e840d0fcSDominik Eckelmann        global $ID;
61*e840d0fcSDominik Eckelmann        $max = $this->getConf('maxshowen');
62*e840d0fcSDominik Eckelmann        if (!$max || $max <= 0) $max = 25;
63*e840d0fcSDominik Eckelmann
64*e840d0fcSDominik Eckelmann        echo '<div id="plugin__qc_admin">';
65*e840d0fcSDominik Eckelmann        echo '<h1>'.$this->getLang('admin_headline').'</h1>';
66*e840d0fcSDominik Eckelmann
67*e840d0fcSDominik Eckelmann        echo '<p>'.sprintf($this->getLang('admin_desc'),$max).'</p>';
68*e840d0fcSDominik Eckelmann
69*e840d0fcSDominik Eckelmann        echo '<table class="inline">';
70*e840d0fcSDominik Eckelmann        echo '  <tr>';
71*e840d0fcSDominik Eckelmann        echo '    <th>'.$this->getLang('admin_page').'</th>';
72*e840d0fcSDominik Eckelmann        echo '    <th class="quality">'.$this->getOrderArrow('quality').'<a href="'.wl($ID,array('do'=>'admin','page'=>'qc','pluginqc[order]'=>'quality')).'">'.$this->getLang('admin_quality').'</a></th>';
73*e840d0fcSDominik Eckelmann        echo '    <th class="fixme">'.$this->getOrderArrow('fixme').'<a href="'.wl($ID,array('do'=>'admin','page'=>'qc','pluginqc[order]'=>'fixme')).'">'.$this->getLang('admin_fixme').'</a></th>';
74*e840d0fcSDominik Eckelmann        echo '  </tr>';
75*e840d0fcSDominik Eckelmann
76*e840d0fcSDominik Eckelmann        if ($this->data) {
77*e840d0fcSDominik Eckelmann            foreach ($this->data as $id => $data) {
78*e840d0fcSDominik Eckelmann                if ($max == 0) break;
79*e840d0fcSDominik Eckelmann                echo '  <tr>';
80*e840d0fcSDominik Eckelmann                echo '    <td>';
81*e840d0fcSDominik Eckelmann                tpl_pagelink($id, $id);
82*e840d0fcSDominik Eckelmann                echo '</td>';
83*e840d0fcSDominik Eckelmann                echo '    <td class="centeralign">' . $data['score'] . ' <img src="'. $this->getImgUrl($data['score']) .'" /></td>';
84*e840d0fcSDominik Eckelmann                echo '    <td class="centeralign">' . $data['err']['fixme'] . '</td>';
85*e840d0fcSDominik Eckelmann                echo '  </tr>';
86*e840d0fcSDominik Eckelmann                $max--;
87*e840d0fcSDominik Eckelmann            }
88*e840d0fcSDominik Eckelmann        }
89*e840d0fcSDominik Eckelmann
90*e840d0fcSDominik Eckelmann        echo '</table>';
91*e840d0fcSDominik Eckelmann        echo '</div>';
92*e840d0fcSDominik Eckelmann    }
93*e840d0fcSDominik Eckelmann
94*e840d0fcSDominik Eckelmann    function getOrderArrow($type) {
95*e840d0fcSDominik Eckelmann        if ($type == $this->order) return '&darr; ';
96*e840d0fcSDominik Eckelmann        return '';
97*e840d0fcSDominik Eckelmann    }
98*e840d0fcSDominik Eckelmann
99*e840d0fcSDominik Eckelmann    function getImgUrl($score, $return = true) {
100*e840d0fcSDominik Eckelmann        $maxerr = 10;
101*e840d0fcSDominik Eckelmann        if ($score > $maxerr) {
102*e840d0fcSDominik Eckelmann            $ico = DOKU_BASE . 'lib/plugins/qc/pix/'.$this->getConf('theme').'/status_red.png';
103*e840d0fcSDominik Eckelmann        } elseif($score) {
104*e840d0fcSDominik Eckelmann            $ico = DOKU_BASE . 'lib/plugins/qc/pix/'.$this->getConf('theme').'/status_yellow.png';
105*e840d0fcSDominik Eckelmann        } else {
106*e840d0fcSDominik Eckelmann            $ico = DOKU_BASE . 'lib/plugins/qc/pix/'.$this->getConf('theme').'/status_green.png';
107*e840d0fcSDominik Eckelmann        }
108*e840d0fcSDominik Eckelmann        if ($return) return $ico;
109*e840d0fcSDominik Eckelmann        echo $ico;
110*e840d0fcSDominik Eckelmann    }
111*e840d0fcSDominik Eckelmann
112*e840d0fcSDominik Eckelmann    /**
113*e840d0fcSDominik Eckelmann     * order by quality
114*e840d0fcSDominik Eckelmann     */
115*e840d0fcSDominik Eckelmann    function sortQuality($a, $b) {
116*e840d0fcSDominik Eckelmann        if ($a['score'] == $b['score']) return 0;
117*e840d0fcSDominik Eckelmann        return ($a['score'] < $b['score']) ? 1 : -1;
118*e840d0fcSDominik Eckelmann    }
119*e840d0fcSDominik Eckelmann
120*e840d0fcSDominik Eckelmann    /**
121*e840d0fcSDominik Eckelmann     * order by fixmes
122*e840d0fcSDominik Eckelmann     */
123*e840d0fcSDominik Eckelmann    function sortFixme($a, $b) {
124*e840d0fcSDominik Eckelmann        if ($a['err']['fixme'] == $b['err']['fixme']) return 0;
125*e840d0fcSDominik Eckelmann        return ($a['err']['fixme'] < $b['err']['fixme']) ? 1 : -1;
126*e840d0fcSDominik Eckelmann    }
127*e840d0fcSDominik Eckelmann
128*e840d0fcSDominik Eckelmann}
129*e840d0fcSDominik Eckelmann
130*e840d0fcSDominik Eckelmann?>
131