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