xref: /plugin/acknowledge/syntax/listing.php (revision 74126d4b5f888ba407f033d947da1ba9979f565b)
1*74126d4bSAnna Dabrowska<?php
2*74126d4bSAnna Dabrowska/**
3*74126d4bSAnna Dabrowska * DokuWiki Plugin acknowledge (Syntax Component)
4*74126d4bSAnna Dabrowska *
5*74126d4bSAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6*74126d4bSAnna Dabrowska * @author  Andreas Gohr, Anna Dabrowska <dokuwiki@cosmocode.de>
7*74126d4bSAnna Dabrowska */
8*74126d4bSAnna Dabrowska
9*74126d4bSAnna Dabrowskaclass syntax_plugin_acknowledge_listing extends DokuWiki_Syntax_Plugin
10*74126d4bSAnna Dabrowska{
11*74126d4bSAnna Dabrowska    /** @inheritDoc */
12*74126d4bSAnna Dabrowska    public function getType()
13*74126d4bSAnna Dabrowska    {
14*74126d4bSAnna Dabrowska        return 'substition';
15*74126d4bSAnna Dabrowska    }
16*74126d4bSAnna Dabrowska
17*74126d4bSAnna Dabrowska    /** @inheritDoc */
18*74126d4bSAnna Dabrowska    public function getPType()
19*74126d4bSAnna Dabrowska    {
20*74126d4bSAnna Dabrowska        return 'block';
21*74126d4bSAnna Dabrowska    }
22*74126d4bSAnna Dabrowska
23*74126d4bSAnna Dabrowska    /** @inheritDoc */
24*74126d4bSAnna Dabrowska    public function getSort()
25*74126d4bSAnna Dabrowska    {
26*74126d4bSAnna Dabrowska        return 155;
27*74126d4bSAnna Dabrowska    }
28*74126d4bSAnna Dabrowska
29*74126d4bSAnna Dabrowska    /** @inheritDoc */
30*74126d4bSAnna Dabrowska    public function connectTo($mode)
31*74126d4bSAnna Dabrowska    {
32*74126d4bSAnna Dabrowska        $this->Lexer->addSpecialPattern('~~ACKNOWLEDGE~~', $mode, 'plugin_acknowledge_listing');
33*74126d4bSAnna Dabrowska    }
34*74126d4bSAnna Dabrowska
35*74126d4bSAnna Dabrowska    /** @inheritDoc */
36*74126d4bSAnna Dabrowska    public function render($mode, Doku_Renderer $renderer, $data)
37*74126d4bSAnna Dabrowska    {
38*74126d4bSAnna Dabrowska        if ($mode !== 'xhtml') {
39*74126d4bSAnna Dabrowska            return false;
40*74126d4bSAnna Dabrowska        }
41*74126d4bSAnna Dabrowska
42*74126d4bSAnna Dabrowska        $renderer->info['cache'] = false;
43*74126d4bSAnna Dabrowska
44*74126d4bSAnna Dabrowska        $renderer->doc .= '<div class="plugin-acknowledge-listing">';
45*74126d4bSAnna Dabrowska        $renderer->doc .= $this->getListing();
46*74126d4bSAnna Dabrowska        $renderer->doc .= '</div>';
47*74126d4bSAnna Dabrowska        return true;
48*74126d4bSAnna Dabrowska    }
49*74126d4bSAnna Dabrowska
50*74126d4bSAnna Dabrowska    /**
51*74126d4bSAnna Dabrowska     * Returns the list of pages to be acknowledged by the user
52*74126d4bSAnna Dabrowska     *
53*74126d4bSAnna Dabrowska     * @return string
54*74126d4bSAnna Dabrowska     */
55*74126d4bSAnna Dabrowska    protected function getListing()
56*74126d4bSAnna Dabrowska    {
57*74126d4bSAnna Dabrowska        global $INPUT;
58*74126d4bSAnna Dabrowska        $user = $INPUT->server->str('REMOTE_USER');
59*74126d4bSAnna Dabrowska        if ($user === '') return '';
60*74126d4bSAnna Dabrowska
61*74126d4bSAnna Dabrowska        /** @var helper_plugin_acknowledge $helper */
62*74126d4bSAnna Dabrowska        $helper = plugin_load('helper', 'acknowledge');
63*74126d4bSAnna Dabrowska        $all = $helper->getUserAssignments($user);
64*74126d4bSAnna Dabrowska        $pending = $helper->filterAcknowledged($user, $all);
65*74126d4bSAnna Dabrowska
66*74126d4bSAnna Dabrowska        $html =  $this->getLang('ackNotFound');
67*74126d4bSAnna Dabrowska
68*74126d4bSAnna Dabrowska        if (!empty($pending)) {
69*74126d4bSAnna Dabrowska            $html = '<ul>';
70*74126d4bSAnna Dabrowska            foreach ($pending as $item) {
71*74126d4bSAnna Dabrowska                $html .= sprintf('<li><a href="%s">%s</a></li>', wl($item['page']), $item['page']);
72*74126d4bSAnna Dabrowska            }
73*74126d4bSAnna Dabrowska            $html .= '</ul>';
74*74126d4bSAnna Dabrowska        }
75*74126d4bSAnna Dabrowska
76*74126d4bSAnna Dabrowska        return $html;
77*74126d4bSAnna Dabrowska    }
78*74126d4bSAnna Dabrowska}
79*74126d4bSAnna Dabrowska
80