cache = false; $this->compile_dir = DATA_ROOT . '/cache/compiled'; $this->template_dir = ROOT . '/templates'; $this->compile_check = true; $this->reserved_template_varname = 'tpl'; $this->assign('www_url', WWW_URL); $this->assign('self_url', utils::getSelfUrl()); $this->assign('is_logged', false); } } $tpl = Template::getInstance(); function tpl_csrf_field($params) { $name = utils::CSRF_field_name($params['key']); $value = utils::CSRF_create($params['key']); return ''; } function tpl_form_field($params) { if (!isset($params['name'])) throw new \BadFunctionCallException('name argument is mandatory'); $name = $params['name']; if (isset($_POST[$name])) $value = $_POST[$name]; elseif (isset($params['data']) && isset($params['data'][$name])) $value = $params['data'][$name]; elseif (isset($params['default'])) $value = $params['default']; else $value = ''; if (is_array($value)) { return $value; } if (isset($params['checked'])) { if ($value == $params['checked']) return ' checked="checked" '; return ''; } elseif (isset($params['selected'])) { if ($value == $params['selected']) return ' selected="selected" '; return ''; } return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8'); } function tpl_format_tel($n) { $n = preg_replace('![^\d\+]!', '', $n); if (substr($n, 0, 1) == '+') { $n = preg_replace('!^\+(?:1|2[07]|2\d{2}|3[0-469]|3\d{2}|4[013-9]|' . '4\d{2}|5[1-8]|5\d{2}|6[0-6]|6\d{2}|7\d|8[1-469]|8\d{2}|' . '9[0-58]|9\d{2})!', '\\0 ', $n); } elseif (preg_match('/^\d{10}$/', $n)) { $n = preg_replace('!(\d{2})!', '\\1 ', $n); } return $n; } function tpl_strftime_fr($ts, $format) { return utils::strftime_fr($format, $ts); } function tpl_date_fr($ts, $format) { return utils::date_fr($format, $ts); } function tpl_format_droits($params) { $droits = $params['droits']; $out = ['connexion' => '', 'inscription' => '', 'membres' => '', 'compta' => '', 'wiki' => '', 'config' => '']; $classes = [ Membres::DROIT_AUCUN => 'aucun', Membres::DROIT_ACCES => 'acces', Membres::DROIT_ECRITURE=> 'ecriture', Membres::DROIT_ADMIN => 'admin', ]; foreach ($droits as $cle=>$droit) { $cle = str_replace('droit_', '', $cle); if (array_key_exists($cle, $out)) { $class = $classes[$droit]; $desc = false; $s = false; if ($cle == 'connexion') { if ($droit == Membres::DROIT_AUCUN) $desc = 'N\'a pas le droit de se connecter'; else $desc = 'A le droit de se connecter'; } elseif ($cle == 'inscription') { if ($droit == Membres::DROIT_AUCUN) $desc = 'N\'a pas le droit de s\'inscrire seul'; else $desc = 'A le droit de s\'inscrire seul'; } elseif ($cle == 'config') { $s = '☑'; if ($droit == Membres::DROIT_AUCUN) $desc = 'Ne peut modifier la configuration'; else $desc = 'Peut modifier la configuration'; } elseif ($cle == 'compta') { $s = '€'; } if (!$s) $s = strtoupper($cle[0]); if (!$desc) { $desc = ucfirst($cle). ' : '; if ($droit == Membres::DROIT_AUCUN) $desc .= 'Pas accès'; elseif ($droit == Membres::DROIT_ACCES) $desc .= 'Lecture uniquement'; elseif ($droit == Membres::DROIT_ECRITURE) $desc .= 'Lecture & écriture'; else $desc .= 'Administration'; } $out[$cle] = ''.$s.''; } } return implode(' ', $out); } function tpl_format_wiki($str) { $str = utils::htmlLinksOnUrls($str); $str = utils::htmlSpip($str); $str = utils::htmlGarbage2xhtml($str); return $str; } function tpl_liens_wiki($str, $prefix) { return preg_replace_callback('!!i', function ($matches) use ($prefix) { return ''; }, $str); } function tpl_pagination($params) { if (!isset($params['url']) || !isset($params['page']) || !isset($params['bypage']) || !isset($params['total'])) throw new \BadFunctionCallException("Paramètre manquant pour pagination"); if ($params['total'] == -1) return ''; $pagination = utils::getGenericPagination($params['page'], $params['total'], $params['bypage']); if (empty($pagination)) return ''; $out = ''; return $out; } function tpl_diff($params) { if (!isset($params['old']) || !isset($params['new'])) { throw new Template_Exception('Paramètres old et new requis.'); } $old = $params['old']; $new = $params['new']; require_once ROOT . '/include/libs/diff/class.simplediff.php'; $diff = \simpleDiff::diff_to_array(false, $old, $new, 3); $out = ''; $prev = key($diff); foreach ($diff as $i=>$line) { if ($i > $prev + 1) { $out .= ''; } list($type, $old, $new) = $line; $class1 = $class2 = ''; $t1 = $t2 = ''; if ($type == \simpleDiff::INS) { $class2 = 'ins'; $t2 = ''; $old = htmlspecialchars($old, ENT_QUOTES, 'UTF-8'); $new = htmlspecialchars($new, ENT_QUOTES, 'UTF-8'); } elseif ($type == \simpleDiff::DEL) { $class1 = 'del'; $t1 = ''; $old = htmlspecialchars($old, ENT_QUOTES, 'UTF-8'); $new = htmlspecialchars($new, ENT_QUOTES, 'UTF-8'); } elseif ($type == \simpleDiff::CHANGED) { $class1 = 'del'; $class2 = 'ins'; $t1 = ''; $t2 = ''; $lineDiff = \simpleDiff::wdiff($old, $new); $lineDiff = htmlspecialchars($lineDiff, ENT_QUOTES, 'UTF-8'); // Don't show new things in deleted line $old = preg_replace('!\{\+(?:.*)\+\}!U', '', $lineDiff); $old = str_replace(' ', ' ', $old); $old = str_replace('-] [-', ' ', $old); $old = preg_replace('!\[-(.*)-\]!U', '\\1', $old); // Don't show old things in added line $new = preg_replace('!\[-(?:.*)-\]!U', '', $lineDiff); $new = str_replace(' ', ' ', $new); $new = str_replace('+} {+', ' ', $new); $new = preg_replace('!\{\+(.*)\+\}!U', '\\1', $new); } else { $old = htmlspecialchars($old, ENT_QUOTES, 'UTF-8'); $new = htmlspecialchars($new, ENT_QUOTES, 'UTF-8'); } $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $prev = $i; } $out .= '

'.($i+1).''.$t1.''.$old.''.$t2.''.$new.'
'; return $out; } function tpl_select_compte($params) { $name = $params['name']; $comptes = $params['comptes']; $selected = isset($params['data'][$params['name']]) ? $params['data'][$params['name']] : utils::post($name); $out = ''; foreach ($config['options'] as $k=>$v) { if (is_int($k)) $k = $v; $field .= '