function sarkaspip_insert_head($flux)
{
    include_spip('inc/config');
    // Recuperation des parametres cfg sur le menu des rubriques
    $position = lire_config('sarkaspip_menus/position_rubriques', 1);
    $modele = lire_config('sarkaspip_menus/modele_rubriques', 1);
    // Si le menu des rubriques est deroulant dans le bandeau
    if ($position == 5 && $modele == 1) {
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/menu_deroulant_horizontal.js')) . '" type="text/javascript"></script>';
    }
    // Si le menu des rubriques est deroulant dans la colonne navigation
    if ($position == 1 && $modele == 1) {
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/menu_deroulant_vertical.js')) . '" type="text/javascript"></script>';
    }
    // Insertion de la librairie jCarouselLite et des librairies connexes
    $position = lire_config('sarkaspip_album/position_carrousel', 1);
    $modele = lire_config('sarkaspip_album/modele_carrousel', 1);
    if ($position != 0 && $modele == 1) {
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/jcarousellite_1.0.1.js')) . '" type="text/javascript"></script>';
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.mousewheel.js')) . '" type="text/javascript"></script>';
    }
    // Insertion de la librairie Innerfade pour la noisette des sites favoris
    $position = lire_config('sarkaspip_noisettes/position_herbier', 0);
    $modele = lire_config('sarkaspip_noisettes/liste_herbier', 2);
    if ($position != 0 && $modele == 2) {
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.innerfade.js')) . '" type="text/javascript"></script>';
    }
    // Insertion de la librairie jquery.corner pour la noisette cfg_sarkaspip_coins
    $coins_arrondis = lire_config('sarkaspip_coins/avec_arrondis', 0);
    if ($coins_arrondis == 1) {
        $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.corner.js')) . '" type="text/javascript"></script>';
        $flux .= '<script src="' . generer_url_public('sarkaspip_coins.js') . '" type="text/javascript"></script>';
    }
    return $flux;
}
function formulaires_configurer_preferences_charger()
{
    // travailler sur des meta fraiches
    include_spip('inc/meta');
    lire_metas();
    $valeurs = array();
    $valeurs['display_navigation'] = isset($GLOBALS['visiteur_session']['prefs']['display_navigation']) ? $GLOBALS['visiteur_session']['prefs']['display_navigation'] : 'navigation_avec_icones';
    $valeurs['display_outils'] = isset($GLOBALS['visiteur_session']['prefs']['display_outils']) ? $GLOBALS['visiteur_session']['prefs']['display_outils'] : 'oui';
    $valeurs['display'] = (isset($GLOBALS['visiteur_session']['prefs']['display']) and $GLOBALS['visiteur_session']['prefs']['display'] > 0) ? $GLOBALS['visiteur_session']['prefs']['display'] : 2;
    $valeurs['couleur'] = (isset($GLOBALS['visiteur_session']['prefs']['couleur']) and $GLOBALS['visiteur_session']['prefs']['couleur'] > 0) ? $GLOBALS['visiteur_session']['prefs']['couleur'] : 1;
    $valeurs['spip_ecran'] = $GLOBALS['spip_ecran'];
    // Ajout TinyMCE
    //var_export($GLOBALS['visiteur_session']['prefs']);
    $valeurs['tinymce'] = isset($GLOBALS['visiteur_session']['prefs']['tinymce']) ? $GLOBALS['visiteur_session']['prefs']['tinymce'] : 'oui';
    // ! Ajout TinyMCE
    $couleurs = charger_fonction('couleurs', 'inc');
    $les_couleurs = $couleurs(array(), true);
    $i = 1;
    foreach ($les_couleurs as $k => $c) {
        $valeurs['couleurs_url'][$i] = generer_url_public('style_prive.css', 'ltr=' . $GLOBALS['spip_lang_left'] . '&' . $couleurs($k));
        $valeurs['couleurs'][$i++] = $c;
    }
    $valeurs['imessage'] = $GLOBALS['visiteur_session']['imessage'];
    return $valeurs;
}
/**
 * Ajoute les scripts JS et CSS de saisies dans l'espace public
 *
 * Ajoute également de quoi gérer le datepicker de la saisie date si
 * celle-ci est utilisée dans la page.
 * 
 * @param string $flux 
 * @return string
**/
function saisies_affichage_final($flux)
{
    if (($p = strpos($flux, "<!--!inserer_saisie_editer-->")) !== false) {
        // On insère la CSS devant le premier <link> trouvé
        if (!($pi = strpos($flux, "<link")) and !($pi = strpos($flux, '</head'))) {
            $pi = $p;
        }
        // si pas de <link inserer comme un goret entre 2 <li> de saisies
        $css = generer_url_public('saisies.css');
        $ins_css = "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n";
        if (strpos($flux, "saisie_date") !== false) {
            //si on a une saisie de type date, on va charger les css de jquery_ui
            include_spip("jqueryui_pipelines");
            if (function_exists("jqueryui_dependances")) {
                $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
                array_push($ui_plugins, "jquery.ui.theme");
                foreach ($ui_plugins as $ui_plug) {
                    $ui_plug_css = find_in_path("css/{$ui_plug}.css");
                    if (strpos($flux, "css/{$ui_plug}.css") === false) {
                        // si pas déjà chargé
                        $ins_css .= "\n<link rel='stylesheet' href='{$ui_plug_css}' type='text/css' media='all' />\n";
                    }
                }
            }
        }
        $flux = substr_replace($flux, $ins_css, $pi, 0);
        // On insère le JS à la fin du <head>
        $pos_head = strpos($flux, '</head');
        $js = find_in_path('javascript/saisies.js');
        $ins_js = "\n<script type='text/javascript' src='{$js}'></script>\n";
        $flux = substr_replace($flux, $ins_js, $pos_head, 0);
    }
    return $flux;
}
function html_78503d8cb0bd66f2d97f4b9c0f7d329a($Cache, $Pile, $doublons = array(), $Numrows = array(), $SP = 0)
{
    if (isset($Pile[0]["doublons"]) and is_array($Pile[0]["doublons"])) {
        $doublons = nettoyer_env_doublons($Pile[0]["doublons"]);
    }
    $connect = '';
    $page = '

' . (($t1 = BOUCLE_art_agendahtml_78503d8cb0bd66f2d97f4b9c0f7d329a($Cache, $Pile, $doublons, $Numrows, $SP)) !== '' ? '
<div class="menu" id="menu-agenda">
	<br />
	<h3 class="structure">' . _T('public|spip|ecrire:icone_agenda') . '</h3>
	<ul>
		<li>
			<a class="lien" href="' . interdire_scripts(generer_url_public('agenda', '')) . '" title="' . _T('public|spip|ecrire:icone_agenda') . '">' . _T('public|spip|ecrire:icone_agenda') . '</a>
			<ul>
		' . $t1 . '
			</ul>
		</li>
	</ul>
</div>
' : '') . '

';
    return analyse_resultat_skel('html_78503d8cb0bd66f2d97f4b9c0f7d329a', $Cache, $page, 'squelettes/inc/inc-menu-agenda.html');
}
Exemple #5
0
function message_oubli($email, $param)
{
	$r = formulaires_oubli_mail($email);
	if (is_array($r) AND $r[1]) {
		include_spip('inc/acces'); # pour creer_uniqid
		include_spip('inc/texte'); # pour corriger_typo
		$cookie = creer_uniqid();
		sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']);

		$nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"]));
		$envoyer_mail = charger_fonction('envoyer_mail','inc');

		if ($envoyer_mail($email,
				  ("[$nom] " .  _T('pass_oubli_mot')),
				  _T('pass_mail_passcookie',
				     array('nom_site_spip' => $nom,
					   'adresse_site' => url_de_base(),
					   'sendcookie' => generer_url_public('spip_pass',
					   "$param=$cookie", true)))) )
		  return _T('pass_recevoir_mail');
		else
		  return  _T('pass_erreur_probleme_technique');
	}
	return  _T('pass_erreur_probleme_technique');
}
Exemple #6
0
function action_logout_dist()
{
    global $visiteur_session, $ignore_auth_http;
    $logout = _request('logout');
    $url = securiser_redirect_action(_request('url'));
    // cas particulier, logout dans l'espace public
    if ($logout == 'public' and !$url) {
        $url = url_de_base();
    }
    // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
    if (is_numeric($visiteur_session['id_auteur'])) {
        include_spip('inc/auth');
        auth_trace($visiteur_session, '0000-00-00 00:00:00');
        // le logout explicite vaut destruction de toutes les sessions
        if (isset($_COOKIE['spip_session'])) {
            $session = charger_fonction('session', 'inc');
            $session($visiteur_session['id_auteur']);
            spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600);
        }
        // si authentification http, et que la personne est loge,
        // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
        if (isset($_SERVER['PHP_AUTH_USER']) and !$ignore_auth_http and $GLOBALS['auth_can_disconnect']) {
            ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true);
        }
    }
    // Rediriger en contrant le cache navigateur (Safari3)
    include_spip('inc/headers');
    redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login'));
}
Exemple #7
0
/**
 * Se deloger
 * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton,
 * avec un autosubmit js pour ne pas compliquer l'experience utilisateur
 *
 * http://doc.spip.org/@action_logout_dist
 *
 */
