xref: /template/kiwiki/classes/kiwiki_functions.php (revision f155da6a286c4d8bb51e6542591967f5ba79e3d8)
16d5babb2Snicolasprigent<?php
26d5babb2Snicolasprigent
36d5babb2Snicolasprigentclass Kiwiki_Functions {
46d5babb2Snicolasprigent
56d5babb2Snicolasprigent    public static function _edit_icon($what, $usergroup, $action){
6*f155da6aSAzurCrystal        global $conf;
76d5babb2Snicolasprigent        $output = "";
86d5babb2Snicolasprigent        if (isset($usergroup)){
985a7f8d0Snicolasprigent            if ((auth_quickaclcheck($USERINFO['id']) > AUTH_READ) && $action == 'show'){
10*f155da6aSAzurCrystal                if ($conf['userewrite'] && $conf['useslash']) {
11*f155da6aSAzurCrystal                    $pagename = end(explode (":", $what));
12*f155da6aSAzurCrystal                    $output = '<a class="edit-this" href="' . $pagename . '?do=edit">' . inlineSVG(KIWIKI_IMAGES_PATH . 'edit.svg') .'</a>';
13*f155da6aSAzurCrystal                } else {
146d5babb2Snicolasprigent                    $output = '<a class="edit-this" href="doku.php?id=' . $what . '&do=edit">' . inlineSVG(KIWIKI_IMAGES_PATH . 'edit.svg') .'</a>';
156d5babb2Snicolasprigent                }
166d5babb2Snicolasprigent            }
17*f155da6aSAzurCrystal        }
186d5babb2Snicolasprigent        return $output;
196d5babb2Snicolasprigent    }
206d5babb2Snicolasprigent
21cc57aeb6Snicolasprigent
22cc57aeb6Snicolasprigent    /**
23cc57aeb6Snicolasprigent     * Go bottom button
24cc57aeb6Snicolasprigent     */
25cc57aeb6Snicolasprigent
26cc57aeb6Snicolasprigent    public static function html_bottombtn() {
27cc57aeb6Snicolasprigent        global $lang;
28cc57aeb6Snicolasprigent
29cc57aeb6Snicolasprigent        return '<a class="nolink" href="#dokuwiki__bottom">'
30cc57aeb6Snicolasprigent            .'<button class="button" onclick="window.scrollTo(0, 0)" title="'. $lang['btn_bottom'] .'">'
31cc57aeb6Snicolasprigent            . $lang['btn_bottom']
32cc57aeb6Snicolasprigent            .'</button></a>';
33cc57aeb6Snicolasprigent    }
34cc57aeb6Snicolasprigent
35477069bfSnicolasprigent    /**
36477069bfSnicolasprigent     * Custom ACL Informations in footer
37477069bfSnicolasprigent     * Original code from Chris75
38477069bfSnicolasprigent     * https://forum.dokuwiki.org/d/21636-acl-deny-a-user-group-to-a-namespace/13
39477069bfSnicolasprigent     */
40cc57aeb6Snicolasprigent
41046cd792Snicolasprigent     public static function tpl_aclinfo() {
42477069bfSnicolasprigent        global $ID, $AUTH_ACL, $INFO;
43cc57aeb6Snicolasprigent
44477069bfSnicolasprigent        if ((auth_quickaclcheck($ID) == 0) ||(!$INFO['editable']))
45cc57aeb6Snicolasprigent            return; // no rights to view, no rights to get this info
46cc57aeb6Snicolasprigent
47cc57aeb6Snicolasprigent        $page_acls = array();
48cc57aeb6Snicolasprigent        $namespaces = array();
49cc57aeb6Snicolasprigent
50cc57aeb6Snicolasprigent        $ns = getNS($ID);
51cc57aeb6Snicolasprigent        while ($ns) {
52cc57aeb6Snicolasprigent        array_unshift($namespaces,$ns . ':*');
53cc57aeb6Snicolasprigent        $ns = getNS($ns);
54cc57aeb6Snicolasprigent        }
55cc57aeb6Snicolasprigent        array_unshift($namespaces,'*'); // root
56cc57aeb6Snicolasprigent
57cc57aeb6Snicolasprigent        $namespaces[] = $ID;
58cc57aeb6Snicolasprigent
59cc57aeb6Snicolasprigent        // check matches
60cc57aeb6Snicolasprigent        foreach ($namespaces as $level) {
61cc57aeb6Snicolasprigent            $matches = preg_grep('/^'.preg_quote($level,'/').'\s+\S+\s+\d+\s*$/',$AUTH_ACL);
62cc57aeb6Snicolasprigent            $this_acls = array();
63cc57aeb6Snicolasprigent            foreach($matches as $match){
64cc57aeb6Snicolasprigent            $match = preg_replace('/#.*$/','',$match); //ignore comments
65cc57aeb6Snicolasprigent            $acl   = preg_split('/\s+/',$match);
66cc57aeb6Snicolasprigent            $this_acls[urldecode($acl[1])] = $acl[2];
67cc57aeb6Snicolasprigent            if ($acl[1] == "@ALL")  // overwrites stuff from upper level
68cc57aeb6Snicolasprigent                $page_acls = array();
69cc57aeb6Snicolasprigent            }
70cc57aeb6Snicolasprigent            $page_acls =  array_merge($page_acls,$this_acls);
71cc57aeb6Snicolasprigent        }
72cc57aeb6Snicolasprigent
73cc57aeb6Snicolasprigent        // check if visible to everyone:
74477069bfSnicolasprigent        /*if (($page_acls['@ALL'] !== false) && $page_acls['@ALL'] > 0)
75477069bfSnicolasprigent        return; // page is visible to everyone*/
76cc57aeb6Snicolasprigent
77cc57aeb6Snicolasprigent        $list = array();
78cc57aeb6Snicolasprigent        foreach ($page_acls as $user => $right) {
79cc57aeb6Snicolasprigent            if ($right > 0 && $user != "@admin" ) // admins can see everything
80cc57aeb6Snicolasprigent                array_push($list,$user);
81cc57aeb6Snicolasprigent        }
82cc57aeb6Snicolasprigent        if (count($list)) {
83cc57aeb6Snicolasprigent            sort($list);
84593242adSnicolasprigent            print tpl_getLang('Visible to');
85477069bfSnicolasprigent            print join(', ',$list);
86cc57aeb6Snicolasprigent        }
87cc57aeb6Snicolasprigent
88cc57aeb6Snicolasprigent        // Uncomment this, if you want to display users/groups who cannot access this page, too:
89cc57aeb6Snicolasprigent        $list = array();
90cc57aeb6Snicolasprigent        foreach ($page_acls as $user => $right) {
91cc57aeb6Snicolasprigent            if ($right == 0)
92cc57aeb6Snicolasprigent                array_push($list,$user);
93cc57aeb6Snicolasprigent        }
94cc57aeb6Snicolasprigent        if (count($list)) {
95cc57aeb6Snicolasprigent            sort($list);
96593242adSnicolasprigent            print " • ";
97593242adSnicolasprigent            print tpl_getLang('Hidden to');
98477069bfSnicolasprigent            print join(', ',$list);
99cc57aeb6Snicolasprigent        }
100cc57aeb6Snicolasprigent    }
1016d5babb2Snicolasprigent}
102