*/ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); // we inherit from the XHTML renderer instead directly of the base renderer require_once DOKU_INC.'inc/parser/xhtml.php'; class renderer_plugin_showlinkpermission extends Doku_Renderer_xhtml { function getFormat(){ return 'xhtml'; } function canRender($format) { return ($format == 'xhtml'); } function internallink($id, $name = NULL, $search=NULL, $returnonly=false, $linktype='content') { global $conf; global $ID; global $INFO; // Disabling the cache to have the XHTML always up-to-date $this->info['cache'] = false; $params = ''; $parts = explode('?', $id, 2); if (count($parts) === 2) { $id = $parts[0]; $params = $parts[1]; } // For empty $id we need to know the current $ID // We need this check because _simpleTitle needs // correct $id and resolve_pageid() use cleanID($id) // (some things could be lost) if ($id === '') { $id = $ID; } // default name is based on $id as given $default = $this->_simpleTitle($id); // now first resolve and clean up the $id resolve_pageid(getNS($ID),$id,$exists); $name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype); if ( !$isImage ) { if ( $exists ) { $class='wikilink1'; } else { $class='wikilink2'; $link['rel']='nofollow'; } } else { $class='media'; } // Check if the link is accessible by the current user // If not, change color of the link $user = $INFO['userinfo']['name']; $groups = $INFO['userinfo']['grps']; if(!$isImage && auth_aclcheck($id, $user, $groups) < AUTH_READ) { // User is not allowed not read the page, change css class $class = 'wikilinknoperm'; } //keep hash anchor list($id,$hash) = explode('#',$id,2); if(!empty($hash)) $hash = $this->_headerToLink($hash); //prepare for formating $link['target'] = $conf['target']['wiki']; $link['style'] = ''; $link['pre'] = ''; $link['suf'] = ''; // highlight link to current page if ($id == $INFO['id']) { $link['pre'] = ''; $link['suf'] = ''; } $link['more'] = ''; $link['class'] = $class; $link['url'] = wl($id, $params); $link['name'] = $name; $link['title'] = $id; //add search string if($search){ ($conf['userewrite']) ? $link['url'].='?' : $link['url'].='&'; if(is_array($search)){ $search = array_map('rawurlencode',$search); $link['url'] .= 's[]='.join('&s[]=',$search); }else{ $link['url'] .= 's='.rawurlencode($search); } } //keep hash if($hash) $link['url'].='#'.$hash; //output formatted if($returnonly){ return $this->_formatLink($link); }else{ $this->doc .= $this->_formatLink($link); } } }