function action_logout_dist()
{
	$logout =_request('logout');
	$url = _request('url');
	// seul le loge peut se deloger
	// (mais id_auteur peut valoir 0 apres une restauration avortee)
	if (isset($GLOBALS['visiteur_session']['id_auteur']) 
	AND is_numeric($GLOBALS['visiteur_session']['id_auteur'])
	// des sessions anonymes avec id_auteur=0 existent,
	// mais elles n'ont pas de statut : verifier ca aussi
	AND isset($GLOBALS['visiteur_session']['statut'])) {
		// relancer si pas de jeton
		if (!action_logout_secu($logout, $url, _request('jeton'))) {
			return; // page submit retournee
		} elseif (isset($_COOKIE['spip_session'])) {
		// le logout explicite vaut destruction de toutes les sessions
			
			$session = charger_fonction('session', 'inc');
			$session($GLOBALS['visiteur_session']['id_auteur']);
			spip_setcookie('spip_session', $_COOKIE['spip_session'], time()-3600);
		}
		include_spip('inc/auth');
		auth_trace($GLOBALS['visiteur_session'],'0000-00-00 00:00:00');
	}
	// Action terminee (ou non faite si pas les droits) on redirige.
	// Cas particulier, logout dans l'espace public
	$url = securiser_redirect_action($url);
	if ($logout == 'public' AND !$url)
		$url = url_de_base();
	include_spip('inc/headers');
	redirige_par_entete($url
		// contrer le cache navigateur (Safari3)
		? parametre_url($url, 'var_hasard', uniqid(rand()), '&')
		: generer_url_public('login'));
}
function vacarme_commande_header_prive($flux)
{
    $js = find_in_path('prive/squelettes/javascript/vacarme_commande_prive.js');
    $flux .= "\n<script type='text/javascript' src='{$js}'></script>\n";
    $css = generer_url_public('prive/squelettes/css/vacarme_commande_prive.css');
    $flux .= "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n";
    return $flux;
}
/**
 * Insertion dans le pipeline recuperer_fond (SPIP)
 * 
 * Ajouter le script leaflet.geodiv.js au squelette du script de GIS
 * 
 * @param array $flux
 * @return array $flux
 */
