Пример #1
0
// initialiser a la langue par defaut
include_spip('inc/lang');
utiliser_langue_visiteur();

if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){
	// Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
	include_spip('public/aiguiller');
	if (
		// cas des appels actions ?action=xxx
		traiter_appels_actions()
	 OR
		// cas des hits ajax sur les inclusions ajax
		traiter_appels_inclusions_ajax()
	 OR 
	 	// cas des formulaires charger/verifier/traiter
	  traiter_formulaires_dynamiques())
	  exit; // le hit est fini !
}

//
// Gestion d'une page normale de l'espace prive
//

// Controle de la version, sauf si on est deja en train de s'en occuper
if (!$reinstall=='oui'
AND !_AJAX
AND isset($GLOBALS['meta']['version_installee'])
AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['version_installee']))))
	$exec = 'demande_mise_a_jour';

// Quand une action d'administration est en cours (meta "admin"),
Пример #2
0
 }
 $tableau_des_temps = array();
 // Particularites de certains squelettes
 if ($fond == 'login') {
     $forcer_lang = true;
 }
 if (isset($forcer_lang) and $forcer_lang and $forcer_lang !== 'non' and !_request('action') and $_SERVER['REQUEST_METHOD'] != 'POST') {
     include_spip('inc/lang');
     verifier_lang_url();
 }
 $lang = !isset($_GET['lang']) ? '' : lang_select($_GET['lang']);
 // Charger l'aiguilleur des traitements derogatoires
 // (action en base SQL, formulaires CVT, AJax)
 if (_request('action') or _request('var_ajax') or _request('formulaire_action')) {
     include_spip('public/aiguiller');
     if (traiter_appels_actions() or traiter_appels_inclusions_ajax() or traiter_formulaires_dynamiques()) {
         // lancer les taches sur affichage final, comme le cron
         // mais sans rien afficher
         $GLOBALS['html'] = false;
         // ne rien afficher
         pipeline('affichage_final' . _PIPELINE_SUFFIX, '');
         exit;
         // le hit est fini !
     }
 }
 // Il y a du texte a produire, charger le metteur en page
 include_spip('public/assembler');
 $page = assembler($fond, _request('connect'));
 if (isset($page['status'])) {
     include_spip('inc/headers');
     http_status($page['status']);
Пример #3
0
/**
 * Calcule le contexte à envoyer dans le squelette d'un formulaire 
 *
 * @param string $form
 *     Nom du formulaire
 * @param array $args
 *     Arguments envoyés à l'appel du formulaire
 * @return array
 *     Contexte d'environnement à envoyer au squelette
**/
function balise_FORMULAIRE__contexte($form, $args)
{
    // tester si ce formulaire vient d'etre poste (memes arguments)
    // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
    // si poste, on recupere les erreurs
    $je_suis_poste = false;
    if ($post_form = _request('formulaire_action') and $post_form == $form and $p = _request('formulaire_action_args') and is_array($p = decoder_contexte_ajax($p, $post_form))) {
        // enlever le faux attribut de langue masque
        array_shift($p);
        if (formulaire__identifier($form, $args, $p)) {
            $je_suis_poste = true;
        }
    }
    $editable = true;
    $erreurs = $post = array();
    if ($je_suis_poste) {
        $post = traiter_formulaires_dynamiques(true);
        $e = "erreurs_{$form}";
        $erreurs = isset($post[$e]) ? $post[$e] : array();
        $editable = "editable_{$form}";
        $editable = !isset($post[$e]) || count($erreurs) || isset($post[$editable]) && $post[$editable];
    }
    $valeurs = formulaire__charger($form, $args, $je_suis_poste);
    // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
    // C'est plus fort qu'editable qui est gere par le squelette
    // Idealement $valeur doit etre alors un message explicatif.
    if (!is_array($valeurs)) {
        return is_string($valeurs) ? $valeurs : '';
    }
    // charger peut passer une action si le formulaire ne tourne pas sur self()
    // ou une action vide si elle ne sert pas
    $action = isset($valeurs['action']) ? $valeurs['action'] : self('&', true);
    // bug IEx : si action finit par /
    // IE croit que le <form ... action=../ > est autoferme
    if (substr($action, -1) == '/') {
        // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
        $action .= '#';
    }
    // recuperer la saisie en cours si erreurs
    // seulement si c'est ce formulaire qui est poste
    // ou si on le demande explicitement par le parametre _forcer_request = true
    $dispo = $je_suis_poste || isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'];
    foreach (array_keys($valeurs) as $champ) {
        if ($champ[0] !== '_' and !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
            if ($dispo and ($v = _request($champ)) !== NULL) {
                $valeurs[$champ] = $v;
            }
            // nettoyer l'url des champs qui vont etre saisis
            if ($action) {
                $action = parametre_url($action, $champ, '');
            }
            // proteger les ' et les " dans les champs que l'on va injecter
            $valeurs[$champ] = protege_champ($valeurs[$champ]);
        }
    }
    if ($action) {
        // nettoyer l'url
        $action = parametre_url($action, 'formulaire_action', '');
        $action = parametre_url($action, 'formulaire_action_args', '');
    }
    if (isset($valeurs['_action'])) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
        $valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') . "<input type='hidden' name='arg' value='" . $secu['arg'] . "' />" . "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
    }
    // empiler la lang en tant que premier argument implicite du CVT
    // pour permettre de la restaurer au moment du Verifier et du Traiter
    array_unshift($args, $GLOBALS['spip_lang']);
    $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
    $valeurs['erreurs'] = $erreurs;
    $valeurs['action'] = $action;
    $valeurs['form'] = $form;
    if (!isset($valeurs['id'])) {
        $valeurs['id'] = 'new';
    }
    // editable peut venir de charger() ou de traiter() sinon
    if (!isset($valeurs['editable'])) {
        $valeurs['editable'] = $editable;
    }
    // dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
    $valeurs['editable'] = $valeurs['editable'] ? ' ' : '';
    if ($je_suis_poste) {
        $valeurs['message_erreur'] = "";
        if (isset($erreurs['message_erreur'])) {
            $valeurs['message_erreur'] = $erreurs['message_erreur'];
        }
        $valeurs['message_ok'] = "";
        if (isset($post["message_ok_{$form}"])) {
            $valeurs['message_ok'] = $post["message_ok_{$form}"];
        } elseif (isset($erreurs['message_ok'])) {
            $valeurs['message_ok'] = $erreurs["message_ok"];
        }
    }
    return $valeurs;
}