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