16d5babb2Snicolasprigent<?php 26d5babb2Snicolasprigent 3*7744d923SNicolas Prigent// must be run from within DokuWiki 4*7744d923SNicolas Prigentif (!defined('DOKU_INC')) die(); 5*7744d923SNicolas Prigent 66d5babb2Snicolasprigentclass Kiwiki_Functions { 76d5babb2Snicolasprigent 8b5b95f16Snicolasprigent 9b5b95f16Snicolasprigent /** 10b5b95f16Snicolasprigent * Edit icon button 11b5b95f16Snicolasprigent */ 12b5b95f16Snicolasprigent public static function _edit_icon($what){ 13b5b95f16Snicolasprigent global $ACT; 14aae5d272SNicolas Prigent global $INFO; 15aae5d272SNicolas Prigent $rev = ($INFO['rev']) ? '&rev='.$INFO['rev'] : ''; 16b5b95f16Snicolasprigent if ($ACT == 'show'){ 17b5b95f16Snicolasprigent $editicon = (new \dokuwiki\Menu\KiwikiEdit())->getListItems('kiwiki-',true); 18b5b95f16Snicolasprigent if (!empty($what)){ 19c17c23bdSNicolas Prigent $editicon = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.DOKU_BASE.'doku.php?id='.$what.'&do=edit"$3 role="button">',$editicon); 20aae5d272SNicolas Prigent }else{ 21c17c23bdSNicolas Prigent $editicon = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.DOKU_BASE.'doku.php?id='.$INFO['id'].'&do=edit'.$rev.'"$3 role="button">',$editicon); 226d5babb2Snicolasprigent } 23b5b95f16Snicolasprigent return $editicon; 246d5babb2Snicolasprigent } 25f155da6aSAzurCrystal } 266d5babb2Snicolasprigent 27cc57aeb6Snicolasprigent 28cc57aeb6Snicolasprigent /** 29cc57aeb6Snicolasprigent * Go bottom button 30cc57aeb6Snicolasprigent */ 31cc57aeb6Snicolasprigent 3247612ce1SNicolas Prigent public static function html_bottombtn() { 33cc57aeb6Snicolasprigent global $lang; 34cc57aeb6Snicolasprigent 35c17c23bdSNicolas Prigent return '<a class="nolink" href="#dokuwiki__bottom" role="button" aria-label="' . $lang['btn_bottom'] . '" title="' . $lang['btn_bottom'] . '">' 36cc57aeb6Snicolasprigent .'<button class="button" onclick="window.scrollTo(0, 0)" title="'. $lang['btn_bottom'] .'">' 37cc57aeb6Snicolasprigent . $lang['btn_bottom'] 38cc57aeb6Snicolasprigent .'</button></a>'; 3947612ce1SNicolas Prigent } 40cc57aeb6Snicolasprigent 41477069bfSnicolasprigent /** 42477069bfSnicolasprigent * Custom ACL Informations in footer 43477069bfSnicolasprigent * Original code from Chris75 44477069bfSnicolasprigent * https://forum.dokuwiki.org/d/21636-acl-deny-a-user-group-to-a-namespace/13 45477069bfSnicolasprigent */ 46cc57aeb6Snicolasprigent 47046cd792Snicolasprigent public static function tpl_aclinfo() { 48477069bfSnicolasprigent global $ID, $AUTH_ACL, $INFO; 49cc57aeb6Snicolasprigent 50477069bfSnicolasprigent if ((auth_quickaclcheck($ID) == 0) ||(!$INFO['editable'])) 51cc57aeb6Snicolasprigent return; // no rights to view, no rights to get this info 52cc57aeb6Snicolasprigent 53cc57aeb6Snicolasprigent $page_acls = array(); 54cc57aeb6Snicolasprigent $namespaces = array(); 55cc57aeb6Snicolasprigent 56cc57aeb6Snicolasprigent $ns = getNS($ID); 57cc57aeb6Snicolasprigent while ($ns) { 58cc57aeb6Snicolasprigent array_unshift($namespaces,$ns . ':*'); 59cc57aeb6Snicolasprigent $ns = getNS($ns); 60cc57aeb6Snicolasprigent } 61cc57aeb6Snicolasprigent array_unshift($namespaces,'*'); // root 62cc57aeb6Snicolasprigent 63cc57aeb6Snicolasprigent $namespaces[] = $ID; 64cc57aeb6Snicolasprigent 65cc57aeb6Snicolasprigent // check matches 66cc57aeb6Snicolasprigent foreach ($namespaces as $level) { 67cc57aeb6Snicolasprigent $matches = preg_grep('/^'.preg_quote($level,'/').'\s+\S+\s+\d+\s*$/',$AUTH_ACL); 68cc57aeb6Snicolasprigent $this_acls = array(); 69cc57aeb6Snicolasprigent foreach($matches as $match){ 70cc57aeb6Snicolasprigent $match = preg_replace('/#.*$/','',$match); //ignore comments 71cc57aeb6Snicolasprigent $acl = preg_split('/\s+/',$match); 72cc57aeb6Snicolasprigent $this_acls[urldecode($acl[1])] = $acl[2]; 73cc57aeb6Snicolasprigent if ($acl[1] == "@ALL") // overwrites stuff from upper level 74cc57aeb6Snicolasprigent $page_acls = array(); 75cc57aeb6Snicolasprigent } 76cc57aeb6Snicolasprigent $page_acls = array_merge($page_acls,$this_acls); 77cc57aeb6Snicolasprigent } 78cc57aeb6Snicolasprigent 79cc57aeb6Snicolasprigent // check if visible to everyone: 80477069bfSnicolasprigent /*if (($page_acls['@ALL'] !== false) && $page_acls['@ALL'] > 0) 81477069bfSnicolasprigent return; // page is visible to everyone*/ 82cc57aeb6Snicolasprigent 83cc57aeb6Snicolasprigent $list = array(); 84cc57aeb6Snicolasprigent foreach ($page_acls as $user => $right) { 85cc57aeb6Snicolasprigent if ($right > 0 && $user != "@admin" ) // admins can see everything 86cc57aeb6Snicolasprigent array_push($list,$user); 87cc57aeb6Snicolasprigent } 88cc57aeb6Snicolasprigent if (count($list)) { 89cc57aeb6Snicolasprigent sort($list); 90593242adSnicolasprigent print tpl_getLang('Visible to'); 91477069bfSnicolasprigent print join(', ',$list); 92cc57aeb6Snicolasprigent } 93cc57aeb6Snicolasprigent 94cc57aeb6Snicolasprigent // Uncomment this, if you want to display users/groups who cannot access this page, too: 95cc57aeb6Snicolasprigent $list = array(); 96cc57aeb6Snicolasprigent foreach ($page_acls as $user => $right) { 97cc57aeb6Snicolasprigent if ($right == 0) 98cc57aeb6Snicolasprigent array_push($list,$user); 99cc57aeb6Snicolasprigent } 100cc57aeb6Snicolasprigent if (count($list)) { 101cc57aeb6Snicolasprigent sort($list); 102593242adSnicolasprigent print " • "; 103593242adSnicolasprigent print tpl_getLang('Hidden to'); 104477069bfSnicolasprigent print join(', ',$list); 105cc57aeb6Snicolasprigent } 106cc57aeb6Snicolasprigent } 1076d5babb2Snicolasprigent} 108