function geol_recuperer_fond($flux)
{
    if ($flux['args']['fond'] == 'javascript/gis.js') {
        $flux['data']['texte'] .= "\n\n(function() { L.gisConfig.getInfowindowUrl = '" . url_absolue(generer_url_public('get_infowindow')) . "'; })();";
        $flux['data']['texte'] .= "\n\n" . spip_file_get_contents(find_in_path('javascript/leaflet.geodiv.js'));
    }
    return $flux;
}
Exemple #10
0
/**
 * cette fonction doit etre appelee avec un $id_transaction securise
 * jamais avec un $id_transaction qui provient directement de l'url sans verification
 *
 * @param <type> $mode
 * @param <type> $acte_ou_abo
 * @param <type> $succes
 * @param <type> $id_transaction
 */
function redirige_apres_retour_transaction($mode, $acte_ou_abo, $succes, $id_transaction = 0)
{
    $redirect = "";
    // cas de paiement par un admin (cheque...)
    // renvoyer dans le prive
    $id_auteur = sql_getfetsel("id_auteur", "spip_transactions", "id_transaction=" . intval($id_transaction));
    if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur and include_spip("inc/autoriser") and autoriser("regler", "transaction", $id_transaction)) {
        $redirect = generer_url_ecrire("transactions", "id_transaction=" . $id_transaction, true);
    }
    if (!$redirect) {
        // par defaut on revient sur une des pages reglees en define()
        // _BANK_ACTE_NORMAL_RETURN_URL
        // _BANK_ACTE_CANCEL_RETURN_URL
        // _BANK_ABO_NORMAL_RETURN_URL
        // _BANK_ABO_CANCEL_RETURN_URL
        $acte_ou_abo = $acte_ou_abo == 'acte' ? 'ACTE' : 'ABO';
        $c = "_BANK_" . $acte_ou_abo . "_NORMAL_RETURN_URL";
        if ($succes) {
            if (defined($c)) {
                $redirect = constant($c);
            } else {
                $redirect = generer_url_public('bank_retour_ok');
            }
        } else {
            if (defined($c)) {
                $redirect = constant($c);
            } else {
                $redirect = generer_url_public('bank_retour_echec');
            }
        }
        if (strlen($redirect)) {
            $redirect = parametre_url($redirect, 'type', $acte_ou_abo, '&');
            if ($id_transaction = intval($id_transaction)) {
                // attraper les infos sur la transaction
                $row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction));
            }
            if ($row and $row['transaction_hash']) {
                $redirect = parametre_url($redirect, 'id_transaction', $id_transaction, '&');
                $redirect = parametre_url($redirect, 'transaction_hash', $row['transaction_hash'], '&');
            }
        }
    }
    // permettre de definir autrement l'url de redirection
    $redirect = pipeline('bank_redirige_apres_retour_transaction', array('args' => array('mode' => $mode, 'type' => $acte_ou_abo, 'succes' => $succes, 'id_transaction' => $id_transaction, 'row' => $row), 'data' => $redirect));
    #var_dump($redirect);die();
    if (strlen($redirect)) {
        include_spip('inc/headers');
        redirige_par_entete($redirect);
        exit;
    }
    //on ne devrait jamais arriver la !
    if ($succes) {
        echo "Transaction {$mode} {$acte_ou_abo} {$id_transaction} terminee OK";
    } else {
        echo "Transaction {$mode} {$acte_ou_abo} {$id_transaction} annulee";
    }
    die;
}
/**
 * chargement des valeurs par defaut des champs du #FORMULAIRE_RECHERCHE
 * on peut lui passer l'url de destination en premier argument
 * on peut passer une deuxième chaine qui va différencier le formulaire pour pouvoir en utiliser plusieurs sur une même page
 *
 * @param string $lien URL où amène le formulaire validé
 * @param string $class Une class différenciant le formulaire
 * @return array
 */
function formulaires_recherche_charger_dist($lien = '', $class = '')
{
    if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site']) {
        $lang = $GLOBALS['spip_lang'];
    } else {
        $lang = '';
    }
    $action = $lien ? $lien : generer_url_public('recherche');
    # action specifique, ne passe pas par Verifier, ni Traiter
    return array('action' => $action, 'recherche' => _request('recherche'), 'lang' => $lang, 'class' => $class, '_id_champ' => $class ? substr(md5($action . $class), 0, 4) : 'recherche');
}
Exemple #12
0
/**
 * Un filtre qui, etant donne un #PARAMETRES_FORUM, retourne un URL de suivi rss
 * dudit forum
 * Attention applique a un #PARAMETRES_FORUM complexe (id_article=x&id_forum=y)
 * ca retourne un url de suivi du thread y (que le thread existe ou non)
 *
 * @param $param
 * @return string
 */
function filtre_url_rss_forum($param)
{
    if (!preg_match(',.*(id_(\\w*?))=([0-9]+),S', $param, $regs)) {
        return '';
    }
    list(, $k, $t, $v) = $regs;
    if ($t == 'forum') {
        $k = 'id_' . ($t = 'thread');
    }
    return generer_url_public("rss_forum_{$t}", array($k => $v));
}
Exemple #13
0
function action_renvoyer_facture_dist()
{
    $securiser_action = charger_fonction("securiser_action", "inc");
    $id_facture = $securiser_action();
    if ($row = sql_fetsel("details,id_auteur,no_comptable", "spip_factures", "id_facture=" . intval($id_facture)) and $notifications = charger_fonction('notifications', 'inc')) {
        spip_log("Renvoi de la facture #{$id_facture} a auteur #" . $row['id_auteur'] . " par #" . $GLOBALS['visiteur_session']['id_auteur'], "facture" . _LOG_INFO_IMPORTANTE);
        $options = array();
        $options['url_facture'] = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($row['details']), false, false);
        $notifications("genererfacture", $id_facture, $options);
    }
}
/**
 * Intervient au traitement du formulaire
 *
 * @pipeline formulaire_traiter
 * @param  array $flux Données du pipeline
 * @return array       Données du pipeline
 */
