smarty.php 3.84 KB
Newer Older
1
2
3
4
5
6
7
<?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
8
 * Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 *
 * =============================
 *
 * 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/');
Antonin's avatar
Antonin committed
24
$smarty->setCompileDir(ROOT_DIR . COMPILE_DIR);
25
26
27
28
29
$smarty->setCacheDir(ROOT_DIR . '/cache/');
$smarty->caching = false;

$smarty->assign('APPLICATION_NAME', NOMAPPLICATION);
$smarty->assign('SERVER_URL', Utils::get_server_name());
30
$smarty->assign('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
31
$smarty->assign('TITLE_IMAGE', IMAGE_TITRE);
JosephK's avatar
JosephK committed
32
$smarty->assign('use_nav_js', strstr($_SERVER['SERVER_NAME'], 'framadate.org'));
33
$smarty->assign('locale', $locale);
34
35
$smarty->assign('langs', $ALLOWED_LANGUAGES);
$smarty->assign('date_format', $date_format);
36
37
38
if (isset($config['tracking_code'])) {
    $smarty->assign('tracking_code', $config['tracking_code']);
}
Pierre Rudloff's avatar
Pierre Rudloff committed
39
40
41
if (defined('FAVICON')) {
    $smarty->assign('favicon', FAVICON);
}
42

Antonin's avatar
Antonin committed
43
// Dev Mode
44
if (isset($_SERVER['FRAMADATE_DEVMODE']) && $_SERVER['FRAMADATE_DEVMODE']) {
45
46
47
48
49
50
51
    $smarty->force_compile = true;
    $smarty->compile_check = true;
} else {
    $smarty->force_compile = false;
    $smarty->compile_check = false;
}

Antonin's avatar
Antonin committed
52
53
function smarty_function_poll_url($params, Smarty_Internal_Template $template) {
    $poll_id =  filter_var($params['id'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => POLL_REGEX]]);
54
    $admin =  (isset($params['admin']) && $params['admin']) ? true : false;
55
    $action =  (isset($params['action']) && !empty($params['action'])) ? Utils::htmlEscape($params['action']) : false;
56
    $action_value = (isset($params['action_value']) && !empty($params['action_value'])) ? $params['action_value'] : false;
57
    $vote_unique_id = isset($params['vote_id']) ? filter_var($params['vote_id'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => POLL_REGEX]]) : '';
Antonin's avatar
Antonin committed
58
59
60

    // If filter_var fails (i.e.: hack tentative), it will return false. At least no leak is possible from this.

61
    return Utils::getUrlSondage($poll_id, $admin, $vote_unique_id, $action, $action_value);
62
63
}

Antonin's avatar
Antonin committed
64
65
function smarty_modifier_markdown($md, $clear = false, $inline=true) {
    return Utils::markdown($md, $clear, $inline);
66
67
68
69
70
}

function smarty_modifier_resource($link) {
    return Utils::get_server_name() . $link;
}
71
72
73
function smarty_modifier_addslashes_single_quote($string) {
    return addcslashes($string, '\\\'');
}
74
75

function smarty_modifier_html($html) {
76
    return Utils::htmlEscape($html);
Pierre Rudloff's avatar
Pierre Rudloff committed
77
}
Thomas Citharel's avatar
Thomas Citharel committed
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

function smarty_modifier_datepicker_path($lang) {
    $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';
        }
        $i += 1;
    }
    return 'js/locales/bootstrap-datepicker.' . $lang . '.js';
}

function smarty_modifier_locale_2_lang($locale) {
    $lang_arr = explode('-', $locale);
    if ($lang_arr && count($lang_arr) > 1) {
        return $lang_arr[0];
    } else {
        return $locale;
    }
}

function path_for_datepicker_locale($lang) {
    return __DIR__ . '/../../js/locales/bootstrap-datepicker.' . $lang . '.js';
}