xref: /plugin/acknowledge/syntax/listing.php (revision 73d53d5ba02d973a1850b5e1271b5ec9ad90f961)
174126d4bSAnna Dabrowska<?php
274126d4bSAnna Dabrowska/**
374126d4bSAnna Dabrowska * DokuWiki Plugin acknowledge (Syntax Component)
474126d4bSAnna Dabrowska *
574126d4bSAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
674126d4bSAnna Dabrowska * @author  Andreas Gohr, Anna Dabrowska <dokuwiki@cosmocode.de>
774126d4bSAnna Dabrowska */
874126d4bSAnna Dabrowska
974126d4bSAnna Dabrowskaclass syntax_plugin_acknowledge_listing extends DokuWiki_Syntax_Plugin
1074126d4bSAnna Dabrowska{
1174126d4bSAnna Dabrowska    /** @inheritDoc */
1274126d4bSAnna Dabrowska    public function getType()
1374126d4bSAnna Dabrowska    {
1474126d4bSAnna Dabrowska        return 'substition';
1574126d4bSAnna Dabrowska    }
1674126d4bSAnna Dabrowska
1774126d4bSAnna Dabrowska    /** @inheritDoc */
1874126d4bSAnna Dabrowska    public function getPType()
1974126d4bSAnna Dabrowska    {
2074126d4bSAnna Dabrowska        return 'block';
2174126d4bSAnna Dabrowska    }
2274126d4bSAnna Dabrowska
2374126d4bSAnna Dabrowska    /** @inheritDoc */
2474126d4bSAnna Dabrowska    public function getSort()
2574126d4bSAnna Dabrowska    {
2674126d4bSAnna Dabrowska        return 155;
2774126d4bSAnna Dabrowska    }
2874126d4bSAnna Dabrowska
2974126d4bSAnna Dabrowska    /** @inheritDoc */
3074126d4bSAnna Dabrowska    public function connectTo($mode)
3174126d4bSAnna Dabrowska    {
3274126d4bSAnna Dabrowska        $this->Lexer->addSpecialPattern('~~ACKNOWLEDGE~~', $mode, 'plugin_acknowledge_listing');
3374126d4bSAnna Dabrowska    }
3474126d4bSAnna Dabrowska
3574126d4bSAnna Dabrowska    /** @inheritDoc */
36*73d53d5bSAnna Dabrowska    public function handle($match, $state, $pos, Doku_Handler $handler)
37*73d53d5bSAnna Dabrowska    {
38*73d53d5bSAnna Dabrowska    }
39*73d53d5bSAnna Dabrowska
40*73d53d5bSAnna Dabrowska    /** @inheritDoc */
4174126d4bSAnna Dabrowska    public function render($mode, Doku_Renderer $renderer, $data)
4274126d4bSAnna Dabrowska    {
4374126d4bSAnna Dabrowska        if ($mode !== 'xhtml') {
4474126d4bSAnna Dabrowska            return false;
4574126d4bSAnna Dabrowska        }
4674126d4bSAnna Dabrowska
4774126d4bSAnna Dabrowska        $renderer->info['cache'] = false;
4874126d4bSAnna Dabrowska
4974126d4bSAnna Dabrowska        $renderer->doc .= '<div class="plugin-acknowledge-listing">';
5074126d4bSAnna Dabrowska        $renderer->doc .= $this->getListing();
5174126d4bSAnna Dabrowska        $renderer->doc .= '</div>';
5274126d4bSAnna Dabrowska        return true;
5374126d4bSAnna Dabrowska    }
5474126d4bSAnna Dabrowska
5574126d4bSAnna Dabrowska    /**
5674126d4bSAnna Dabrowska     * Returns the list of pages to be acknowledged by the user
5774126d4bSAnna Dabrowska     *
5874126d4bSAnna Dabrowska     * @return string
5974126d4bSAnna Dabrowska     */
6074126d4bSAnna Dabrowska    protected function getListing()
6174126d4bSAnna Dabrowska    {
6274126d4bSAnna Dabrowska        global $INPUT;
6374126d4bSAnna Dabrowska        $user = $INPUT->server->str('REMOTE_USER');
6474126d4bSAnna Dabrowska        if ($user === '') return '';
6574126d4bSAnna Dabrowska
6674126d4bSAnna Dabrowska        /** @var helper_plugin_acknowledge $helper */
6774126d4bSAnna Dabrowska        $helper = plugin_load('helper', 'acknowledge');
6874126d4bSAnna Dabrowska        $all = $helper->getUserAssignments($user);
6974126d4bSAnna Dabrowska        $pending = $helper->filterAcknowledged($user, $all);
7074126d4bSAnna Dabrowska
7174126d4bSAnna Dabrowska        $html =  $this->getLang('ackNotFound');
7274126d4bSAnna Dabrowska
7374126d4bSAnna Dabrowska        if (!empty($pending)) {
7474126d4bSAnna Dabrowska            $html = '<ul>';
7574126d4bSAnna Dabrowska            foreach ($pending as $item) {
76*73d53d5bSAnna Dabrowska                // FIXME find better way of handling root links on namespaced pages
77*73d53d5bSAnna Dabrowska                if (strpos($item['page'], ':') === false) $item['page'] = ':' . $item['page'];
78*73d53d5bSAnna Dabrowska                $html .= '<li>' . html_wikilink($item['page']) . '</li>';
7974126d4bSAnna Dabrowska            }
8074126d4bSAnna Dabrowska            $html .= '</ul>';
8174126d4bSAnna Dabrowska        }
8274126d4bSAnna Dabrowska
8374126d4bSAnna Dabrowska        return $html;
8474126d4bSAnna Dabrowska    }
8574126d4bSAnna Dabrowska}
8674126d4bSAnna Dabrowska
87