function fourstepsforplanet_formulaire_traiter($flux)
{
    $form = $flux['args']['form'];
    if ($form == 'joindre_document' and !_request('exec')) {
        include_spip('action/zencoder_new_job');
        $id_document = $flux['data']['ids'][0];
        //Convert the video with zencoder
        zencoder_new_job($id_document);
        $flux['data']['redirect'] = '/' . generer_url_public("rubrique", "id_rubrique=5&id_document={$id_document}") . $flux['data']['redirect'];
    }
    return $flux;
}
Exemple #15
0
function vhplab_insert_head($flux)
{
    if (function_exists('lire_config')) {
        $key = lire_config("vhplab/api_key");
        $flux .= '<!-- VHPlab GIS plugin spip 3.0 ' . generer_url_public('vhplab.js') . ' -->
		<link rel="stylesheet" href="' . _DIR_PLUGIN_VHPLAB . 'css/vhplab.css" type="text/css" />
		<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=' . $key . '&sensor=true"></script>
		<script type="text/javascript" src="' . _DIR_PLUGIN_VHPLAB . 'js/vhplab.js"></script>
	';
    }
    return $flux;
}
function formulaires_clevermail_list_edit_charger_dist($lst_id = -1)
{
    // Ces define sont mis ici car dans clevermail_options.php, il etait impossible de surcharger avec un plugin ayant :
    // 	<utilise id="clevermail" version="[2.5.0;]" />
    // Pour proposer une URL complète (true) ou juste le chemin du squelette (false) à la création d'une nouvelle lettre
    if (!defined('_CLEVERMAIL_DISTANT')) {
        define("_CLEVERMAIL_DISTANT", true);
    }
    if (!defined('_CLEVERMAIL_NOUVEAUTES_HTML')) {
        define("_CLEVERMAIL_NOUVEAUTES_HTML", 'clevermail_nouveautes_html');
    }
    // _CLEVERMAIL_NOUVEAUTES_HTML_OPTION est facultatif. Il permet de completer l'url amorcee avec _CLEVERMAIL_NOUVEAUTES_HTML.
    // define("_CLEVERMAIL_NOUVEAUTES_HTML_OPTION", 'cat=mot&sujet=1&pied=1&entete=1');
    if (!defined('_CLEVERMAIL_NOUVEAUTES_TEXT')) {
        define("_CLEVERMAIL_NOUVEAUTES_TEXT", 'clevermail_nouveautes_text');
    }
    // _CLEVERMAIL_NOUVEAUTES_TEXT_OPTION est facultatif. Il permet de completer l'url amorcee avec _CLEVERMAIL_NOUVEAUTES_TEXT.
    // define("_CLEVERMAIL_NOUVEAUTES_TEXT_OPTION", 'cat=mot&sujet=1&pied=1&entete=1');
    if ($valeurs = sql_fetsel('*', 'spip_cm_lists', 'lst_id=' . intval($lst_id))) {
        $valeurs['lst_auto_week_days'] = explode(',', $valeurs['lst_auto_week_days']);
    } else {
        $cm_mail_admin = sql_getfetsel('set_value', 'spip_cm_settings', 'set_name="CM_MAIL_ADMIN"');
        if (defined('_CLEVERMAIL_NOUVEAUTES_HTML_OPTION')) {
            if (_CLEVERMAIL_DISTANT) {
                $url_html = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_HTML, _CLEVERMAIL_NOUVEAUTES_HTML_OPTION));
            } else {
                $url_html = _CLEVERMAIL_NOUVEAUTES_HTML;
            }
        } else {
            if (_CLEVERMAIL_DISTANT) {
                $url_html = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_HTML));
            } else {
                $url_html = _CLEVERMAIL_NOUVEAUTES_HTML;
            }
        }
        if (defined('_CLEVERMAIL_NOUVEAUTES_TEXT_OPTION')) {
            if (_CLEVERMAIL_DISTANT) {
                $url_text = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_TEXT, _CLEVERMAIL_NOUVEAUTES_TEXT_OPTION));
            } else {
                $url_text = _CLEVERMAIL_NOUVEAUTES_TEXT;
            }
        } else {
            if (_CLEVERMAIL_DISTANT) {
                $url_text = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_TEXT));
            } else {
                $url_text = _CLEVERMAIL_NOUVEAUTES_TEXT;
            }
        }
        $valeurs = array('lst_id' => -1, 'lst_name' => '', 'lst_comment' => '', 'lst_moderation' => 'closed', 'lst_moderator_email' => $cm_mail_admin, 'lst_subscribe_subject' => _T('clevermail:confirmation_votre_inscription'), 'lst_subscribe_text' => _T('clevermail:confirmation_votre_inscription_text'), 'lst_unsubscribe_subject' => _T('clevermail:confirmation_votre_desinscription'), 'lst_unsubscribe_text' => _T('clevermail:confirmation_votre_desinscription_text'), 'lst_subject_tag' => 1, 'lst_url_html' => $url_html, 'lst_url_text' => $url_text, 'lst_auto_mode' => 'none', 'lst_auto_hour' => 8, 'lst_auto_week_days' => array(1), 'lst_auto_month_day' => 1, 'lst_auto_subscribers' => '', 'lst_auto_subscribers_mode' => 1);
    }
    return $valeurs;
}
/**
 * Définit l'entête par défaut pour le plugin Palette
 */
