1<?php 2 3class Kiwiki_Functions { 4 5 public static function _edit_icon($what, $usergroup, $action){ 6 global $conf; 7 $output = ""; 8 if (isset($usergroup)&&isset($USERINFO)){ 9 if ((auth_quickaclcheck($USERINFO['id']) > AUTH_READ) && $action == 'show'){ 10 if ($conf['userewrite'] && $conf['useslash']) { 11 $pagename = end(explode (":", $what)); 12 $output = '<a class="edit-this" href="' . $pagename . '?do=edit">' . inlineSVG(KIWIKI_IMAGES_PATH . 'edit.svg') .'</a>'; 13 } else { 14 $output = '<a class="edit-this" href="doku.php?id=' . $what . '&do=edit">' . inlineSVG(KIWIKI_IMAGES_PATH . 'edit.svg') .'</a>'; 15 } 16 } 17 } 18 return $output; 19 } 20 21 22 /** 23 * Go bottom button 24 */ 25 26 public static function html_bottombtn() { 27 global $lang; 28 29 return '<a class="nolink" href="#dokuwiki__bottom">' 30 .'<button class="button" onclick="window.scrollTo(0, 0)" title="'. $lang['btn_bottom'] .'">' 31 . $lang['btn_bottom'] 32 .'</button></a>'; 33 } 34 35 /** 36 * Custom ACL Informations in footer 37 * Original code from Chris75 38 * https://forum.dokuwiki.org/d/21636-acl-deny-a-user-group-to-a-namespace/13 39 */ 40 41 public static function tpl_aclinfo() { 42 global $ID, $AUTH_ACL, $INFO; 43 44 if ((auth_quickaclcheck($ID) == 0) ||(!$INFO['editable'])) 45 return; // no rights to view, no rights to get this info 46 47 $page_acls = array(); 48 $namespaces = array(); 49 50 $ns = getNS($ID); 51 while ($ns) { 52 array_unshift($namespaces,$ns . ':*'); 53 $ns = getNS($ns); 54 } 55 array_unshift($namespaces,'*'); // root 56 57 $namespaces[] = $ID; 58 59 // check matches 60 foreach ($namespaces as $level) { 61 $matches = preg_grep('/^'.preg_quote($level,'/').'\s+\S+\s+\d+\s*$/',$AUTH_ACL); 62 $this_acls = array(); 63 foreach($matches as $match){ 64 $match = preg_replace('/#.*$/','',$match); //ignore comments 65 $acl = preg_split('/\s+/',$match); 66 $this_acls[urldecode($acl[1])] = $acl[2]; 67 if ($acl[1] == "@ALL") // overwrites stuff from upper level 68 $page_acls = array(); 69 } 70 $page_acls = array_merge($page_acls,$this_acls); 71 } 72 73 // check if visible to everyone: 74 /*if (($page_acls['@ALL'] !== false) && $page_acls['@ALL'] > 0) 75 return; // page is visible to everyone*/ 76 77 $list = array(); 78 foreach ($page_acls as $user => $right) { 79 if ($right > 0 && $user != "@admin" ) // admins can see everything 80 array_push($list,$user); 81 } 82 if (count($list)) { 83 sort($list); 84 print tpl_getLang('Visible to'); 85 print join(', ',$list); 86 } 87 88 // Uncomment this, if you want to display users/groups who cannot access this page, too: 89 $list = array(); 90 foreach ($page_acls as $user => $right) { 91 if ($right == 0) 92 array_push($list,$user); 93 } 94 if (count($list)) { 95 sort($list); 96 print " • "; 97 print tpl_getLang('Hidden to'); 98 print join(', ',$list); 99 } 100 } 101} 102