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 1914a1f0a4SSzymon Olewniczak public function __construct(\action_plugin_bez_base $action) { 20de02284cSSzymon Olewniczak 21de02284cSSzymon Olewniczak $this->action = $action; 2214a1f0a4SSzymon Olewniczak $this->conf = $action->getGlobalConf(); 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 3014a1f0a4SSzymon Olewniczak $this->set('wiki_title', $this->conf['title']); 3114a1f0a4SSzymon Olewniczak 32de02284cSSzymon Olewniczak //common one 33fe5d6d1eSSzymon Olewniczak $this->set('users', $this->action->get_model()->userFactory->get_all()); 34fe5d6d1eSSzymon Olewniczak $this->set('groups', $this->action->get_model()->userFactory->get_groups()); 35de02284cSSzymon Olewniczak } 36de02284cSSzymon Olewniczak 37de02284cSSzymon Olewniczak public function action($default=null) { 38de02284cSSzymon Olewniczak $action = $this->action->get_action(); 39de02284cSSzymon Olewniczak if ($action == '' && !is_null($default)) { 40de02284cSSzymon Olewniczak return $default; 41de02284cSSzymon Olewniczak } 42de02284cSSzymon Olewniczak return $action; 43de02284cSSzymon Olewniczak } 44de02284cSSzymon Olewniczak 45ff14b107SSzymon Olewniczak public function param($id, $default='') { 46ff14b107SSzymon Olewniczak return $this->action->get_param($id, $default); 47de02284cSSzymon Olewniczak } 48de02284cSSzymon Olewniczak 49de02284cSSzymon Olewniczak public function url() { 50de02284cSSzymon Olewniczak return call_user_func_array(array($this->action, 'url'), func_get_args()); 51de02284cSSzymon Olewniczak } 52de02284cSSzymon Olewniczak 537fbf4c39SSzymon Olewniczak public function mailto($to, $subject, $body) { 547fbf4c39SSzymon Olewniczak return 'mailto:'.$to.'?subject='.rawurlencode($subject).'&body='.rawurlencode($body); 557fbf4c39SSzymon Olewniczak } 567fbf4c39SSzymon Olewniczak 57a0cd8c78SSzymon Olewniczak public function factory($table) { 58a0cd8c78SSzymon Olewniczak return $this->action->get_model()->factory($table); 59de02284cSSzymon Olewniczak } 60de02284cSSzymon Olewniczak 61de02284cSSzymon Olewniczak /*users info function for shorten the code*/ 6214a1f0a4SSzymon Olewniczak public function user_name($login=false) { 63bc0bd078SSzymon Olewniczak if (!$login) { 6453df74e7SSzymon Olewniczak $login = $this->current_user(); 6553df74e7SSzymon Olewniczak } 66fe5d6d1eSSzymon Olewniczak $name = $this->action->get_model()->userFactory->get_user_full_name($login); 67de02284cSSzymon Olewniczak if ($name === '') { 68de02284cSSzymon Olewniczak return $login; 69de02284cSSzymon Olewniczak } 70de02284cSSzymon Olewniczak return $name; 71de02284cSSzymon Olewniczak } 72de02284cSSzymon Olewniczak 73bc0bd078SSzymon Olewniczak public function user_email($login=false) { 74bc0bd078SSzymon Olewniczak if (!$login) { 75bc0bd078SSzymon Olewniczak $login = $this->current_user(); 76bc0bd078SSzymon Olewniczak } 777fbf4c39SSzymon Olewniczak return $this->action->get_model()->userFactory->get_user_email($login); 78de02284cSSzymon Olewniczak } 79de02284cSSzymon Olewniczak /*end users info functions*/ 80de02284cSSzymon Olewniczak 81de02284cSSzymon Olewniczak public function set($id, $value) { 82de02284cSSzymon Olewniczak $this->variables[$id] = $value; 83de02284cSSzymon Olewniczak } 84de02284cSSzymon Olewniczak 85e8827d73SSzymon Olewniczak public function get($id, $default='') { 86e8827d73SSzymon Olewniczak $arr = explode(' ', $id); 87e8827d73SSzymon Olewniczak $var = $this->variables; 88e8827d73SSzymon Olewniczak foreach($arr as $item) { 89e8827d73SSzymon Olewniczak if (isset($var[$item])) { 90e8827d73SSzymon Olewniczak $var = $var[$item]; 91e8827d73SSzymon Olewniczak } else { 92e8827d73SSzymon Olewniczak return $default; 93e8827d73SSzymon Olewniczak } 94e8827d73SSzymon Olewniczak } 95e8827d73SSzymon Olewniczak return $var; 96de02284cSSzymon Olewniczak } 97de02284cSSzymon Olewniczak 98de02284cSSzymon Olewniczak public function set_values($values) { 99de02284cSSzymon Olewniczak foreach ($values as $name => $value) { 100de02284cSSzymon Olewniczak $this->values[$name] = $value; 101de02284cSSzymon Olewniczak } 102de02284cSSzymon Olewniczak } 103de02284cSSzymon Olewniczak 104de02284cSSzymon Olewniczak public function value($name) { 105de02284cSSzymon Olewniczak return (isset($this->values[$name]) ? $this->values[$name] : ''); 106de02284cSSzymon Olewniczak } 107de02284cSSzymon Olewniczak 108de02284cSSzymon Olewniczak public function getLang($id) { 109*d0221918SSzymon Olewniczak $str = $this->action->getLang($id); 110*d0221918SSzymon Olewniczak if ($id == 'cost') { 111*d0221918SSzymon Olewniczak $currency = $this->action->getConf('currency'); 112*d0221918SSzymon Olewniczak if ($currency != '') { 113*d0221918SSzymon Olewniczak $str .= " ($currency)"; 114*d0221918SSzymon Olewniczak } 115*d0221918SSzymon Olewniczak } 116*d0221918SSzymon Olewniczak return $str; 117de02284cSSzymon Olewniczak } 1188a638198SSzymon Olewniczak 1198a638198SSzymon Olewniczak /** 1208a638198SSzymon Olewniczak * @return mixed 1218a638198SSzymon Olewniczak */ 1228a638198SSzymon Olewniczak public function current_user() { 1238a638198SSzymon Olewniczak return $this->action->get_model()->user_nick; 1248a638198SSzymon Olewniczak } 1258a638198SSzymon Olewniczak 1268a638198SSzymon Olewniczak public function user_acl_level() { 127eb2e6be9SSzymon Olewniczak return $this->action->get_model()->get_level(); 1288a638198SSzymon Olewniczak } 129ff14b107SSzymon Olewniczak 130ff14b107SSzymon Olewniczak public function date($date) { 131ff14b107SSzymon Olewniczak return dformat(strtotime($date), '%Y-%m-%d'); 132ff14b107SSzymon Olewniczak } 133ff14b107SSzymon Olewniczak 134ff14b107SSzymon Olewniczak public function datetime($datetime) { 135ff14b107SSzymon Olewniczak return dformat(strtotime($datetime), '%Y-%m-%d %H:%M'); 136ff14b107SSzymon Olewniczak } 137ff14b107SSzymon Olewniczak 138ff14b107SSzymon Olewniczak public function date_fuzzy_age($datetime) { 139ff14b107SSzymon Olewniczak return datetime_h(strtotime($datetime)); 140ff14b107SSzymon Olewniczak } 141ff14b107SSzymon Olewniczak 142ff14b107SSzymon Olewniczak public function date_diff_days($rDate, $lDate='now', $format='%R%a') { 143ff14b107SSzymon Olewniczak $interval = date_diff(date_create($lDate), date_create($rDate)); 144ff14b107SSzymon Olewniczak return $interval->format("$format ".$this->getLang('days')); 145ff14b107SSzymon Olewniczak } 146ff14b107SSzymon Olewniczak 147ff14b107SSzymon Olewniczak public function date_diff_hours($rDate, $lDate='now') { 148ff14b107SSzymon Olewniczak $interval = date_diff(date_create($lDate), date_create($rDate)); 149ff14b107SSzymon Olewniczak return $interval->format('%h:%I'); 150ff14b107SSzymon Olewniczak } 15153df74e7SSzymon Olewniczak 15253df74e7SSzymon Olewniczak public function time_to_float($time) { 15353df74e7SSzymon Olewniczak list($hour, $minute) = explode(':', $time); 15453df74e7SSzymon Olewniczak $hour = (float) $hour; 15553df74e7SSzymon Olewniczak $minute = (float) $minute; 15653df74e7SSzymon Olewniczak 15753df74e7SSzymon Olewniczak return $hour + $minute/60; 15853df74e7SSzymon Olewniczak } 15953df74e7SSzymon Olewniczak 16053df74e7SSzymon Olewniczak public function float_to_time($float) { 16153df74e7SSzymon Olewniczak $hours = floor($float); 16253df74e7SSzymon Olewniczak $minutes = ($float - $hours) * 60; 16353df74e7SSzymon Olewniczak 16453df74e7SSzymon Olewniczak return sprintf('%d:%02d', $hours, $minutes); 16553df74e7SSzymon Olewniczak } 166de02284cSSzymon Olewniczak} 167