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.' '.$this->getLang('days'); 158*ff14b107SSzymon Olewniczak// } else { 159*ff14b107SSzymon Olewniczak// $time_str = $hours.' '.$this->getLang('hours'); 160*ff14b107SSzymon Olewniczak// } 161*ff14b107SSzymon Olewniczak// } else { 162*ff14b107SSzymon Olewniczak// $time_str = $minutes.' '.$this->getLang('minutes'); 163*ff14b107SSzymon Olewniczak// } 164*ff14b107SSzymon Olewniczak// } else { 165*ff14b107SSzymon Olewniczak// $time_str = $diff.' '.$this->getLang('seconds'); 166*ff14b107SSzymon Olewniczak// } 167*ff14b107SSzymon Olewniczak// 168*ff14b107SSzymon Olewniczak// if ($diff > 0) { 169*ff14b107SSzymon Olewniczak// $time_str .= ' '.$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).' '.$this->getLang('ago'); 188*ff14b107SSzymon Olewniczak// } 189de02284cSSzymon Olewniczak} 190