xref: /template/kiwiki/classes/kiwiki_functions.php (revision cc57aeb6f1eea287e74df6ae674ba08b7803eeef)
16d5babb2Snicolasprigent<?php
26d5babb2Snicolasprigent
36d5babb2Snicolasprigentclass Kiwiki_Functions {
46d5babb2Snicolasprigent
56d5babb2Snicolasprigent    public static function _edit_icon($what, $usergroup, $action){
66d5babb2Snicolasprigent        $output = "";
76d5babb2Snicolasprigent        if (isset($usergroup)){
86d5babb2Snicolasprigent            if (in_array('admin',$usergroup) && $action == 'show'){
96d5babb2Snicolasprigent                $output = '<a class="edit-this" href="doku.php?id=' . $what . '&do=edit">' . inlineSVG(KIWIKI_IMAGES_PATH . 'edit.svg') .'</a>';
106d5babb2Snicolasprigent            }
116d5babb2Snicolasprigent        }
126d5babb2Snicolasprigent        return $output;
136d5babb2Snicolasprigent    }
146d5babb2Snicolasprigent
15*cc57aeb6Snicolasprigent
16*cc57aeb6Snicolasprigent    /**
17*cc57aeb6Snicolasprigent     * Go bottom button
18*cc57aeb6Snicolasprigent     */
19*cc57aeb6Snicolasprigent
20*cc57aeb6Snicolasprigent    public static function html_bottombtn() {
21*cc57aeb6Snicolasprigent        global $lang;
22*cc57aeb6Snicolasprigent
23*cc57aeb6Snicolasprigent        return '<a class="nolink" href="#dokuwiki__bottom">'
24*cc57aeb6Snicolasprigent            .'<button class="button" onclick="window.scrollTo(0, 0)" title="'. $lang['btn_bottom'] .'">'
25*cc57aeb6Snicolasprigent            . $lang['btn_bottom']
26*cc57aeb6Snicolasprigent            .'</button></a>';
27*cc57aeb6Snicolasprigent    }
28*cc57aeb6Snicolasprigent
29*cc57aeb6Snicolasprigent
30*cc57aeb6Snicolasprigent    public static function tpl_aclinfo() {
31*cc57aeb6Snicolasprigent        global $ID, $AUTH_ACL;
32*cc57aeb6Snicolasprigent
33*cc57aeb6Snicolasprigent        if (auth_quickaclcheck($ID) == 0)
34*cc57aeb6Snicolasprigent            return; // no rights to view, no rights to get this info
35*cc57aeb6Snicolasprigent
36*cc57aeb6Snicolasprigent        $page_acls = array();
37*cc57aeb6Snicolasprigent        $namespaces = array();
38*cc57aeb6Snicolasprigent
39*cc57aeb6Snicolasprigent        $ns = getNS($ID);
40*cc57aeb6Snicolasprigent        while ($ns) {
41*cc57aeb6Snicolasprigent           array_unshift($namespaces,$ns . ':*');
42*cc57aeb6Snicolasprigent           $ns = getNS($ns);
43*cc57aeb6Snicolasprigent        }
44*cc57aeb6Snicolasprigent        array_unshift($namespaces,'*'); // root
45*cc57aeb6Snicolasprigent
46*cc57aeb6Snicolasprigent        $namespaces[] = $ID;
47*cc57aeb6Snicolasprigent
48*cc57aeb6Snicolasprigent        // check matches
49*cc57aeb6Snicolasprigent        foreach ($namespaces as $level) {
50*cc57aeb6Snicolasprigent            $matches = preg_grep('/^'.preg_quote($level,'/').'\s+\S+\s+\d+\s*$/',$AUTH_ACL);
51*cc57aeb6Snicolasprigent            $this_acls = array();
52*cc57aeb6Snicolasprigent            foreach($matches as $match){
53*cc57aeb6Snicolasprigent              $match = preg_replace('/#.*$/','',$match); //ignore comments
54*cc57aeb6Snicolasprigent              $acl   = preg_split('/\s+/',$match);
55*cc57aeb6Snicolasprigent              $this_acls[urldecode($acl[1])] = $acl[2];
56*cc57aeb6Snicolasprigent              if ($acl[1] == "@ALL")  // overwrites stuff from upper level
57*cc57aeb6Snicolasprigent                $page_acls = array();
58*cc57aeb6Snicolasprigent            }
59*cc57aeb6Snicolasprigent            $page_acls =  array_merge($page_acls,$this_acls);
60*cc57aeb6Snicolasprigent        }
61*cc57aeb6Snicolasprigent
62*cc57aeb6Snicolasprigent        // check if visible to everyone:
63*cc57aeb6Snicolasprigent        if (($page_acls['@ALL'] !== false) && $page_acls['@ALL'] > 0)
64*cc57aeb6Snicolasprigent          return; // page is visible to everyone
65*cc57aeb6Snicolasprigent
66*cc57aeb6Snicolasprigent        $return = "";
67*cc57aeb6Snicolasprigent
68*cc57aeb6Snicolasprigent        $list = array();
69*cc57aeb6Snicolasprigent        foreach ($page_acls as $user => $right) {
70*cc57aeb6Snicolasprigent            if ($right > 0 && $user != "@admin" ) // admins can see everything
71*cc57aeb6Snicolasprigent                array_push($list,$user);
72*cc57aeb6Snicolasprigent        }
73*cc57aeb6Snicolasprigent        if (count($list)) {
74*cc57aeb6Snicolasprigent            sort($list);
75*cc57aeb6Snicolasprigent            $return = "(page visible to: ";
76*cc57aeb6Snicolasprigent            $return .= join(', ',$list);
77*cc57aeb6Snicolasprigent            $return .= ")";
78*cc57aeb6Snicolasprigent        }
79*cc57aeb6Snicolasprigent
80*cc57aeb6Snicolasprigent        // Uncomment this, if you want to display users/groups who cannot access this page, too:
81*cc57aeb6Snicolasprigent        $list = array();
82*cc57aeb6Snicolasprigent        foreach ($page_acls as $user => $right) {
83*cc57aeb6Snicolasprigent            if ($right == 0)
84*cc57aeb6Snicolasprigent                array_push($list,$user);
85*cc57aeb6Snicolasprigent        }
86*cc57aeb6Snicolasprigent        if (count($list)) {
87*cc57aeb6Snicolasprigent            sort($list);
88*cc57aeb6Snicolasprigent            $return .= "(page hidden to: ";
89*cc57aeb6Snicolasprigent            $return .= join(', ',$list);
90*cc57aeb6Snicolasprigent            $return .= ")";
91*cc57aeb6Snicolasprigent        }
92*cc57aeb6Snicolasprigent
93*cc57aeb6Snicolasprigent        return $return;
94*cc57aeb6Snicolasprigent    }
956d5babb2Snicolasprigent}
96