xref: /plugin/bez/meta/Tpl.php (revision ff14b1073c2dab2f863cab3b8baf8b1a01f7993a)
1de02284cSSzymon Olewniczak<?php
2de02284cSSzymon Olewniczak
3de02284cSSzymon Olewniczaknamespace dokuwiki\plugin\bez\meta;
4de02284cSSzymon Olewniczak
5de02284cSSzymon Olewniczakclass Tpl {
6de02284cSSzymon Olewniczak
7de02284cSSzymon Olewniczak    /** @var \action_plugin_bez */
8de02284cSSzymon Olewniczak    private $action;
9de02284cSSzymon Olewniczak
10de02284cSSzymon Olewniczak    private $conf;
11de02284cSSzymon Olewniczak
12de02284cSSzymon Olewniczak    private $variables = array();
13de02284cSSzymon Olewniczak
14de02284cSSzymon Olewniczak    //form values from $_POST or from database
15de02284cSSzymon Olewniczak    private $values = array();
16de02284cSSzymon Olewniczak
17fe5d6d1eSSzymon Olewniczak    public function __construct(\action_plugin_bez_default $action, $conf) {
18de02284cSSzymon Olewniczak
19de02284cSSzymon Olewniczak        $this->action = $action;
20de02284cSSzymon Olewniczak        $this->conf = $conf;
21de02284cSSzymon Olewniczak
22de02284cSSzymon Olewniczak        //constas
23de02284cSSzymon Olewniczak        $this->set('client', $this->model->user_nick);
24de02284cSSzymon Olewniczak
25de02284cSSzymon Olewniczak        $info = $action->getInfo();
26de02284cSSzymon Olewniczak        $this->set('version', $info['date']);
27de02284cSSzymon Olewniczak
28de02284cSSzymon Olewniczak        //common one
29fe5d6d1eSSzymon Olewniczak        $this->set('users', $this->action->get_model()->userFactory->get_all());
30fe5d6d1eSSzymon Olewniczak        $this->set('groups', $this->action->get_model()->userFactory->get_groups());
31de02284cSSzymon Olewniczak    }
32de02284cSSzymon Olewniczak
33de02284cSSzymon Olewniczak    public function action($default=null) {
34de02284cSSzymon Olewniczak        $action = $this->action->get_action();
35de02284cSSzymon Olewniczak        if ($action == '' && !is_null($default)) {
36de02284cSSzymon Olewniczak            return $default;
37de02284cSSzymon Olewniczak        }
38de02284cSSzymon Olewniczak        return $action;
39de02284cSSzymon Olewniczak    }
40de02284cSSzymon Olewniczak
41*ff14b107SSzymon Olewniczak    public function param($id, $default='') {
42*ff14b107SSzymon Olewniczak        return $this->action->get_param($id, $default);
43de02284cSSzymon Olewniczak    }
44de02284cSSzymon Olewniczak
45de02284cSSzymon Olewniczak    public function url() {
46de02284cSSzymon Olewniczak        return call_user_func_array(array($this->action, 'url'), func_get_args());
47de02284cSSzymon Olewniczak    }
48de02284cSSzymon Olewniczak
497fbf4c39SSzymon Olewniczak    public function mailto($to, $subject, $body) {
507fbf4c39SSzymon Olewniczak        return 'mailto:'.$to.'?subject='.rawurlencode($subject).'&body='.rawurlencode($body);
517fbf4c39SSzymon Olewniczak    }
527fbf4c39SSzymon Olewniczak
53de02284cSSzymon Olewniczak//    public function get_dummy_of($name) {
54de02284cSSzymon Olewniczak//        return $this->action->get_model_of($name)->get_dummy_object();
55de02284cSSzymon Olewniczak//    }
56de02284cSSzymon Olewniczak
57de02284cSSzymon Olewniczak    public function static_acl($table, $field) {
58fe5d6d1eSSzymon Olewniczak        return $this->action->get_model()->acl->check_static_field($table, $field);
59de02284cSSzymon Olewniczak    }
60de02284cSSzymon Olewniczak
61de02284cSSzymon Olewniczak    /*users info function for shorten the code*/
62de02284cSSzymon Olewniczak    public function user_name($login=NULL) {
63fe5d6d1eSSzymon Olewniczak        $name = $this->action->get_model()->userFactory->get_user_full_name($login);
64de02284cSSzymon Olewniczak        if ($name === '') {
65de02284cSSzymon Olewniczak            return $login;
66de02284cSSzymon Olewniczak        }
67de02284cSSzymon Olewniczak        return $name;
68de02284cSSzymon Olewniczak    }
69de02284cSSzymon Olewniczak
70de02284cSSzymon Olewniczak    public function user_email($login=NULL) {
717fbf4c39SSzymon Olewniczak        return $this->action->get_model()->userFactory->get_user_email($login);
72de02284cSSzymon Olewniczak    }
73de02284cSSzymon Olewniczak    /*end users info functions*/
74de02284cSSzymon Olewniczak
75de02284cSSzymon Olewniczak    public function prevent_rendering() {
76de02284cSSzymon Olewniczak
77de02284cSSzymon Olewniczak    }
78de02284cSSzymon Olewniczak
79de02284cSSzymon Olewniczak    public function set($id, $value) {
80de02284cSSzymon Olewniczak        $this->variables[$id] = $value;
81de02284cSSzymon Olewniczak    }
82de02284cSSzymon Olewniczak
83e8827d73SSzymon Olewniczak    public function get($id, $default='') {
84e8827d73SSzymon Olewniczak        $arr = explode(' ', $id);
85e8827d73SSzymon Olewniczak        $var = $this->variables;
86e8827d73SSzymon Olewniczak        foreach($arr as $item) {
87e8827d73SSzymon Olewniczak            if (isset($var[$item])) {
88e8827d73SSzymon Olewniczak                $var = $var[$item];
89e8827d73SSzymon Olewniczak            } else {
90e8827d73SSzymon Olewniczak                return $default;
91e8827d73SSzymon Olewniczak            }
92e8827d73SSzymon Olewniczak        }
93e8827d73SSzymon Olewniczak        return $var;
94de02284cSSzymon Olewniczak    }
95de02284cSSzymon Olewniczak
96de02284cSSzymon Olewniczak    public function set_values($values) {
97de02284cSSzymon Olewniczak        foreach ($values as $name => $value) {
98de02284cSSzymon Olewniczak            $this->values[$name] = $value;
99de02284cSSzymon Olewniczak        }
100de02284cSSzymon Olewniczak    }
101de02284cSSzymon Olewniczak
102de02284cSSzymon Olewniczak    public function value($name) {
103de02284cSSzymon Olewniczak        return (isset($this->values[$name]) ? $this->values[$name] : '');
104de02284cSSzymon Olewniczak    }
105de02284cSSzymon Olewniczak
106de02284cSSzymon Olewniczak    public function getLang($id) {
107de02284cSSzymon Olewniczak        return $this->action->getLang($id);
108de02284cSSzymon Olewniczak    }
1098a638198SSzymon Olewniczak
1108a638198SSzymon Olewniczak    /**
1118a638198SSzymon Olewniczak     * @return mixed
1128a638198SSzymon Olewniczak     */
1138a638198SSzymon Olewniczak    public function current_user() {
1148a638198SSzymon Olewniczak        return $this->action->get_model()->user_nick;
1158a638198SSzymon Olewniczak    }
1168a638198SSzymon Olewniczak
1178a638198SSzymon Olewniczak    public function user_acl_level() {
1188a638198SSzymon Olewniczak        return $this->action->get_model()->acl->get_level();
1198a638198SSzymon Olewniczak    }
120*ff14b107SSzymon Olewniczak
121*ff14b107SSzymon Olewniczak    public function date($date) {
122*ff14b107SSzymon Olewniczak        return dformat(strtotime($date), '%Y-%m-%d');
123*ff14b107SSzymon Olewniczak    }
124*ff14b107SSzymon Olewniczak
125*ff14b107SSzymon Olewniczak    public function datetime($datetime) {
126*ff14b107SSzymon Olewniczak        return dformat(strtotime($datetime), '%Y-%m-%d %H:%M');
127*ff14b107SSzymon Olewniczak    }
128*ff14b107SSzymon Olewniczak
129*ff14b107SSzymon Olewniczak    public function date_fuzzy_age($datetime) {
130*ff14b107SSzymon Olewniczak        return datetime_h(strtotime($datetime));
131*ff14b107SSzymon Olewniczak    }
132*ff14b107SSzymon Olewniczak
133*ff14b107SSzymon Olewniczak    public function date_diff_days($rDate, $lDate='now', $format='%R%a') {
134*ff14b107SSzymon Olewniczak        $interval = date_diff(date_create($lDate), date_create($rDate));
135*ff14b107SSzymon Olewniczak        return $interval->format("$format ".$this->getLang('days'));
136*ff14b107SSzymon Olewniczak    }
137*ff14b107SSzymon Olewniczak
138*ff14b107SSzymon Olewniczak    public function date_diff_hours($rDate, $lDate='now') {
139*ff14b107SSzymon Olewniczak        $interval = date_diff(date_create($lDate), date_create($rDate));
140*ff14b107SSzymon Olewniczak        return $interval->format('%h:%I');
141*ff14b107SSzymon Olewniczak    }
142*ff14b107SSzymon Olewniczak
143*ff14b107SSzymon Olewniczak//    public function days($lDate, $rDate='now') {
144*ff14b107SSzymon Olewniczak//        $diff = strtotime($lDate) - strtotime($rDate);
145*ff14b107SSzymon Olewniczak//
146*ff14b107SSzymon Olewniczak//        if ($diff >= 0 && $diff < 5) {
147*ff14b107SSzymon Olewniczak//            return $this->getLang('just_now');
148*ff14b107SSzymon Olewniczak//        }
149*ff14b107SSzymon Olewniczak//
150*ff14b107SSzymon Olewniczak//        $time_str = '';
151*ff14b107SSzymon Olewniczak//        $minutes = floor($diff/60);
152*ff14b107SSzymon Olewniczak//        if ($minutes > 0) {
153*ff14b107SSzymon Olewniczak//            $hours = floor($minutes/60);
154*ff14b107SSzymon Olewniczak//            if ($hours > 0) {
155*ff14b107SSzymon Olewniczak//                $days = floor($hours/24);
156*ff14b107SSzymon Olewniczak//                if ($days > 0) {
157*ff14b107SSzymon Olewniczak//                    $time_str = $days.'&nbsp;'.$this->getLang('days');
158*ff14b107SSzymon Olewniczak//                } else {
159*ff14b107SSzymon Olewniczak//                    $time_str = $hours.'&nbsp;'.$this->getLang('hours');
160*ff14b107SSzymon Olewniczak//                }
161*ff14b107SSzymon Olewniczak//            } else {
162*ff14b107SSzymon Olewniczak//                $time_str = $minutes.'&nbsp;'.$this->getLang('minutes');
163*ff14b107SSzymon Olewniczak//            }
164*ff14b107SSzymon Olewniczak//        } else {
165*ff14b107SSzymon Olewniczak//            $time_str = $diff.'&nbsp;'.$this->getLang('seconds');
166*ff14b107SSzymon Olewniczak//        }
167*ff14b107SSzymon Olewniczak//
168*ff14b107SSzymon Olewniczak//        if ($diff > 0) {
169*ff14b107SSzymon Olewniczak//            $time_str .= '&nbsp;'.$this->getLang('ago');
170*ff14b107SSzymon Olewniczak//        }
171*ff14b107SSzymon Olewniczak//
172*ff14b107SSzymon Olewniczak//        return $time_str;
173*ff14b107SSzymon Olewniczak//    }
174*ff14b107SSzymon Olewniczak//
175*ff14b107SSzymon Olewniczak//    public function days_left($date) {
176*ff14b107SSzymon Olewniczak//        $d = date_create($date);
177*ff14b107SSzymon Olewniczak//        $now = date_create('now');
178*ff14b107SSzymon Olewniczak//        $interval = date_diff($now, $d);
179*ff14b107SSzymon Olewniczak//        return $interval->format('%R%a '.$this->getLang('days'));
180*ff14b107SSzymon Olewniczak//    }
181*ff14b107SSzymon Olewniczak
182*ff14b107SSzymon Olewniczak//    public function string_time_to_now($value) {
183*ff14b107SSzymon Olewniczak//        $diff = time() - $value;
184*ff14b107SSzymon Olewniczak//        if ($diff < 5) {
185*ff14b107SSzymon Olewniczak//            return $this->getLang('just_now');
186*ff14b107SSzymon Olewniczak//        }
187*ff14b107SSzymon Olewniczak//        return self::days($diff).'&nbsp;'.$this->getLang('ago');
188*ff14b107SSzymon Olewniczak//    }
189de02284cSSzymon Olewniczak}
190