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

distinguer editer et instituer auteur

et ne pas ecraser l'email lorsqu'il n'est pas editable (#1503)
parent 5f26ec3c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -75,6 +75,7 @@ ecrire/action/export_all.php -text
ecrire/action/iconifier.php -text
ecrire/action/index.php -text
ecrire/action/instituer_article.php -text
ecrire/action/instituer_auteur.php -text
ecrire/action/instituer_breve.php -text
ecrire/action/instituer_collaboration.php -text
ecrire/action/instituer_forum.php -text
......
......@@ -40,7 +40,7 @@ function action_editer_auteur_dist() {
_request('restreintes'),
$r[0]);
if ($echec) {
if ($echec AND $redirect) {
// revenir au formulaire de saisie
$ret = !$redirect
? ''
......@@ -48,11 +48,6 @@ function action_editer_auteur_dist() {
spip_log("echec editeur auteur: " . join(' ',$echec));
$echec = '&echec=' . join('@@@', $echec);
$redirect = generer_url_ecrire('auteur_infos',"id_auteur=$id_auteur$echec$ret",'&');
} else {
// modif: renvoyer le resultat ou a nouveau le formulaire si erreur
if (!$redirect)
$redirect = generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur", '&', true);
else $redirect = rawurldecode($redirect);
}
}
if ($redirect) {
......@@ -147,7 +142,7 @@ function action_legender_auteur_post($statut, $nom, $email, $bio, $nom_site_aute
// Seuls les admins peuvent modifier le mail
// les admins restreints ne peuvent modifier celui des autres admins
if (autoriser('modifier', 'auteur', $id_auteur, NULL, array('mail'=>1))) {
if ($email!==null AND autoriser('modifier', 'auteur', $id_auteur, NULL, array('mail'=>1))) {
$email = trim($email);
if ($email !='' AND !email_valide($email)) {
$echec[]= 'info_email_invalide';
......@@ -213,9 +208,40 @@ function action_legender_auteur_post($statut, $nom, $email, $bio, $nom_site_aute
sql_insertq('spip_auteurs_articles', array('id_article' => $id_article, 'id_auteur' =>$id_auteur));
}
// Modifier en base (declenche les notifications etc.)
instituer_auteur($id_auteur, $c);
// Envoyer aux plugins
$champs = pipeline('pre_edition',
array(
'args' => array(
'table' => 'spip_auteurs',
'id_objet' => $id_auteur
),
'data' => $c
)
);
include_spip('inc/modifier');
revision_auteur($id_auteur, $champs);
// Invalider les caches
include_spip('inc/invalideur');
suivre_invalideur("id='id_auteur/$id_auteur'");
// Pipeline
pipeline('post_edition',
array(
'args' => array(
'table' => 'spip_auteurs',
'id_objet' => $id_auteur
),
'data' => $champs
)
);
// Notifications
if ($notifications = charger_fonction('notifications', 'inc')) {
$notifications('editerauteur', $id_auteur, $champs);
}
return array($id_auteur, $echec);
}
......@@ -224,11 +250,53 @@ function action_legender_auteur_post($statut, $nom, $email, $bio, $nom_site_aute
function instituer_auteur($id_auteur, $c) {
if (!$id_auteur=intval($id_auteur))
return false;
$champs = array();
$statut = $statut_ancien = sql_getfetsel('statut','spip_auteurs','id_auteur='.intval($id_auteur));
if (isset($c['statut']))
sql_updateq('spip_auteurs', array('statut' => $c['statut']), 'id_auteur='.$id_auteur);
$statut = $champs['statut'] = $c['statut'];
// Envoyer aux plugins
$champs = pipeline('pre_edition',
array(
'args' => array(
'table' => 'spip_auteurs',
'id_objet' => $id_auteur
),
'data' => $champs
)
);
if (!count($champs)) return;
sql_updateq('spip_auteurs', $champs , 'id_auteur='.$id_auteur);
include_spip('inc/modifier');
revision_auteur($id_auteur, $c);
// Invalider les caches
include_spip('inc/invalideur');
suivre_invalideur("id='id_auteur/$id_auteur'");
// Pipeline
pipeline('post_edition',
array(
'args' => array(
'table' => 'spip_auteurs',
'id_objet' => $id_auteur
),
'data' => $champs
)
);
// Notifications
if ($notifications = charger_fonction('notifications', 'inc')) {
$notifications('instituerauteur', $id_auteur,
array('statut' => $statut, 'statut_ancien' => $statut_ancien)
);
}
return ''; // pas d'erreur
}
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
function action_instituer_auteur_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
list($id_auteur, $statut) = preg_split('/\W/', $arg);
if (!$statut) $statut = _request('statut'); // cas POST
if (!$statut) return; // impossible mais sait-on jamais
$id_auteur = intval($id_auteur);
include_spip('action/editer_auteur');
$c = array('statut' => $statut);
instituer_auteur($id_auteur, $c);
}
?>
......@@ -34,7 +34,7 @@ function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redir
$bloc_statut = $instituer_auteur($auteur);
if ($bloc_statut) {
$bloc_statut .= "<div style='text-align: right'><input type='submit' value='"._T('bouton_enregistrer')."' class='fondo' /></div>";
$bloc_statut = generer_action_auteur('editer_auteur', $id_auteur, $redirect, $bloc_statut, ' method="post"');
$bloc_statut = generer_action_auteur('instituer_auteur', $id_auteur, self(), $bloc_statut, ' method="post"');
}
} else {
$bloc_statut = "";
......
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