Example #1
0
function action_converser_post($lang, $ecrire=false)
{
	if ($lang) {
		include_spip('inc/lang');
		if (changer_langue($lang)) {
			spip_setcookie('spip_lang', $_COOKIE['spip_lang'] = $lang, time() + 365 * 24 * 3600);
			if ($ecrire)
				spip_setcookie('spip_lang_ecrire', $_COOKIE['spip_lang_ecrire'] = $lang, time() + 365 * 24 * 3600);
		}
	}
}
function aide_changer_langue($var_lang_r, $lang_r)
{
    if ($var_lang_r) {
        changer_langue($lang = $var_lang_r);
    }
    if ($lang_r) {
        changer_langue($lang = $lang_r);
    } else {
        $lang = $GLOBALS['spip_lang'];
    }
    return $lang;
}
Example #3
0
function aide_changer_langue($var_lang_r, $lang_r)
{
    if ($var_lang_r) {
        changer_langue($lang = $var_lang_r);
    }
    if ($lang_r) {
        # pour le cas ou on a fait appel au menu de changement de langue
        # (aide absente dans la langue x)
        changer_langue($lang = $lang_r);
    } else {
        $lang = $GLOBALS['spip_lang'];
    }
    return $lang;
}
Example #4
0
function exec_spiplistes_aide () {

	global $spip_lang;
	
	spiplistes_debug_log('exec_spiplistes_aide()');
	
	$var_lang = _request('var_lang');
	if (!changer_langue($var_lang)) {
		$var_lang = $spip_lang;
		changer_langue($var_lang);
	}
		
	$info = spiplistes_plugin_get_infos(spiplistes_get_meta_dir(_SPIPLISTES_PREFIX));
	$nom = typo($info['nom']);
	$version = typo($info['version']);
		
	$f_lang = _DIR_PLUGIN_SPIPLISTES . 'docs/'._SPIPLISTES_EXEC_PREFIX.'aide_'.$var_lang.'html';
	
	$fichier_aide_spiplistes = is_readable($f_lang)
		? $f_lang
		: _DIR_PLUGIN_SPIPLISTES . 'docs/'._SPIPLISTES_EXEC_PREFIX.'aide_fr.html'
		;

	if($content = file_get_contents($fichier_aide_spiplistes)) {
		// corrige les liens images
		$content = str_replace('../img_docs/', _DIR_PLUGIN_SPIPLISTES.'img_docs/', $content);
		// place les vars
		$pattern = array(
			'/@spiplistes_name@/'
			,'/@spiplistes_version@/'
			,'/\$LastChangedDate:/'
			,'/\$EndLastChangedDate/'
			,'/@_aide@/'
			);
		$replacement = array(
			$nom
			, $version
			, ''
			, ''
			, _T('spiplistes:_aide')
			);
		$content = preg_replace($pattern, $replacement, $content);
		
		echo($content);
	}
	else {
		aide_spiplistes_erreur();
	}
}
Example #5
0
function formulaires_configurer_langue_traiter_dist()
{
    $res = array('editable' => true);
    if ($lang = _request('changer_langue_site')) {
        include_spip('inc/lang');
        // verif que la langue demandee est licite
        if (changer_langue($lang)) {
            ecrire_meta('langue_site', $lang);
            // le test a defait ca:
            utiliser_langue_visiteur();
            $res['message_ok'] = _T('config_info_enregistree');
            include_spip('inc/rubriques');
            calculer_langues_rubriques();
        }
        // le test a defait ca:
        utiliser_langue_visiteur();
    }
    if (!$res['message_ok']) {
        $res['message_erreur'] = _L('erreur');
    }
    return $res;
}
Example #6
0
/**
 * Sélectionne la langue donnée en argument et mémorise la courante
 *
 * Restaure l'ancienne langue si appellée sans argument.
 *
 * @note
 *     On pourrait économiser l'empilement en cas de non changemnt
 *     et lui faire retourner `False` pour prevenir l'appelant
 *     Le noyau de Spip sait le faire, mais pour assurer la compatibilité
 *     cette fonction retourne toujours non `False`
 *
 * @uses changer_langue()
 * @param null|string $lang
 *     - string : Langue à appliquer,
 *     - null : Pour restituer la dernière langue mémorisée.
 * @return string
 *     - string Langue utilisée.
**/
function lang_select($lang = NULL)
{
    static $pile_langues = array();
    if (!function_exists('changer_langue')) {
        include_spip('inc/lang');
    }
    if ($lang === NULL) {
        $lang = array_pop($pile_langues);
    } else {
        array_push($pile_langues, $GLOBALS['spip_lang']);
    }
    if (isset($GLOBALS['spip_lang']) and $lang == $GLOBALS['spip_lang']) {
        return $lang;
    }
    changer_langue($lang);
    return $lang;
}
Example #7
0
function traiter_formulaires_dynamiques($get=false){
	static $post = array();
	static $done = false;

	if ($get) return $post; 
	if ($done) return false;
	$done = true;

	if (!($form = _request('formulaire_action')
	AND $args = _request('formulaire_action_args')))
		return false; // le hit peut continuer normalement

	include_spip('inc/filtres');
	if (($args = decoder_contexte_ajax($args,$form))===false) {
		spip_log("signature ajax form incorrecte : $form");
		return false; // continuons le hit comme si de rien etait
	} else {
		include_spip('inc/lang');
		// sauvegarder la lang en cours
		$old_lang = $GLOBALS['spip_lang'];
		// changer la langue avec celle qui a cours dans le formulaire
		// on la depile de $args car c'est un argument implicite masque	
		changer_langue(array_shift($args));

			
		$verifier = charger_fonction("verifier","formulaires/$form/",true);
		$post["erreurs_$form"] = pipeline(
				  'formulaire_verifier',
					array(
						'args'=>array('form'=>$form,'args'=>$args),
						'data'=>$verifier?call_user_func_array($verifier,$args):array())
					);
		if ((count($post["erreurs_$form"])==0)){
			$rev = "";
			$retour = "";
			if ($traiter = charger_fonction("traiter","formulaires/$form/",true))
				$rev = call_user_func_array($traiter,$args);

			$rev = pipeline(
				  'formulaire_traiter',
					array(
						'args'=>array('form'=>$form,'args'=>$args),
						'data'=>$rev)
					);
			// le retour de traiter peut avoir 3 formats
			// - simple message texte
			// - tableau a deux entrees ($editable,$message)
			// - tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx)
			// le dernier format est celui conseille car il permet le pipelinage, en particulier
			// en y passant l'id de l'objet cree/modifie
			// si message_erreur est present, on considere que le traitement a echoue
			// cas du message texte simple
			if (!is_array($rev)){
				$post["message_ok_$form"] = $rev;
			}
			// cas du tableau deux valeurs simple (ancien format, deconseille)
			elseif (count($rev)==2 
			  AND !array_key_exists('message_ok',$rev)
			  AND !array_key_exists('message_erreur',$rev)
			  AND !array_key_exists('redirect',$rev)) {
				$post["editable_$form"] = reset($rev);
				$post["message_ok_$form"] = end($rev);
			}
			// cas du tableau explicite (conseille)
			else {
				// verifier si traiter n'a pas echoue avec une erreur :
				if (isset($rev['message_erreur'])) {
					$post["erreurs_$form"]["message_erreur"] = $rev['message_erreur'];
					
				}
				else {
					// sinon faire ce qu'il faut :
					if (isset($rev['message_ok']))
						$post["message_ok_$form"] = $rev['message_ok'];
					if (isset($rev['editable']))
						$post["editable_$form"] = $rev['editable'];
					// si une redirection est demandee, appeler redirigae_formulaire qui choisira
					// le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue)
					if (isset($rev['redirect']) AND $rev['redirect']){
						include_spip('inc/headers');
						list($masque,$message) = redirige_formulaire($rev['redirect'], '','ajaxform');
						$post["message_ok_$form"] .= $message;
						$retour .= $masque;
					}
				}
			}
		}
		// si le formulaire a ete soumis en ajax, on le renvoie direct !
		if (_request('var_ajax')){
			if (find_in_path('formulaire_.php','balise/',true)) {
				include_spip('inc/actions');
				include_spip('public/assembler');
				array_unshift($args,$form);
				$retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false);
				// on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7
				// sans cela le formulaire n'est pas actif apres le hit ajax
				$retour = "<br class='bugajaxie' style='display:none;'/>".$retour;
				ajax_retour($retour,false);
				return true; // on a fini le hit
			}
		}
		// restaurer la lang en cours
		changer_langue($old_lang);
	}
	return false; // le hit peut continuer normalement
}
Example #8
0
File: lang.php Project: JLuc/SPIP
/**
 * Initialise la langue pour un visiteur du site 
 *
 * La langue est choisie dans cet ordre :
 * - Dans le cookie 'spip_lang' ou 'spip_lang_ecrire' s'il existe (selon l'espace public ou privé).
 * - Sinon dans la session du visiteur.
 * - Sinon dans une des langues définie en préférence du navigateur
 * - Sinon la langue du site
 * 
 * @return string
 *     La langue utilisée
**/
function utiliser_langue_visiteur()
{
    $l = !test_espace_prive() ? 'spip_lang' : 'spip_lang_ecrire';
    if (isset($_COOKIE[$l])) {
        if (changer_langue($l = $_COOKIE[$l])) {
            return $l;
        }
    }
    if (isset($GLOBALS['visiteur_session']['lang'])) {
        if (changer_langue($l = $GLOBALS['visiteur_session']['lang'])) {
            return $l;
        }
    }
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $s) {
            if (preg_match('#^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$#i', trim($s), $r)) {
                if (changer_langue($l = strtolower($r[1]))) {
                    return $l;
                }
            }
        }
    }
    return utiliser_langue_site();
}
Example #9
0
/**
 * Traite la réponse de la banque
 *
 * @param array $config
 *     configuration du module
 * @param array $response
 *     Données envoyées par la banque
 * @return array(int $id_transaction, bool $paiement_ok)
**/
function cmcic_traite_reponse_transaction($config, $response)
{
    $mode = $config['presta'];
    if (isset($config['mode_test']) and $config['mode_test']) {
        $mode .= "_test";
    }
    $config_id = bank_config_id($config);
    #spip_log("call_response : traitement d'une réponse de la banque $mode !", $mode);
    // on verifie que notre transaction existe bien
    $contenu = $response['texte-libre'];
    $contenu = urldecode($contenu);
    $contenu = @unserialize($contenu);
    if ($contenu === false) {
        $res = bank_transaction_invalide(0, array('mode' => $mode, 'erreur' => "contenu non deserialisable", 'log' => var_export($response, true)));
        cmcic_notifier_banque_erreur();
        return $res;
    }
    // id & hash
    $id_transaction = $contenu['id'];
    $transaction_hash = $contenu['hash'];
    $lang = $contenu['lang'];
    // remettre la langue de l'utilisateur qui a demandé la transaction
    // puisque ici c'est le serveur cmcic qui fait le hit
    include_spip('inc/lang');
    changer_langue($lang);
    // cette ligne id/hash doit exister !
    if (!($row = sql_fetsel("*", "spip_transactions", array("id_transaction=" . intval($id_transaction), 'transaction_hash=' . sql_quote($contenu['hash']))))) {
        $res = bank_transaction_invalide($id_transaction, array('mode' => $mode, 'erreur' => "{$id_transaction} / {$transaction_hash} inconnu", 'log' => var_export($response, true)));
        cmcic_notifier_banque_erreur();
        return $res;
    }
    // ici on a tout bon !
    #spip_log("call_response : données de la banque correctes. On les traite.", $mode);
    switch ($response['code-retour']) {
        case "Annulation":
            // Payment has been refused
            // put your code here (email sending / Database update)
            // Attention : an autorization may still be delivered for this payment
            $retour = cmcic_gerer_transaction_annulee($config, $id_transaction, $response, $row);
            break;
        case "payetest":
            // Payment has been accepeted on the test server
            // put your code here (email sending / Database update)
            $retour = cmcic_gerer_transaction_payee($config, $id_transaction, $response, $row, true);
            break;
        case "paiement":
            // Payment has been accepted on the productive server
            // put your code here (email sending / Database update)
            $retour = cmcic_gerer_transaction_payee($config, $id_transaction, $response, $row);
            break;
            /*** ONLY FOR MULTIPART PAYMENT ***/
        /*** ONLY FOR MULTIPART PAYMENT ***/
        case "paiement_pf2":
        case "paiement_pf3":
        case "paiement_pf4":
            // Payment has been accepted on the productive server for the part #N
            // return code is like paiement_pf[#N]
            // put your code here (email sending / Database update)
            // You have the amount of the payment part in $CMCIC_bruteVars['montantech']
            break;
        case "Annulation_pf2":
        case "Annulation_pf3":
        case "Annulation_pf4":
            // Payment has been refused on the productive server for the part #N
            // return code is like Annulation_pf[#N]
            // put your code here (email sending / Database update)
            // You have the amount of the payment part in $CMCIC_bruteVars['montantech']
            break;
    }
    cmcic_notifier_banque_ok();
    return $retour;
}
Example #10
0
function traiter_formulaires_dynamiques($get = false)
{
    static $post = array();
    static $done = false;
    if ($get) {
        return $post;
    }
    if ($done) {
        return false;
    }
    $done = true;
    if (!($form = _request('formulaire_action') and $args = _request('formulaire_action_args'))) {
        return false;
    }
    // le hit peut continuer normalement
    include_spip('inc/filtres');
    if (($args = decoder_contexte_ajax($args, $form)) === false) {
        spip_log("signature ajax form incorrecte : {$form}");
        return false;
        // continuons le hit comme si de rien etait
    } else {
        include_spip('inc/lang');
        // sauvegarder la lang en cours
        $old_lang = $GLOBALS['spip_lang'];
        // changer la langue avec celle qui a cours dans le formulaire
        // on la depile de $args car c'est un argument implicite masque
        changer_langue(array_shift($args));
        // inclure mes_fonctions et autres filtres avant verifier/traiter
        include_spip('public/parametrer');
        // ainsi que l'API SQL bien utile dans verifier/traiter
        include_spip('base/abstract_sql');
        $verifier = charger_fonction("verifier", "formulaires/{$form}/", true);
        $post["erreurs_{$form}"] = pipeline('formulaire_verifier', array('args' => array('form' => $form, 'args' => $args), 'data' => $verifier ? call_user_func_array($verifier, $args) : array()));
        // accessibilite : si des erreurs mais pas de message general l'ajouter
        if (count($post["erreurs_{$form}"]) and !isset($post["erreurs_{$form}"]['message_erreur'])) {
            $post["erreurs_{$form}"]['message_erreur'] = singulier_ou_pluriel(count($post["erreurs_{$form}"]), 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie');
        }
        // si on ne demandait qu'une verif json
        if (_request('formulaire_action_verifier_json')) {
            include_spip('inc/json');
            include_spip('inc/actions');
            ajax_retour(json_encode($post["erreurs_{$form}"]), 'text/plain');
            return true;
            // on a fini le hit
        }
        $retour = "";
        if (count($post["erreurs_{$form}"]) == 0) {
            $rev = "";
            if ($traiter = charger_fonction("traiter", "formulaires/{$form}/", true)) {
                $rev = call_user_func_array($traiter, $args);
            }
            $rev = pipeline('formulaire_traiter', array('args' => array('form' => $form, 'args' => $args), 'data' => $rev));
            // le retour de traiter est
            // un tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx)
            // il permet le pipelinage, en particulier
            // en y passant l'id de l'objet cree/modifie
            // si message_erreur est present, on considere que le traitement a echoue
            $post["message_ok_{$form}"] = '';
            // on peut avoir message_ok et message_erreur
            if (isset($rev['message_ok'])) {
                $post["message_ok_{$form}"] = $rev['message_ok'];
            }
            // verifier si traiter n'a pas echoue avec une erreur :
            if (isset($rev['message_erreur'])) {
                $post["erreurs_{$form}"]["message_erreur"] = $rev['message_erreur'];
                // si il y a une erreur on ne redirige pas
            } else {
                // sinon faire ce qu'il faut :
                if (isset($rev['editable'])) {
                    $post["editable_{$form}"] = $rev['editable'];
                }
                // si une redirection est demandee, appeler redirigae_formulaire qui choisira
                // le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue)
                if (isset($rev['redirect']) and $rev['redirect']) {
                    include_spip('inc/headers');
                    list($masque, $message) = redirige_formulaire($rev['redirect'], '', 'ajaxform');
                    $post["message_ok_{$form}"] .= $message;
                    $retour .= $masque;
                }
            }
        }
        // si le formulaire a ete soumis en ajax, on le renvoie direct !
        if (_request('var_ajax')) {
            if (find_in_path('formulaire_.php', 'balise/', true)) {
                include_spip('inc/actions');
                include_spip('public/assembler');
                array_unshift($args, $form);
                $retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn', $args), false);
                // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7
                // sans cela le formulaire n'est pas actif apres le hit ajax
                // la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe
                $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour;
                ajax_retour($retour, false);
                return true;
                // on a fini le hit
            }
        }
        // restaurer la lang en cours
        changer_langue($old_lang);
    }
    return false;
    // le hit peut continuer normalement
}
Example #11
0
function my_strtotime($la_date, $lang = null)
{
    // format complet
    if (preg_match(',^(\\d+-\\d+-\\d+[T ]\\d+:\\d+(:\\d+)?)(\\.\\d+)?' . '(Z|([-+]\\d{2}):\\d+)?$,', $la_date, $match)) {
        $la_date = str_replace("T", " ", $match[1]) . " GMT";
        return strtotime($la_date) - intval($match[5]) * 3600;
    }
    // YYYY
    if (preg_match(',^\\d{4}$,', $la_date, $match)) {
        return strtotime($match[0] . "-01-01");
    }
    // YYYY-MM
    if (preg_match(',^\\d{4}-\\d{2}$,', $la_date, $match)) {
        return strtotime($match[0] . "-01");
    }
    // YYYY-MM-DD hh:mm:ss
    if (preg_match(',^\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}\\b,', $la_date, $match)) {
        return strtotime($match[0]);
    }
    // utiliser strtotime en dernier ressort
    // en nettoyant le jour qui prefixe parfois la date, suivi d'une virgule
    // et les UT qui sont en fait des UTC
    $la_date_c = preg_replace("/^\\w+,\\s*/ms", "", $la_date);
    $la_date_c = preg_replace("/UT\\s*\$/ms", "UTC", $la_date_c);
    if ($s = strtotime($la_date) or $s = strtotime($la_date_c)) {
        return $s;
    }
    // essayons de voir si le nom du mois est dans la langue du flux et remplacons le
    // par la version anglaise avant de faire strtotime
    if ($lang) {
        // "fr-fr"
        list($lang) = explode("-", $lang);
        static $months = null;
        if (!isset($months[$lang])) {
            $prev_lang = $GLOBALS['spip_lang'];
            changer_langue($lang);
            foreach (range(1, 12) as $m) {
                $s = _T("date_mois_{$m}");
                $months[$lang][$s] = date("M", strtotime("2013-{$m}-01"));
                $s = _T("date_mois_" . $m . "_abbr");
                $months[$lang][$s] = date("M", strtotime("2013-{$m}-01"));
                $months[$lang][trim($s, ".")] = date("M", strtotime("2013-{$m}-01"));
            }
            changer_langue($prev_lang);
        }
        spip_log($la_date_c, "dbgs");
        foreach ($months[$lang] as $loc => $en) {
            if (stripos($la_date_c, $loc) !== false) {
                $s = str_ireplace($loc, $en, $la_date_c);
                if ($s = strtotime($s)) {
                    return $s;
                }
            }
        }
    }
    // erreur
    spip_log("Impossible de lire le format de date '{$la_date}'");
    return false;
}
Example #12
0
$GLOBALS['couleur_foncee'] = $GLOBALS['couleurs_spip'][$choix_couleur]['couleur_foncee'];
$GLOBALS['couleur_claire'] = $GLOBALS['couleurs_spip'][$choix_couleur]['couleur_claire'];

// charger l'affichage minimal et initialiser a la langue par defaut
include_spip('inc/minipres');

//  si la langue est specifiee par cookie alors ...
if (isset($GLOBALS['_COOKIE']['spip_lang_ecrire'])) {

	$spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire'];
	// si pas authentifie, changer juste pour cette execution
	if ($var_auth)
		changer_langue($GLOBALS['_COOKIE']['spip_lang_ecrire']);
	// si authentifie, changer definitivement si ce n'est fait
	else {	if (($spip_lang_ecrire <> $GLOBALS['auteur_session']['lang'])
		AND changer_langue($spip_lang_ecrire)) {
			spip_query("UPDATE spip_auteurs SET lang = " . _q($spip_lang_ecrire) . " WHERE id_auteur = " . intval($GLOBALS['auteur_session']['id_auteur']));
			$GLOBALS['auteur_session']['lang'] = $var_lang_ecrire;
			$session = charger_fonction('session', 'inc');
			$session($GLOBALS['auteur_session']);
		}
	}
}

utiliser_langue_visiteur(); 

define('_TRANCHES', 10);

//
// Gestion d'une page normale de l'espace prive
//
Example #13
0
function appliquer_modifs_config($purger_skel=false) {

	if (($i = _request('adresse_site'))!==NULL){
		if (!strlen($i)) {$GLOBALS['profondeur_url']=_DIR_RESTREINT?0:1;$i = url_de_base();}
		$_POST['adresse_site'] = preg_replace(",/?\s*$,", "", $i);
	}

	// provoquer l'envoi des nouveautes en supprimant le fichier lock
	if (_request('envoi_now')) {
		spip_unlink(_DIR_TMP . 'mail.lock');
	}

	// Purger les squelettes si un changement de meta les affecte
	if ($i = _request('post_dates') AND ($i != $GLOBALS['meta']["post_dates"]))
		$purger_skel = true;

	if ($accepter_forum = _request('forums_publics')
	AND ($accepter_forum != $GLOBALS['meta']["forums_publics"])) {
		$purger_skel = true;
		$accepter_forum = substr($accepter_forum,0,3);
	}

	// Appliquer les changements de moderation forum
	// forums_publics_appliquer : futur, saufnon, tous
	if (in_array($appliquer = _request('forums_publics_appliquer'),
		array('tous', 'saufnon')
	)) {
		$sauf = ($appliquer == 'saufnon')
			? "accepter_forum != 'non'"
			: '';

		sql_updateq('spip_articles', array('accepter_forum'=>$accepter_forum), $sauf);
	}

	if ($accepter_forum == 'abo')
		ecrire_meta('accepter_visiteurs', 'oui');

	if ($i = _request('langues_auth') AND is_array($i)) {
		set_request('langues_multilingue', join($i, ","));
	}

	// Modification du reglage accepter_inscriptions => vider le cache
	// (pour repercuter la modif sur le panneau de login)
	if (($i = _request('accepter_inscriptions')
		AND $i != $GLOBALS['meta']['accepter_inscriptions'])
		OR ($i = _request('accepter_visiteurs')
		AND $i != $GLOBALS['meta']['accepter_visiteurs'])) {
		include_spip('inc/invalideur');
		suivre_invalideur("1"); # tout effacer
	}

	foreach(liste_metas() as $i => $v) {
		if (($x =_request($i))!==NULL)
			ecrire_meta($i, $x);
		elseif  (!isset($GLOBALS['meta'][$i]))
			ecrire_meta($i, $v);
	}

	if ($lang = _request('changer_langue_site')) {
		include_spip('inc/lang');
		// verif que la langue demandee est licite
		if (changer_langue($lang)) {
			ecrire_meta('langue_site', $lang);
		}
		// le test a defait ca:
		utiliser_langue_visiteur();
	}

	if ($purger_skel) {
		include_spip('inc/invalideur');
		purger_repertoire(_DIR_SKELS);
	}
}
Example #14
0
function aide_index_frame($var_lang_r, $lang_r, $frame, $aide, $help_server)
{
	global $spip_lang;

	if ($var_lang_r)
		changer_langue($lang = $var_lang_r);
	if ($lang_r)
	  # pour le cas ou on a fait appel au menu de changement de langue
	  # (aide absente dans la langue x)
		changer_langue($lang = $lang_r);
	else $lang = $spip_lang;

	// L'aide correspondant a la langue demandee est dans un cache
	// reposant sur la date du fichier indiquant la version de SPIP
	// (approximatif, mais c'est deja qqch)

	$path = $spip_lang . "-aide.html";
	$md5 = md5(serialize($help_server));
	$fichier = _DIR_AIDE . substr($md5,0,16) . "-" . $path;
	$lastm = is_readable($fichier) ? filemtime($fichier) : 0;
	$lastversion = @filemtime(_DIR_RESTREINT . 'inc_version.php');
	if (!($lastm AND ($lastm >= $lastversion))) {
		$contenu = help_fichier_contenu($spip_lang, $path, $help_server);
		// mettre en cache (tant pis si echec)
		sous_repertoire(_DIR_AIDE,'','',true);
		if ($contenu) ecrire_fichier ($fichier, $contenu);
		$lastm = time();
	}
	$titre = _T('info_aide_en_ligne');
	if (!$frame) {
		echo _DOCTYPE_AIDE, html_lang_attributes();
		echo help_frame_frame($titre, $aide, $lang);
		echo "\n</html>";
	} else {
		header("Content-Type: text/html; charset=utf-8");
		if (!isset($contenu)) {
			lire_fichier($fichier, $contenu);
		}
		if (!$contenu) {
			include_spip('inc/minipres');
			echo  minipres(_T('forum_titre_erreur'),
			"<div><a href='" .
			$GLOBALS['home_server'] .
			"'>" .
			$help_server[0] . 
			"</a> $aide&nbsp;: ".
			_T('aide_non_disponible').
			"</div><br /><div align='right'>".
			menu_langues('var_lang_ecrire').
			"</div>");
		// Envoie le not-modified-since si possible, sinon envoie tout
		} elseif (!help_lastmodified($lastm)) {
			echo _DOCTYPE_AIDE, html_lang_attributes();
			if ($frame === 'menu') {
			  $contenu = help_menu_rubrique($aide, $contenu);
			  echo help_frame_menu($titre, $contenu, $lang);
			} else  {
			  if ($aide) {
				  $contenu = help_section($aide, $contenu);
				  if (!$contenu) spip_log("aide inconnue $aide dans " . substr($contenu, 0, 150));
			  }
			  echo help_frame_body($titre, $aide, $contenu, $lang);
			}
			echo "\n</html>";
		}
	}
}
Example #15
0
function lang_select ($lang=NULL) {
	static $pile_langues = array();
	include_spip('inc/lang');
	if ($lang === NULL)
		$lang = array_pop($pile_langues);
	else {
		array_push($pile_langues, $GLOBALS['spip_lang']);
	}
	if ($lang == $GLOBALS['spip_lang'])
		return $lang;
	changer_langue($lang);
	return $lang;
}