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