function inc_palette_header_dist($type = '')
{
    $js = generer_url_public('palette.js');
    $css = find_in_path(_DIR_LIB_PALETTE . 'farbtastic.css');
    $ret = '<link rel="stylesheet" href="' . $css . '" type="text/css" media="all" />' . "\n";
    $ret .= '<script type="text/javascript" src="' . $js . '"></script>' . "\n";
    if ($type == 'public') {
        // insertion de la feuille de style uniquement pour le public
        $css_publique = generer_url_public('palette.css');
        $ret .= '<link rel="stylesheet" href="' . $css_publique . '" type="text/css" media="all" />' . "\n";
    }
    return $ret;
}
function skeleditor_extraire_css($texte){
	$url_base = url_de_base();
	$url_page = substr(generer_url_public('A'), 0, -1);
	$dir = preg_quote($url_page,',').'|'.preg_quote(preg_replace(",^$url_base,",_DIR_RACINE,$url_page),',');

	$css = array();
	// trouver toutes les css pour les afficher dans le bouton
	// repris du compresseur
	foreach (extraire_balises($texte, 'link') as $s) {
		if (extraire_attribut($s, 'rel') === 'stylesheet'
		AND (!($type = extraire_attribut($s, 'type'))
			OR $type == 'text/css')
		AND !strlen(strip_tags($s))
		AND $src = preg_replace(",^$url_base,",_DIR_RACINE,extraire_attribut($s, 'href'))
		AND (
			// regarder si c'est du format spip.php?page=xxx
			preg_match(',^('.$dir.')(.*)$,', $src, $r)
			OR (
				// ou si c'est un fichier
				// enlever un timestamp eventuel derriere un nom de fichier statique
				$src2 = preg_replace(",[.]css[?].+$,",'.css',$src)
				// verifier qu'il n'y a pas de ../ ni / au debut (securite)
				AND !preg_match(',(^/|\.\.),', substr($src2,strlen(_DIR_RACINE)))
				// et si il est lisible
				AND @is_readable($src2)
			)
		)) {
			if ($r)
				$css[$s] = explode('&',
					str_replace('&amp;', '&', $r[2]), 2);
			else{
				$file = preg_replace(",[?]\d+$,","",$src);
				if (strncmp($file,_DIR_VAR,strlen(_DIR_VAR))==0){
					lire_fichier($file,$c);
					if (preg_match(",^\/\*\s*(#@.*)\s*\*\/,Uims",$c,$m)){
						$inc = explode("#@",$m[1]);
						$inc = array_map('trim',$inc);
						$inc = array_filter($inc);
						foreach($inc as $i){
							if (!in_array($i,$css))
								$css["$s:$i"] = $i;
						}
					}
				}
				else
					$css[$s] = $file;
			}
		}
	}
	return $css;
}
Exemple #19
0
function formulaires_recherche_charger_dist($lien_filtre = NULL,$lien_arg = NULL){
	$lien = $lien_filtre ? $lien_filtre : $lien_arg;
	if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
		$lang = $GLOBALS['spip_lang'];
	else
		$lang='';

	return 
		array(
			'action' => ($lien ? $lien : generer_url_public('recherche')), # action specifique, ne passe pas par Verifier, ni Traiter
			'recherche' => _request('recherche'),
			'lang' => $lang
		);
}
function controleurs_portfolio_dist($regs)
{
    list(, $crayon, $type, $champ, $id) = $regs;
    include_spip('inc/minipres');
    # pour aide()
    include_spip('inc/presentation');
    # pour debut_cadre()
    include_spip('inc/layer');
    # pour le js des fleches
    include_spip('inc/documents');
    # pour aide()
    $html = http_script("\nvar ajax_image_searching = \n'<div style=\"float: " . $GLOBALS['spip_lang_right'] . ";\"><img src=\"" . url_absolue(_DIR_IMG_PACK . "searching.gif") . "\" alt=\"\" /></div>';") . http_script('', generer_url_public('jquery.js')) . http_script('', _DIR_JAVASCRIPT . 'layer.js', '') . afficher_documents_colonne($id, $type, 'portfolio');
    $status = NULL;
    return array($html, $status);
}
Exemple #21
0
function message_oubli($email, $param)
{
    $r = formulaires_oubli_mail($email);
    if (is_array($r) and $r[1]) {
        include_spip('inc/texte');
        # pour corriger_typo
        include_spip('action/inscrire_auteur');
        $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
        $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => generer_url_public('spip_pass', "{$param}={$cookie}", true, false)));
        include_spip("inc/notifications");
        notifications_envoyer_mails($email, $msg);
        return _T('pass_recevoir_mail');
    }
    return _T('pass_erreur_probleme_technique');
}
function envoyer_inscription($desc, $nom, $mode, $id)
{
    $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]);
    $adresse_site = $GLOBALS['meta']["adresse_site"];
    if ($mode == '6forum') {
        // $adresse_login = generer_url_public('login');
        // http://localhost:8888/vacarme_commande/spip.php?page=compte&section=identification
        $adresse_login = generer_url_public('compte', 'section=identification');
        $msg = 'vacarme_commande:inscription_message_voici1';
    } else {
        $adresse_login = $adresse_site . '/' . _DIR_RESTREINT_ABS;
        $msg = 'form_forum_voici2';
    }
    $msg = _T('vacarme_commande:inscription_message_auto') . "\n\n" . _T('form_forum_bonjour', array('nom' => $nom)) . "\n\n" . _T($msg, array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site . '/')) . "\n\n- " . _T('form_forum_login') . " " . $desc['login'] . "\n- " . _T('form_forum_pass') . " " . $desc['pass'] . "\n-" . _T('vacarme_commande:inscription_message_adresse_login') . " " . $adresse_login . "\n\n" . _T('vacarme_commande:inscription_message_fin') . "\n";
    return array("[{$nom_site_spip}] " . _T('form_forum_identifiants'), $msg);
}
Exemple #23
0
/**
 * Generer une facture unique pour une transaction
 * en gerant le risque de double appel concurent pour la meme transaction
 * (en principe deja gere en amont de l'appel, mais pas de facon certaine a 100%)
 *
 * @param int $id_transaction
 * @param null|array $options_notif
 * @return array|bool
 */
