xref: /plugin/tagging/admin.php (revision 89ed97adc6d7f9c2ec90ca4f233633251c6fc491)
1872edc7cSRené Corinth<?php
2872edc7cSRené Corinth// must be run within Dokuwiki
30cfde7e9SMichael Großeif (!defined('DOKU_INC')) {
40cfde7e9SMichael Große    die();
50cfde7e9SMichael Große}
6872edc7cSRené Corinth
7872edc7cSRené Corinthclass admin_plugin_tagging extends DokuWiki_Admin_Plugin {
8872edc7cSRené Corinth
98a1a3846SAndreas Gohr    /** @var helper_plugin_tagging */
10872edc7cSRené Corinth    private $hlp;
11872edc7cSRené Corinth
128a1a3846SAndreas Gohr    public function __construct() {
13872edc7cSRené Corinth        $this->hlp = plugin_load('helper', 'tagging');
148a1a3846SAndreas Gohr    }
15872edc7cSRené Corinth
168a1a3846SAndreas Gohr    /**
178a1a3846SAndreas Gohr     * We allow use by managers
188a1a3846SAndreas Gohr     *
198a1a3846SAndreas Gohr     * @return bool always false
208a1a3846SAndreas Gohr     */
218a1a3846SAndreas Gohr    function forAdminOnly() {
228a1a3846SAndreas Gohr        return false;
238a1a3846SAndreas Gohr    }
248a1a3846SAndreas Gohr
258a1a3846SAndreas Gohr    /**
2631396860SSzymon Olewniczak     * Handle tag actions
27fece5bdcSAnna Dabrowska     *
28fece5bdcSAnna Dabrowska     * FIXME remove obsolete actions
298a1a3846SAndreas Gohr     */
308a1a3846SAndreas Gohr    function handle() {
3131396860SSzymon Olewniczak        global $ID, $INPUT;
3231396860SSzymon Olewniczak
338e9d0162SSzymon Olewniczak        //by default sort by tag name
34ca455b8eSMichael Große        if (!$INPUT->has('sort')) {
35ca455b8eSMichael Große            $INPUT->set('sort', 'tid');
36ca455b8eSMichael Große        }
378e9d0162SSzymon Olewniczak
3831396860SSzymon Olewniczak        //now starts functions handle
39ca455b8eSMichael Große        if (!$INPUT->has('fn')) {
40ca455b8eSMichael Große            return false;
41ca455b8eSMichael Große        }
42ca455b8eSMichael Große        if (!checkSecurityToken()) {
43ca455b8eSMichael Große            return false;
44ca455b8eSMichael Große        }
4531396860SSzymon Olewniczak
4631396860SSzymon Olewniczak        // extract the command and any specific parameters
4731396860SSzymon Olewniczak        // submit button name is of the form - fn[cmd][param(s)]
4831396860SSzymon Olewniczak        $fn = $INPUT->param('fn');
4931396860SSzymon Olewniczak
5031396860SSzymon Olewniczak        if (is_array($fn)) {
5131396860SSzymon Olewniczak            $cmd = key($fn);
5231396860SSzymon Olewniczak            $param = is_array($fn[$cmd]) ? key($fn[$cmd]) : null;
5331396860SSzymon Olewniczak        } else {
5431396860SSzymon Olewniczak            $cmd = $fn;
5531396860SSzymon Olewniczak            $param = null;
5631396860SSzymon Olewniczak        }
5731396860SSzymon Olewniczak
5831396860SSzymon Olewniczak        switch ($cmd) {
598e9d0162SSzymon Olewniczak            case 'rename':
608e9d0162SSzymon Olewniczak                $this->hlp->renameTag($INPUT->str('old'), $INPUT->str('new'));
618e9d0162SSzymon Olewniczak                break;
628e9d0162SSzymon Olewniczak            case 'delete':
638e9d0162SSzymon Olewniczak                $this->hlp->deleteTags(array_keys($INPUT->arr('tags')), $INPUT->str('filter'));
648e9d0162SSzymon Olewniczak                break;
658e9d0162SSzymon Olewniczak            case 'sort':
668e9d0162SSzymon Olewniczak                $INPUT->set('sort', $param);
678e9d0162SSzymon Olewniczak                break;
688e9d0162SSzymon Olewniczak
69872edc7cSRené Corinth        }
70872edc7cSRené Corinth    }
71872edc7cSRené Corinth
728a1a3846SAndreas Gohr    /**
738a1a3846SAndreas Gohr     * Draw the interface
748a1a3846SAndreas Gohr     */
75*89ed97adSAnna Dabrowska    public function html() {
768a1a3846SAndreas Gohr        echo $this->locale_xhtml('intro');
77*89ed97adSAnna Dabrowska        echo $this->hlp->html_table();
788f630140SSzymon Olewniczak    }
79872edc7cSRené Corinth}
80