xref: /plugin/acknowledge/syntax/listing.php (revision 8c50976efc58c5b5de7cb2b0f6f78952927e89c4)
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 */
3673d53d5bSAnna Dabrowska    public function handle($match, $state, $pos, Doku_Handler $handler)
3773d53d5bSAnna Dabrowska    {
3873d53d5bSAnna Dabrowska    }
3973d53d5bSAnna Dabrowska
4073d53d5bSAnna 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;
63*8c50976eSAnna Dabrowska        global $USERINFO;
64*8c50976eSAnna Dabrowska
6574126d4bSAnna Dabrowska        $user = $INPUT->server->str('REMOTE_USER');
6674126d4bSAnna Dabrowska        if ($user === '') return '';
6774126d4bSAnna Dabrowska
68*8c50976eSAnna Dabrowska        $groups = $USERINFO['grps'];
69*8c50976eSAnna Dabrowska
7074126d4bSAnna Dabrowska        /** @var helper_plugin_acknowledge $helper */
7174126d4bSAnna Dabrowska        $helper = plugin_load('helper', 'acknowledge');
72*8c50976eSAnna Dabrowska        $pending = $helper->getUserAssignments($user, $groups);
7374126d4bSAnna Dabrowska
7474126d4bSAnna Dabrowska        $html =  $this->getLang('ackNotFound');
7574126d4bSAnna Dabrowska
7674126d4bSAnna Dabrowska        if (!empty($pending)) {
7774126d4bSAnna Dabrowska            $html = '<ul>';
7874126d4bSAnna Dabrowska            foreach ($pending as $item) {
7995113ed8SAnna Dabrowska                $html .= '<li>' . html_wikilink(':' . $item['page']) . '</li>';
8074126d4bSAnna Dabrowska            }
8174126d4bSAnna Dabrowska            $html .= '</ul>';
8274126d4bSAnna Dabrowska        }
8374126d4bSAnna Dabrowska
8474126d4bSAnna Dabrowska        return $html;
8574126d4bSAnna Dabrowska    }
8674126d4bSAnna Dabrowska}
8774126d4bSAnna Dabrowska
88