function factures_creer_facture($id_transaction, $options_notif = null)
{
    $id_facture = 0;
    $no_comptable = '';
    $url = '';
    // transaction deja en cours de facturation ?
    // attendons au max 5s pour voir si la facturation se fait entre temps
    // permet de recuperer le numero de facture
    $max_wait = 5;
    while ($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)) and $row['id_facture'] == -1 and $max_wait--) {
        sleep(1);
    }
    // transaction introuvable ou toujours verrouillee ?
    if (!$row or $row['id_facture'] == -1) {
        return false;
    }
    // deja facture
    if ($row['id_facture']) {
        $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($row['details']), false, false);
        return array($row['id_facture'], $row['no_comptable'], $url);
    }
    // verouiller la facturation de cette transaction
    sql_updateq("spip_transactions", array('id_facture' => -1), "id_transaction=" . intval($id_transaction));
    // creer la facture
    $details = recuperer_fond('modeles/transaction_details', array('id_transaction' => $id_transaction));
    $client = recuperer_fond('modeles/client_adresse_facture', array('id_auteur' => $row['id_auteur'], 'id_transaction' => $id_transaction));
    $numeroter_facture = charger_fonction('numeroter_facture', 'inc');
    $set = array('id_auteur' => $row['id_auteur'], 'montant_ht' => $row['montant_ht'], 'montant' => $row['montant'], 'montant_regle' => $row['montant_regle'], 'date' => date('Y-m-d H:i:s'), 'date_paiement' => $row['date_paiement'], 'client' => $client, 'details' => $details, 'parrain' => $row['parrain'], 'tracking_id' => $row['tracking_id']);
    // Envoyer aux plugins
    $set = pipeline('pre_insertion', array('args' => array('table' => 'spip_factures'), 'data' => $set));
    $id_facture = sql_insertq('spip_factures', $set);
    if ($id_facture) {
        $no_comptable = $numeroter_facture($id_facture, $set['date']);
        $set['no_comptable'] = $no_comptable;
        sql_updateq("spip_factures", array("no_comptable" => $no_comptable), "id_facture=" . intval($id_facture));
        sql_updateq("spip_transactions", array("id_facture" => $id_facture), "id_transaction=" . intval($id_transaction));
        pipeline('post_insertion', array('args' => array('table' => 'spip_factures', 'id_objet' => $id_facture), 'data' => $set));
        // on relit le no_comptable en base au cas ou le pipeline aurait surcharge
        $no_comptable = sql_getfetsel('no_comptable', 'spip_factures', 'id_facture=' . intval($id_facture));
        $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($set['details']), false, false);
        if ($options_notif and is_array($options_notif) and $notifications = charger_fonction('notifications', 'inc')) {
            $options_notif['url_facture'] = $url;
            $notifications("genererfacture", $id_facture, $options_notif);
        }
    }
    return array($id_facture, $no_comptable, $url);
}
function balise_CLEVERMAIL_UNSUBSCRIBE_dyn()
{
    if (isset($_GET['id']) && $_GET['id'] != '') {
        if (sql_countsel("spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id'])) == 1) {
            $abonnement = sql_fetsel("*", "spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id']));
            // Desinscription a cette liste demandee
            $actionId = md5('unsubscribe#' . intval($abonnement['lst_id']) . '#' . intval($abonnement['sub_id']) . '#' . time());
            if (sql_countsel("spip_cm_pending", "lst_id = " . intval($abonnement['lst_id']) . " AND sub_id = " . intval($abonnement['sub_id'])) == 0) {
                sql_insertq("spip_cm_pending", array('lst_id' => intval($abonnement['lst_id']), 'sub_id' => $abonnement['sub_id'], 'pnd_action' => 'unsubscribe', 'pnd_action_date' => time(), 'pnd_action_id' => $actionId));
            }
            // Composition du message de demande de confirmation
            $sub = sql_fetsel("*", "spip_cm_subscribers", "sub_id=" . intval($abonnement['sub_id']));
            $list = sql_fetsel("*", "spip_cm_lists", "lst_id=" . intval($abonnement['lst_id']));
            $template = array();
            if (strpos($list['lst_name'], '/') === false) {
                $template['@@NOM_LETTRE@@'] = supprimer_numero($list['lst_name']);
                $template['@@NOM_CATEGORIE@@'] = '';
                $template['@@NOM_COMPLET@@'] = $template['@@NOM_LETTRE@@'];
            } else {
                $template['@@NOM_LETTRE@@'] = supprimer_numero(substr($list['lst_name'], strpos($list['lst_name'], '/') + 1));
                $template['@@NOM_CATEGORIE@@'] = supprimer_numero(substr($list['lst_name'], 0, strpos($list['lst_name'], '/')));
                $template['@@NOM_COMPLET@@'] = $template['@@NOM_CATEGORIE@@'] . ' / ' . $template['@@NOM_LETTRE@@'];
            }
            $template['@@EMAIL@@'] = $sub['sub_email'];
            $template['@@FORMAT_INSCRIPTION@@'] = $data['lsr_mode'] == 1 ? 'HTML' : 'texte';
            //$template['@@URL_CONFIRMATION@@'] = $GLOBALS['meta']['adresse_site'].'/spip.php?page=clevermail_do&id='.$actionId;
            $template['@@URL_CONFIRMATION@@'] = url_absolue(generer_url_public(_CLEVERMAIL_UNSUBSCRIBE, 'id=' . $actionId));
            $to = $sub['sub_email'];
            $subject = (intval($list['lst_subject_tag']) == 1 ? '[' . $template['@@NOM_COMPLET@@'] . '] ' : '') . html_entity_decode($list['lst_unsubscribe_subject'], ENT_QUOTES, 'UTF-8');
            $body = $list['lst_unsubscribe_text'];
            while (list($translateFrom, $translateTo) = each($template)) {
                $body = str_replace($translateFrom, $translateTo, $body);
            }
            $from = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'");
            $return = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_RETURN'");
            // TODO : Et le charset ?
            // TODO : Et le return-path ?
            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
            $envoyer_mail($to, $subject, $body, $from);
            $return = '<p>' . _T('clevermail:desinscription_confirmation_debut') . ' ' . $template['@@NOM_COMPLET@@'] . ' ' . _T('clevermail:desinscription_confirmation_fin') . '</p>';
        } else {
            $return = '<p>' . _T('clevermail:aucune_inscription') . '</p>';
        }
    }
    return $return;
}
Exemple #25
0
function message_oubli($email, $param)
{
    $r = formulaires_oubli_mail($email);
    if (is_array($r) and $r[1]) {
        include_spip('inc/texte');
        # pour corriger_typo
        include_spip('action/inscrire_auteur');
        $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
        // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site
        include_spip('inc/filtres');
        $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => url_absolue(generer_url_public('spip_pass', "{$param}={$cookie}"), $GLOBALS['meta']['adresse_site'])));
        include_spip("inc/notifications");
        notifications_envoyer_mails($email, $msg);
        return _T('pass_recevoir_mail');
    }
    return _T('pass_erreur_probleme_technique');
}
function porte_plume_insert_head($flux){
	$lang = $GLOBALS['spip_lang'];
	
	$js = find_in_path('javascript/jquery.markitup_pour_spip.js');
	$js_previsu = find_in_path('javascript/jquery.previsu_spip.js');
	$js_settings = parametre_url(generer_url_public('porte_plume.js'), 'lang', $lang);
	$css = find_in_path('css/barre_outils.css');
	$css_icones = generer_url_public('barre_outils_icones.css');

	$flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
		. "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n"
		. "<script type='text/javascript' src='$js'></script>\n"
		. "<script type='text/javascript' src='$js_previsu'></script>\n"
		. "<script type='text/javascript' src='$js_settings'></script>\n";
		
	$preview = url_absolue(generer_url_public('preview'));
	$tEditer = _T('barre_outils:editer');
	$tVoir = _T('barre_outils:voir');
	$flux .= <<<EOF
		<script type="text/javascript">
<!--
jQuery(document).ready(function()	{
	// ajoute les barres d'outils markitup
	function barrebouilles(){
		// si c'est un appel de previsu markitup, faut pas relancer
		// on attrappe donc uniquement les textarea qui n'ont pas deja la classe markItUpEditor
		jQuery('.formulaire_forum textarea[name=texte]:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'});
		jQuery('textarea.textarea_forum:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'});
		jQuery('.formulaire_spip textarea[name=texte]:not(.markItUpEditor)')
			.markItUp(barre_outils_edition,{lang:'$lang'})
			.previsu_spip({
				previewParserPath:'$preview',
				textEditer:'$tEditer',
				textVoir:'$tVoir'});
	}
	barrebouilles();
	onAjaxLoad(barrebouilles);

});
-->		
		</script>
