2015-01-11 14:59:25 +01:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
|
|
* is not distributed with this file, you can obtain one at
|
|
|
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
|
|
*
|
|
|
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
2016-08-04 22:26:37 +02:00
|
|
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
2015-01-11 14:59:25 +01:00
|
|
|
*
|
|
|
|
* =============================
|
|
|
|
*
|
|
|
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
|
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
|
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
|
|
*
|
|
|
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
|
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
|
|
*/
|
|
|
|
use Framadate\Utils;
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../../vendor/smarty/smarty/libs/Smarty.class.php';
|
|
|
|
$smarty = new \Smarty();
|
|
|
|
$smarty->setTemplateDir(ROOT_DIR . '/tpl/');
|
2016-05-04 00:57:45 +02:00
|
|
|
$smarty->setCompileDir(ROOT_DIR . COMPILE_DIR);
|
2015-01-11 14:59:25 +01:00
|
|
|
$smarty->setCacheDir(ROOT_DIR . '/cache/');
|
|
|
|
$smarty->caching = false;
|
|
|
|
|
|
|
|
$smarty->assign('APPLICATION_NAME', NOMAPPLICATION);
|
|
|
|
$smarty->assign('SERVER_URL', Utils::get_server_name());
|
2015-01-18 16:14:45 +01:00
|
|
|
$smarty->assign('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
|
2015-01-11 14:59:25 +01:00
|
|
|
$smarty->assign('TITLE_IMAGE', IMAGE_TITRE);
|
2015-09-21 13:06:47 +02:00
|
|
|
$smarty->assign('use_nav_js', strstr($_SERVER['SERVER_NAME'], 'framadate.org'));
|
2018-04-18 17:05:20 +02:00
|
|
|
$smarty->assign('provide_fork_awesome', !isset($config['provide_fork_awesome']) || $config['provide_fork_awesome']);
|
2015-04-11 23:12:01 +02:00
|
|
|
$smarty->assign('locale', $locale);
|
2015-01-11 14:59:25 +01:00
|
|
|
$smarty->assign('langs', $ALLOWED_LANGUAGES);
|
|
|
|
$smarty->assign('date_format', $date_format);
|
2016-12-22 16:14:22 +01:00
|
|
|
if (isset($config['tracking_code'])) {
|
|
|
|
$smarty->assign('tracking_code', $config['tracking_code']);
|
|
|
|
}
|
2016-12-22 16:10:45 +01:00
|
|
|
if (defined('FAVICON')) {
|
|
|
|
$smarty->assign('favicon', FAVICON);
|
|
|
|
}
|
2015-01-11 14:59:25 +01:00
|
|
|
|
2015-04-02 16:52:46 +02:00
|
|
|
// Dev Mode
|
2015-04-07 17:29:15 +02:00
|
|
|
if (isset($_SERVER['FRAMADATE_DEVMODE']) && $_SERVER['FRAMADATE_DEVMODE']) {
|
2015-04-02 11:57:12 +02:00
|
|
|
$smarty->force_compile = true;
|
|
|
|
$smarty->compile_check = true;
|
|
|
|
} else {
|
|
|
|
$smarty->force_compile = false;
|
|
|
|
$smarty->compile_check = false;
|
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_function_poll_url($params, Smarty_Internal_Template $template): string
|
|
|
|
{
|
2015-04-02 16:52:46 +02:00
|
|
|
$poll_id = filter_var($params['id'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => POLL_REGEX]]);
|
2021-12-20 17:46:50 +01:00
|
|
|
$admin = isset($params['admin']) && $params['admin'];
|
2015-04-13 12:33:43 +02:00
|
|
|
$action = (isset($params['action']) && !empty($params['action'])) ? Utils::htmlEscape($params['action']) : false;
|
2015-11-05 22:43:54 +01:00
|
|
|
$action_value = (isset($params['action_value']) && !empty($params['action_value'])) ? $params['action_value'] : false;
|
2015-04-05 17:44:29 +02:00
|
|
|
$vote_unique_id = isset($params['vote_id']) ? filter_var($params['vote_id'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => POLL_REGEX]]) : '';
|
2015-04-02 16:52:46 +02:00
|
|
|
|
|
|
|
// If filter_var fails (i.e.: hack tentative), it will return false. At least no leak is possible from this.
|
|
|
|
|
2015-04-13 12:33:43 +02:00
|
|
|
return Utils::getUrlSondage($poll_id, $admin, $vote_unique_id, $action, $action_value);
|
2015-01-11 14:59:25 +01:00
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_markdown(string $md, bool $clear = false, bool $inline=true): string
|
|
|
|
{
|
2016-05-11 17:38:34 +02:00
|
|
|
return Utils::markdown($md, $clear, $inline);
|
2015-01-11 14:59:25 +01:00
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_resource(string $link): string
|
|
|
|
{
|
2015-01-11 14:59:25 +01:00
|
|
|
return Utils::get_server_name() . $link;
|
|
|
|
}
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_addslashes_single_quote(string $string): string
|
|
|
|
{
|
2016-07-07 14:15:34 +02:00
|
|
|
return addcslashes($string, '\\\'');
|
|
|
|
}
|
2015-01-11 14:59:25 +01:00
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_addslashes(string $string): string
|
|
|
|
{
|
2021-07-19 11:17:00 +02:00
|
|
|
return addslashes($string);
|
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_html(?string $html): string
|
|
|
|
{
|
|
|
|
if (!$html) {
|
|
|
|
return '';
|
|
|
|
}
|
2015-01-17 16:20:42 +01:00
|
|
|
return Utils::htmlEscape($html);
|
2016-12-22 16:10:45 +01:00
|
|
|
}
|
2018-03-19 18:01:19 +01:00
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_html_special_chars(string $html): string
|
|
|
|
{
|
2018-07-09 10:56:09 +02:00
|
|
|
return Utils::htmlMailEscape($html);
|
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_datepicker_path(string $lang): string
|
|
|
|
{
|
2018-03-19 18:01:19 +01:00
|
|
|
$i = 0;
|
|
|
|
while (!is_file(path_for_datepicker_locale($lang)) && $i < 3) {
|
|
|
|
$lang_arr = explode('-', $lang);
|
|
|
|
if ($lang_arr && count($lang_arr) > 1) {
|
|
|
|
$lang = $lang_arr[0];
|
|
|
|
} else {
|
|
|
|
$lang = 'en';
|
|
|
|
}
|
2021-12-20 17:46:50 +01:00
|
|
|
++$i;
|
2018-03-19 18:01:19 +01:00
|
|
|
}
|
|
|
|
return 'js/locales/bootstrap-datepicker.' . $lang . '.js';
|
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function smarty_modifier_locale_2_lang(string $locale): string
|
|
|
|
{
|
2018-03-19 18:01:19 +01:00
|
|
|
$lang_arr = explode('-', $locale);
|
|
|
|
if ($lang_arr && count($lang_arr) > 1) {
|
|
|
|
return $lang_arr[0];
|
|
|
|
}
|
2018-03-19 18:06:13 +01:00
|
|
|
return $locale;
|
2018-03-19 18:01:19 +01:00
|
|
|
}
|
|
|
|
|
2021-12-20 17:46:50 +01:00
|
|
|
function path_for_datepicker_locale(string $lang): string
|
|
|
|
{
|
2018-03-19 18:01:19 +01:00
|
|
|
return __DIR__ . '/../../js/locales/bootstrap-datepicker.' . $lang . '.js';
|
|
|
|
}
|