Skip to content
Extraits de code Groupes Projets
Valider dcf404c9 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

report de [12935]

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

Les deux premiers formats doivent etre consideres comme obsoletes. Ils sont gardes par soucis de compatibilite
- Lorsque traiter veut effectuer une redirection il ne *doit pas* la faire lui meme, mais la demander dans le tableau renvoye par
'redirect'=>$url
- Lorsque traiter effectuer une insertion ou une modification en base de donnee sur un objet editorial, il *devrait toujours*
le passer dans le tableau renvoye :
'id_xx' => $id_xx
 
L'utilisation de ces recommandations rendent le pipeline formulaire_traiter operationnel
parent 26dade61
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de avec 84 ajouts et 59 suppressions
......@@ -59,7 +59,7 @@ function formulaires_ecrire_auteur_traiter_dist($id_auteur, $id_article, $mail){
"X-Originating-IP: ".$GLOBALS['ip']);
$message = _T("form_prop_message_envoye");
return _T("form_prop_message_envoye");
return array('message_ok'=>$message);
}
?>
\ No newline at end of file
......@@ -287,10 +287,8 @@ function formulaires_forum_traiter_dist() {
$forum_insert = charger_fonction('forum_insert', 'inc');
$redirect = $forum_insert();
include_spip('inc/headers');
return redirige_formulaire($redirect);
list($redirect,$id_forum) = $forum_insert();
return array('redirect'=>$redirect,'id_forum'=>$id_forum);
}
......
......@@ -106,7 +106,7 @@ function formulaires_inscription_traiter_dist($mode, $focus, $id=0) {
$desc = _T('form_forum_probleme_mail');
}
return is_string($desc) ? $desc : _T('form_forum_identifiant_mail');
return array('message_ok'=>is_string($desc) ? $desc : _T('form_forum_identifiant_mail'));
}
// fonction qu'on peut redefinir pour filtrer les adresses mail et les noms,
......
......@@ -91,6 +91,6 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur=null){
$message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
"<p>" . _T('pass_rappel_login', array('login' => $login));
}
return $message;
return array('message_ok'=>$message);
}
?>
\ No newline at end of file
......@@ -56,7 +56,7 @@ function message_oubli($email, $param)
function formulaires_oubli_traiter_dist(){
$message = message_oubli(_request('oubli'),'p');
return $message;
return array('message_ok'=>$message);
}
......
......@@ -123,7 +123,7 @@ function formulaires_signature_traiter_dist($id_article, $petition, $texte, $sit
_request('signature_url_site'), _request('url_page'));
}
return $reponse;
return array('message_ok'=>$reponse);
}
// Retour a l'ecran du lien de confirmation d'une signature de petition.
......
......@@ -39,15 +39,14 @@ function formulaires_site_verifier_dist($id_rubrique){
}
function formulaires_site_traiter_dist($id_rubrique){
$message = _T('titre_probleme_technique');
$res = array('message_erreur'=>_T('titre_probleme_technique'));
$nom = _request('nom_site');
$url = _request('url_site');
$desc = _request('description_site');
include_spip('base/abstract_sql');
if (sql_insertq('spip_syndic', array(
if ($id_syndic = sql_insertq('spip_syndic', array(
'nom_site' => $nom,
'url_site' => $url,
'id_rubrique' => $id_rubrique,
......@@ -57,9 +56,9 @@ function formulaires_site_traiter_dist($id_rubrique){
'date_syndic' => 'NOW()',
'statut' => 'prop',
'syndication' => 'non')))
$message = _T('form_prop_enregistre');
$res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic'=>$id_syndic);
return $message;
return $res;
}
?>
......@@ -35,11 +35,15 @@ function get_spip_doc($fichier) {
// gestion d'erreurs, fichier=''
if (!strlen($fichier))
return false;
$fichier = (strpos($fichier, _DIR_IMG) === false)
? _DIR_IMG . $fichier
: $fichier ;
if ($m = @filemtime($fichier))
$fichier .= "?$m";
// fichier normal
return (strpos($fichier, _DIR_IMG) === false)
? _DIR_IMG . $fichier
: $fichier;
return $fichier;
}
// Filtre pour #ID_DOCUMENT ou #FICHIER
......
......@@ -16,18 +16,19 @@ include_spip('base/abstract_sql');
// http://doc.spip.org/@formulaires_editer_objet_traiter
function formulaires_editer_objet_traiter($type, $id='new', $id_parent=0, $lier_trad=0, $retour='', $config_fonc='articles_edit_config', $row=array(), $hidden=''){
$message = "";
$res = array();
$action_editer = charger_fonction("editer_$type",'action');
list($id,$err) = $action_editer();
$id_table_objet = id_table_objet($type);
$res[$id_table_objet] = $id;
if ($err){
$message .= $err;
$res['message_erreur'] =$err;
}
elseif ($retour) {
include_spip('inc/headers');
$id_table_objet = id_table_objet($type);
$message .= redirige_formulaire(parametre_url($retour,$id_table_objet,$id));
$res['message_ok'] = ""; // il faudrait faire mieux que cela !
$res['redirect'] = parametre_url($retour,$id_table_objet,$id);
}
return $message;
return $res;
}
// http://doc.spip.org/@formulaires_editer_objet_verifier
......
......@@ -104,14 +104,14 @@ function inc_forum_insert_dist($force_statut = NULL) {
$id_message = forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $statut, $retour);
if (!$id_message) return $retour; // echec
if (!$id_message) return array($retour,0); // echec
// En cas de retour sur (par exemple) {#SELF}, on ajoute quand
// meme #forum12 a la fin de l'url, sauf si un #ancre est explicite
if ($reqret !== '!')
return strstr('#', $retour) ?
return array(strstr('#', $retour) ?
$retour
: $retour.'#forum'.$id_message;
: $retour.'#forum'.$id_message,$id_message);
// le retour par defaut envoie sur le thread, ce qui permet
// de traiter elegamment le cas des forums moderes a priori.
......@@ -119,7 +119,7 @@ function inc_forum_insert_dist($force_statut = NULL) {
// dans le cas des forums moderes a posteriori, ce qui n'est
// pas plus mal.
return generer_url_entite($id_message, 'forum');
return array(generer_url_entite($id_message, 'forum'),$id_message);
}
// http://doc.spip.org/@forum_insert_base
......
......@@ -433,7 +433,7 @@ function pipeline_precompile(){
}
}
$content .= "// Pipeline $action \n";
$content .= "function execute_pipeline_$action(\$val){\n";
$content .= "function execute_pipeline_$action(&\$val){\n";
$content .= $s_inc?"error_reporting(SPIP_ERREUR_REPORT_INCLUDE_PLUGINS);\n":"";
$content .= $s_inc;
$content .= $s_inc?"error_reporting(SPIP_ERREUR_REPORT);\n":"";
......
......@@ -141,12 +141,46 @@ function traiter_formulaires_dynamiques($get=false){
'args'=>array('form'=>$form,'args'=>$args),
'data'=>$rev)
);
// traiter peut retourner soit un message, soit un array(editable,message)
if (is_array($rev)) {
$post["editable_$form"] = reset($rev);
$post["message_ok_$form"] = end($rev);
} else
$post["message_ok_$form"] = $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'])){
include_spip('inc/headers');
$post["message_ok_$form"] .= redirige_formulaire($rev['redirect']);
}
}
}
}
// si le formulaire a ete soumis en ajax, on le renvoie direct !
if (_request('var_ajax')){
......
......@@ -234,7 +234,10 @@ function calcule_logo($type, $onoff, $id, $id_rubrique, $flag_fichier) {
else {
$off = ($onoff != 'ON') ? '' :
$chercher_logo($id, $type, 'off');
return array ($on[0], ($off ? $off[0] : ''));
// on retourne une url du type IMG/artonXX?timestamp
// qui permet de distinguer le changement de logo
// et placer un expire sur le dossier IMG/
return array ($on[0].($on[4]?"?$on[4]":"") , ($off ? $off[0] . ($off[4]?"?$off[4]":"") : ''));
}
}
else if ($id_rubrique) {
......
......@@ -51,20 +51,8 @@ function formulaires_editer_groupe_mot_verifier_dist($id_groupe='new',$retour=''
// http://doc.spip.org/@inc_editer_groupe_mot_dist
function formulaires_editer_groupe_mot_traiter_dist($id_groupe='new',$retour='', $config_fonc='groupes_mots_edit_config', $row=array(), $hidden=''){
$message = '';
set_request('redirect','');
$action_editer = charger_fonction("editer_groupe_mot",'action');
list($id_groupe,$err) = $action_editer();
if ($err){
$message .= $err;
}
else {
if ($retour) {
include_spip('inc/headers');
$message .= redirige_formulaire(parametre_url($retour,'id_groupe',$id_groupe));
}
}
return $message;
return formulaires_editer_objet_traiter('groupe_mot',$id_groupe,0,0,$retour,$config_fonc,$row,$hidden);
}
......
......@@ -53,24 +53,22 @@ function formulaires_editer_mot_verifier_dist($id_mot='new', $id_groupe=0, $reto
// http://doc.spip.org/@inc_editer_mot_dist
function formulaires_editer_mot_traiter_dist($id_mot='new', $id_groupe=0, $retour='', $ajouter_id_article=0, $table='', $table_id=0, $config_fonc='mots_edit_config', $row=array(), $hidden=''){
$message = '';
$res = '';
set_request('redirect','');
$action_editer = charger_fonction("editer_mot",'action');
list($id_mot,$err) = $action_editer();
if ($err){
$message .= $err;
$res['message_erreur'] = $err;
}
else {
if ($ajouter_id_article){
$id_groupe = intval(_request('id_groupe'));
ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $ajouter_id_article);
}
if ($retour) {
include_spip('inc/headers');
$message .= redirige_formulaire(parametre_url($retour,'id_mot',$id_mot));
}
if ($retour)
$res['redirect'] = $retour;
}
return $message;
return $res;
}
......
......@@ -176,7 +176,7 @@ function formulaires_login_verifier_dist($cible="",$login="",$prive=null){
}
function formulaires_login_traiter_dist($cible="",$login="",$prive=null){
$message = '';
$res = array();
// Si on se connecte dans l'espace prive,
// ajouter "bonjour" (repere a peu pres les cookies desactives)
if (is_null($prive) ? is_url_prive($cible) : $prive) {
......@@ -204,14 +204,14 @@ function formulaires_login_traiter_dist($cible="",$login="",$prive=null){
AND ($cible!=self())) {
if (!headers_sent() AND !$_GET['var_mode']) {
include_spip('inc/headers');
$message .= redirige_formulaire($cible);
$res['redirect'] = $cible;
} else {
$message .= "<a href='$cible'>" .
$res['message_ok'] .= "<a href='$cible'>" .
_T('login_par_ici') .
"</a>";
}
}
return $message;
return $res;
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter