xref: /plugin/bez/meta/Tpl.php (revision a0cd8c785f18b483f73582b411767428d04a78f6)
1de02284cSSzymon Olewniczak<?php
2de02284cSSzymon Olewniczak
3de02284cSSzymon Olewniczaknamespace dokuwiki\plugin\bez\meta;
4de02284cSSzymon Olewniczak
553df74e7SSzymon Olewniczakuse dokuwiki\plugin\bez\mdl\Entity;
653df74e7SSzymon Olewniczak
7de02284cSSzymon Olewniczakclass Tpl {
8de02284cSSzymon Olewniczak
9de02284cSSzymon Olewniczak    /** @var \action_plugin_bez */
10de02284cSSzymon Olewniczak    private $action;
11de02284cSSzymon Olewniczak
12de02284cSSzymon Olewniczak    private $conf;
13de02284cSSzymon Olewniczak
14de02284cSSzymon Olewniczak    private $variables = array();
15de02284cSSzymon Olewniczak
16de02284cSSzymon Olewniczak    //form values from $_POST or from database
17de02284cSSzymon Olewniczak    private $values = array();
18de02284cSSzymon Olewniczak
19fe5d6d1eSSzymon Olewniczak    public function __construct(\action_plugin_bez_default $action, $conf) {
20de02284cSSzymon Olewniczak
21de02284cSSzymon Olewniczak        $this->action = $action;
22de02284cSSzymon Olewniczak        $this->conf = $conf;
23de02284cSSzymon Olewniczak
24de02284cSSzymon Olewniczak        //constas
25de02284cSSzymon Olewniczak        $this->set('client', $this->model->user_nick);
26de02284cSSzymon Olewniczak
27de02284cSSzymon Olewniczak        $info = $action->getInfo();
28de02284cSSzymon Olewniczak        $this->set('version', $info['date']);
29de02284cSSzymon Olewniczak
30de02284cSSzymon Olewniczak        //common one
31fe5d6d1eSSzymon Olewniczak        $this->set('users', $this->action->get_model()->userFactory->get_all());
32fe5d6d1eSSzymon Olewniczak        $this->set('groups', $this->action->get_model()->userFactory->get_groups());
33de02284cSSzymon Olewniczak    }
34de02284cSSzymon Olewniczak
35de02284cSSzymon Olewniczak    public function action($default=null) {
36de02284cSSzymon Olewniczak        $action = $this->action->get_action();
37de02284cSSzymon Olewniczak        if ($action == '' && !is_null($default)) {
38de02284cSSzymon Olewniczak            return $default;
39de02284cSSzymon Olewniczak        }
40de02284cSSzymon Olewniczak        return $action;
41de02284cSSzymon Olewniczak    }
42de02284cSSzymon Olewniczak
43ff14b107SSzymon Olewniczak    public function param($id, $default='') {
44ff14b107SSzymon Olewniczak        return $this->action->get_param($id, $default);
45de02284cSSzymon Olewniczak    }
46de02284cSSzymon Olewniczak
47de02284cSSzymon Olewniczak    public function url() {
48de02284cSSzymon Olewniczak        return call_user_func_array(array($this->action, 'url'), func_get_args());
49de02284cSSzymon Olewniczak    }
50de02284cSSzymon Olewniczak
517fbf4c39SSzymon Olewniczak    public function mailto($to, $subject, $body) {
527fbf4c39SSzymon Olewniczak        return 'mailto:'.$to.'?subject='.rawurlencode($subject).'&body='.rawurlencode($body);
537fbf4c39SSzymon Olewniczak    }
54*a0cd8c78SSzymon Olewniczak//
55*a0cd8c78SSzymon Olewniczak//    public function acl($table, $field) {
56*a0cd8c78SSzymon Olewniczak//        if ($table instanceof Entity) {
57*a0cd8c78SSzymon Olewniczak//            return $table->acl_of($field);
58*a0cd8c78SSzymon Olewniczak//        }
59*a0cd8c78SSzymon Olewniczak//        return $this->action->get_model()->factory($table)->permi
60*a0cd8c78SSzymon Olewniczak//    }
617fbf4c39SSzymon Olewniczak
62*a0cd8c78SSzymon Olewniczak    public function factory($table) {
63*a0cd8c78SSzymon Olewniczak        return $this->action->get_model()->factory($table);
64de02284cSSzymon Olewniczak    }
65de02284cSSzymon Olewniczak
66de02284cSSzymon Olewniczak    /*users info function for shorten the code*/
6753df74e7SSzymon Olewniczak    public function user_name($login='') {
6853df74e7SSzymon Olewniczak        if ($login == '') {
6953df74e7SSzymon Olewniczak            $login = $this->current_user();
7053df74e7SSzymon Olewniczak        }
71fe5d6d1eSSzymon Olewniczak        $name = $this->action->get_model()->userFactory->get_user_full_name($login);
72de02284cSSzymon Olewniczak        if ($name === '') {
73de02284cSSzymon Olewniczak            return $login;
74de02284cSSzymon Olewniczak        }
75de02284cSSzymon Olewniczak        return $name;
76de02284cSSzymon Olewniczak    }
77de02284cSSzymon Olewniczak
78de02284cSSzymon Olewniczak    public function user_email($login=NULL) {
797fbf4c39SSzymon Olewniczak        return $this->action->get_model()->userFactory->get_user_email($login);
80de02284cSSzymon Olewniczak    }
81de02284cSSzymon Olewniczak    /*end users info functions*/
82de02284cSSzymon Olewniczak
83de02284cSSzymon Olewniczak    public function prevent_rendering() {
84de02284cSSzymon Olewniczak
85de02284cSSzymon Olewniczak    }
86de02284cSSzymon Olewniczak
87de02284cSSzymon Olewniczak    public function set($id, $value) {
88de02284cSSzymon Olewniczak        $this->variables[$id] = $value;
89de02284cSSzymon Olewniczak    }
90de02284cSSzymon Olewniczak
91e8827d73SSzymon Olewniczak    public function get($id, $default='') {
92e8827d73SSzymon Olewniczak        $arr = explode(' ', $id);
93e8827d73SSzymon Olewniczak        $var = $this->variables;
94e8827d73SSzymon Olewniczak        foreach($arr as $item) {
95e8827d73SSzymon Olewniczak            if (isset($var[$item])) {
96e8827d73SSzymon Olewniczak                $var = $var[$item];
97e8827d73SSzymon Olewniczak            } else {
98e8827d73SSzymon Olewniczak                return $default;
99e8827d73SSzymon Olewniczak            }
100e8827d73SSzymon Olewniczak        }
101e8827d73SSzymon Olewniczak        return $var;
102de02284cSSzymon Olewniczak    }
103de02284cSSzymon Olewniczak
104de02284cSSzymon Olewniczak    public function set_values($values) {
105de02284cSSzymon Olewniczak        foreach ($values as $name => $value) {
106de02284cSSzymon Olewniczak            $this->values[$name] = $value;
107de02284cSSzymon Olewniczak        }
108de02284cSSzymon Olewniczak    }
109de02284cSSzymon Olewniczak
110de02284cSSzymon Olewniczak    public function value($name) {
111de02284cSSzymon Olewniczak        return (isset($this->values[$name]) ? $this->values[$name] : '');
112de02284cSSzymon Olewniczak    }
113de02284cSSzymon Olewniczak
114de02284cSSzymon Olewniczak    public function getLang($id) {
115de02284cSSzymon Olewniczak        return $this->action->getLang($id);
116de02284cSSzymon Olewniczak    }
1178a638198SSzymon Olewniczak
1188a638198SSzymon Olewniczak    /**
1198a638198SSzymon Olewniczak     * @return mixed
1208a638198SSzymon Olewniczak     */
1218a638198SSzymon Olewniczak    public function current_user() {
1228a638198SSzymon Olewniczak        return $this->action->get_model()->user_nick;
1238a638198SSzymon Olewniczak    }
1248a638198SSzymon Olewniczak
1258a638198SSzymon Olewniczak    public function user_acl_level() {
1268a638198SSzymon Olewniczak        return $this->action->get_model()->acl->get_level();
1278a638198SSzymon Olewniczak    }
128ff14b107SSzymon Olewniczak
129ff14b107SSzymon Olewniczak    public function date($date) {
130ff14b107SSzymon Olewniczak        return dformat(strtotime($date), '%Y-%m-%d');
131ff14b107SSzymon Olewniczak    }
132ff14b107SSzymon Olewniczak
133ff14b107SSzymon Olewniczak    public function datetime($datetime) {
134ff14b107SSzymon Olewniczak        return dformat(strtotime($datetime), '%Y-%m-%d %H:%M');
135ff14b107SSzymon Olewniczak    }
136ff14b107SSzymon Olewniczak
137ff14b107SSzymon Olewniczak    public function date_fuzzy_age($datetime) {
138ff14b107SSzymon Olewniczak        return datetime_h(strtotime($datetime));
139ff14b107SSzymon Olewniczak    }
140ff14b107SSzymon Olewniczak
141ff14b107SSzymon Olewniczak    public function date_diff_days($rDate, $lDate='now', $format='%R%a') {
142ff14b107SSzymon Olewniczak        $interval = date_diff(date_create($lDate), date_create($rDate));
143ff14b107SSzymon Olewniczak        return $interval->format("$format ".$this->getLang('days'));
144ff14b107SSzymon Olewniczak    }
145ff14b107SSzymon Olewniczak
146ff14b107SSzymon Olewniczak    public function date_diff_hours($rDate, $lDate='now') {
147ff14b107SSzymon Olewniczak        $interval = date_diff(date_create($lDate), date_create($rDate));
148ff14b107SSzymon Olewniczak        return $interval->format('%h:%I');
149ff14b107SSzymon Olewniczak    }
15053df74e7SSzymon Olewniczak
15153df74e7SSzymon Olewniczak    public function time_to_float($time) {
15253df74e7SSzymon Olewniczak        list($hour, $minute) = explode(':', $time);
15353df74e7SSzymon Olewniczak        $hour = (float) $hour;
15453df74e7SSzymon Olewniczak        $minute = (float) $minute;
15553df74e7SSzymon Olewniczak
15653df74e7SSzymon Olewniczak        return $hour + $minute/60;
15753df74e7SSzymon Olewniczak    }
15853df74e7SSzymon Olewniczak
15953df74e7SSzymon Olewniczak    public function float_to_time($float) {
16053df74e7SSzymon Olewniczak        $hours = floor($float);
16153df74e7SSzymon Olewniczak        $minutes = ($float - $hours) * 60;
16253df74e7SSzymon Olewniczak
16353df74e7SSzymon Olewniczak        return sprintf('%d:%02d', $hours, $minutes);
16453df74e7SSzymon Olewniczak    }
165de02284cSSzymon Olewniczak}
166