EOF;

	return $flux;
}
/**
 * ajout cookie + js
 * @param  $flux
 * @return string
 */
function socialtags_insert_head($flux)
{
    if (intval($GLOBALS['spip_version_branche']) < 3) {
        $flux .= socialtags_css();
    }
    // on a besoin de jquery.cookie
    if (!strpos($flux, 'jquery.cookie.js')) {
        $flux .= "<script type='text/javascript' src='" . find_in_path('javascript/jquery.cookie.js') . "'></script>\n";
    }
    include_spip('inc/filtres');
    if (function_exists('produire_fond_statique')) {
        $jsFile = produire_fond_statique('socialtags.js');
    } else {
        $jsFile = generer_url_public('socialtags.js');
    }
    $flux .= "<script src='{$jsFile}' type='text/javascript'></script>\n";
    return $flux;
}
/**
 * Ajoute les scripts JS et CSS de saisies dans l'espace public
 *
 * Ajoute également de quoi gérer le datepicker de la saisie date si
 * celle-ci est utilisée dans la page.
 * 
 * @param string $flux 
 * @return string
**/
function saisies_affichage_final($flux){
	if (
		$GLOBALS['html'] // si c'est bien du HTML
		and ($p = strpos($flux,"<!--!inserer_saisie_editer-->")) !== false // et qu'on a au moins une saisie
		and strpos($flux,'<head') !== false // et qu'on a la balise <head> quelque part
	){
		// On insère la CSS devant le premier <link> trouvé
		if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head')) {
			$pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
		}
		$css = generer_url_public('saisies.css');
		$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";

		if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui
		    include_spip("jqueryui_pipelines");
			if (function_exists("jqueryui_dependances")){
				$ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
				$theme_css = "jquery.ui.theme";
				$ui_css_dir = "css";
				// compatibilité SPIP 3.1 et jQuery UI 1.11
				$version = explode(".",$GLOBALS['spip_version_branche']);
				if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0)) {
					$theme_css = "theme";
					$ui_css_dir = "css/ui";
				}
				array_push($ui_plugins,$theme_css);
				foreach ($ui_plugins as $ui_plug){
					$ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css");
					if (strpos($flux,"$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé
						$ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
					}
				}
			}
		}

		$flux = substr_replace($flux, $ins_css, $pi, 0);
		// On insère le JS à la fin du <head>
		$pos_head = strpos($flux, '</head');
		$js = find_in_path('javascript/saisies.js');
		$ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
		$flux = substr_replace($flux, $ins_js, $pos_head, 0);
	}
	return $flux;
}
Exemple #29
0
/**
 * Se deloger
 * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton fourni
 * avec un autosubmit js pour ne pas compliquer l'experience utilisateur
 *
 * Déconnecte l'utilisateur en cours et le redirige sur l'URL indiquée par
 * l'argument de l'action sécurisée, et sinon sur la page d'accueil
 * de l'espace public.
 *
 */
