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 = '';
foreach ($pagination as &$page)
{
$attributes = '';
if (!empty($page['class']))
$attributes .= ' class="' . htmlspecialchars($page['class']) . '" ';
$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 = '
'.($i+1).' | '; $out .= ''.$t1.' | '; $out .= ''.$old.' | '; $out .= ''.$t2.' | '; $out .= ''.$new.' | '; $out .= '