smarty.php 3.83 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

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];
    }
Thomas Citharel's avatar
CS    
Thomas Citharel committed
98
    return $locale;
Thomas Citharel's avatar
Thomas Citharel committed
99
100
101
102
103
}

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