function action_logout_dist()
{
    $logout = _request('logout');
    $url = securiser_redirect_action(_request('url'));
    // cas particulier, logout dans l'espace public
    if ($logout == 'public' and !$url) {
        $url = url_de_base();
    }
    // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
    if (isset($GLOBALS['visiteur_session']['id_auteur']) and is_numeric($GLOBALS['visiteur_session']['id_auteur']) and isset($GLOBALS['visiteur_session']['statut'])) {
        // il faut un jeton pour fermer la session (eviter les CSRF)
        if (!($jeton = _request('jeton')) or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])) {
            $jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
            $action = generer_url_action("logout", "jeton={$jeton}");
            $action = parametre_url($action, 'logout', _request('logout'));
            $action = parametre_url($action, 'url', _request('url'));
            include_spip("inc/minipres");
            include_spip("inc/filtres");
            $texte = bouton_action(_T('spip:icone_deconnecter'), $action);
            $texte = "<div class='boutons'>{$texte}</div>";
            $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
            $res = minipres(_T('spip:icone_deconnecter'), $texte, '', true);
            echo $res;
            return;
        }
        include_spip('inc/auth');
        auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00');
        // le logout explicite vaut destruction de toutes les sessions
        if (isset($_COOKIE['spip_session'])) {
            $session = charger_fonction('session', 'inc');
            $session($GLOBALS['visiteur_session']['id_auteur']);
            spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600);
        }
        // si authentification http, et que la personne est loge,
        // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
        if (isset($_SERVER['PHP_AUTH_USER']) and !$GLOBALS['ignore_auth_http'] and $GLOBALS['auth_can_disconnect']) {
            ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true);
        }
    }
    // Rediriger en contrant le cache navigateur (Safari3)
    include_spip('inc/headers');
    redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login'));
}
/**
 * Syntaxe raccourcie du plugin
 * #CALENDRIER_MINI
 * #CALENDRIER_MINI{#SELF}
 * #CALENDRIER_MINI{#SELF,#URL_PAGE{calendrier_mini.json}}
 *
 * Syntaxe ancienne (ou plugin agenda)
 * #CALENDRIER_MINI{#ENV{date}}
 * #CALENDRIER_MINI{#ENV{date},date}
 * #CALENDRIER_MINI{#ENV{date},date,#SELF}
 * #CALENDRIER_MINI{#ENV{date},date,#SELF,#URL_PAGE{calendrier_mini.json}}
 *
 * Quand l'url json est explicitee dans les arguments, la collecte automatisee de id_rubrique, id_article et id_mot est desactivee
 * car dans ce cas il suffit simplement de les expliciter sur l'url json pour les prendre en compte
 *
 * @param string $date
 *   date automatique collectee par VAR_DATE
 * @param int $id_rubrique
 * @param int $id_article
 * @param int $id_mot
 * @param null $self_or_date_or_nothing
 * @param null $urljson_or_var_date_or_nothing
 * @param null $self_or_nothing
 * @param null $urljson_or_nothing
 * @return array
 */
function balise_CALENDRIER_MINI_dyn($date, $id_rubrique = 0, $id_article = 0, $id_mot = 0, $self_or_date_or_nothing = null, $urljson_or_var_date_or_nothing = null, $self_or_nothing = null, $urljson_or_nothing = null)
{
    $var_date = VAR_DATE;
    $url = null;
    $url_json = null;
    if (!is_null($self_or_date_or_nothing)) {
        // est-ce une date ou une url ?
        if (!function_exists('recup_date')) {
            include_spip('inc/filtres');
        }
        if (!strlen($self_or_date_or_nothing) or preg_match(",^[\\d\\s:-]+\$,", $self_or_date_or_nothing) and list($annee, $mois, $jour, $heures, $minutes, $secondes) = recup_date($self_or_date_or_nothing) and $annee) {
            // si c'est une date on est dans l'ancienne syntaxe
            $date = $self_or_date_or_nothing;
            $var_date = $urljson_or_var_date_or_nothing;
            $url = $self_or_nothing;
            $url_json = $urljson_or_nothing;
        } else {
            // sinon on est sur la nouvelle syntaxe
            $url = $self_or_date_or_nothing;
            $url_json = $urljson_or_var_date_or_nothing;
        }
    }
    $args = array('date' => $date ? $date : date('Y-m'), 'var_date' => $var_date, 'self' => $url ? $url : self());
    // si pas de url_json explicite, la renseigner et peupler automatiquement les
    if (is_null($url_json)) {
        $url_json = generer_url_public("calendrier_mini.json");
        if (!is_null($id_rubrique)) {
            $args['id_rubrique'] = $id_rubrique;
        }
        if (!is_null($id_article)) {
            $args['id_article'] = $id_article;
        }
        if (!is_null($id_mot)) {
            $args['id_mot'] = $id_mot;
        }
    }
    if (defined('_VAR_MODE') and _VAR_MODE == "recalcul") {
        $url_json = parametre_url($url_json, 'var_mode', 'recalcul');
    }
    $args['urljson'] = $url_json;
    /* tenir compte de la langue, c'est pas de la tarte */
    return array('formulaires/calendrier_mini', 3600, $args);
}