*/ class admin_plugin_qc extends DokuWiki_Admin_Plugin { var $data; var $order; function getMenuSort() { return 999; } function forAdminOnly() { return false; } /** * @inheritDoc */ public function getMenuIcon() { return __DIR__ . '/svg/good.svg'; } /** * handle the request befor html output * * @see html() */ function handle() { global $conf; // load the quality data if (is_file($conf['tmpdir'] . '/qcgather')) { $this->data = file_get_contents($conf['tmpdir'] . '/qcgather'); $this->data = unserialize($this->data); } else { $this->data = array(); } // order the data if (!isset($_REQUEST['pluginqc']['order'])) { $_REQUEST['pluginqc']['order'] = 'quality'; } switch ($_REQUEST['pluginqc']['order']) { case 'fixme': uasort($this->data, array($this, 'sortFixme')); $this->order = 'fixme'; break; default: uasort($this->data, array($this, 'sortQuality')); $this->order = 'quality'; } } /** * output html for the admin page */ function html() { global $ID; $max = $this->getConf('maxshowen'); if (!$max || $max <= 0) $max = 25; echo '
'; echo '

' . $this->getLang('admin_headline') . '

'; echo '

' . sprintf($this->getLang('admin_desc'), $max) . '

'; echo ''; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; if ($this->data) { foreach ($this->data as $id => $data) { if ($max == 0) break; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; $max--; } } echo '
' . $this->getLang('admin_page') . '' . $this->getOrderArrow('quality') . '' . $this->getLang('admin_quality') . '' . $this->getOrderArrow('fixme') . '' . $this->getLang('admin_fixme') . '
'; tpl_pagelink(':' . $id, $id); echo '' . \dokuwiki\plugin\qc\Output::scoreIcon($data['score']) . '' . $data['err']['fixme'] . '
'; echo '
'; } function getOrderArrow($type) { if ($type == $this->order) return '↓ '; return ''; } /** * order by quality */ function sortQuality($a, $b) { if ($a['score'] == $b['score']) return 0; return ($a['score'] < $b['score']) ? 1 : -1; } /** * order by fixmes */ function sortFixme($a, $b) { if ($a['err']['fixme'] == $b['err']['fixme']) return 0; return ($a['err']['fixme'] < $b['err']['fixme']) ? 1 : -1; } }