Skip to content
Extraits de code Groupes Projets
Valider 9808e19b rédigé par Fil's avatar Fil
Parcourir les fichiers

API pour modifier les forums, et autorisation par defaut = non

parent 394b6106
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -125,7 +125,7 @@ function revisions_articles ($id_article, $c=false) { ...@@ -125,7 +125,7 @@ function revisions_articles ($id_article, $c=false) {
$indexation = true; $indexation = true;
} }
return modifier_contenu('article', $id_article, $r = modifier_contenu('article', $id_article,
array( array(
'champs' => array( 'champs' => array(
'surtitre', 'titre', 'soustitre', 'descriptif', 'surtitre', 'titre', 'soustitre', 'descriptif',
...@@ -133,10 +133,15 @@ function revisions_articles ($id_article, $c=false) { ...@@ -133,10 +133,15 @@ function revisions_articles ($id_article, $c=false) {
), ),
'nonvide' => array('titre' => _T('info_sans_titre')), 'nonvide' => array('titre' => _T('info_sans_titre')),
'invalideur' => $invalideur, 'invalideur' => $invalideur,
'indexation' => $indexation, 'indexation' => $indexation
'supplement_sql' => 'date_modif=NOW()'
), ),
$c); $c);
if ($r) {
spip_query("UPDATE spip_articles SET date_modif=NOW() WHERE id_article="._q($id_article));
}
return $r;
} }
......
...@@ -29,7 +29,7 @@ if (!function_exists('autoriser')) { ...@@ -29,7 +29,7 @@ if (!function_exists('autoriser')) {
// API pour une fonction generique d'autorisation : // API pour une fonction generique d'autorisation :
// $qui est : vide (on prend alors auteur_session) // $qui est : vide (on prend alors auteur_session)
// un id_auteur (on regarde dans la base) // un id_auteur (on regarde dans la base)
// un tableau auteur complet // un tableau auteur complet, y compris [restreint]
// $faire est une action ('modifier', 'publier'...) // $faire est une action ('modifier', 'publier'...)
// $type est un type d'objet ou nom de table ('article') // $type est un type d'objet ou nom de table ('article')
// $id est l'id de l'objet sur lequel on veut agir // $id est l'id de l'objet sur lequel on veut agir
...@@ -57,7 +57,7 @@ function autoriser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL) { ...@@ -57,7 +57,7 @@ function autoriser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL) {
// (y compris leurs sous-rubriques), ou 0 si admin complet // (y compris leurs sous-rubriques), ou 0 si admin complet
if (is_array($qui) if (is_array($qui)
AND $qui['statut'] == '0minirezo' AND $qui['statut'] == '0minirezo'
AND !isset($qui['rubriques'])) { AND !isset($qui['restreint'])) {
if (!isset($restreint[$qui['id_auteur']])) { if (!isset($restreint[$qui['id_auteur']])) {
include_spip('inc/auth'); # pour auth_rubrique include_spip('inc/auth'); # pour auth_rubrique
$restreint[$qui['id_auteur']] = auth_rubrique($qui['id_auteur'], $qui['statut']); $restreint[$qui['id_auteur']] = auth_rubrique($qui['id_auteur'], $qui['statut']);
...@@ -206,6 +206,15 @@ function autoriser_moderer_forum_dist($faire, $type, $id, $qui, $opt) { ...@@ -206,6 +206,15 @@ function autoriser_moderer_forum_dist($faire, $type, $id, $qui, $opt) {
autoriser('modifier', $type, $id, $qui, $opt); autoriser('modifier', $type, $id, $qui, $opt);
} }
// Modifier un forum ?
// = jamais !
// http://doc.spip.org/@autoriser_moderer_forum_dist
function autoriser_modifier_forum_dist($faire, $type, $id, $qui, $opt) {
return
false;
}
// Moderer la petition ? // Moderer la petition ?
// = modifier l'article correspondant // = modifier l'article correspondant
// = droits par defaut sinon (admin complet pour moderation de tout) // = droits par defaut sinon (admin complet pour moderation de tout)
......
...@@ -17,7 +17,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -17,7 +17,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// $options est un array() avec toutes les options // $options est un array() avec toutes les options
// //
// Pour l'instant fonctionne pour les types : // Pour l'instant fonctionne pour les types :
// article, document // article, auteur, document, forum
// renvoie false si rien n'a ete modifie, true sinon
// //
// http://doc.spip.org/@modifier_contenu // http://doc.spip.org/@modifier_contenu
function modifier_contenu($type, $id, $options, $c=false) { function modifier_contenu($type, $id, $options, $c=false) {
...@@ -64,10 +65,8 @@ function modifier_contenu($type, $id, $options, $c=false) { ...@@ -64,10 +65,8 @@ function modifier_contenu($type, $id, $options, $c=false) {
foreach ($champs as $champ => $val) foreach ($champs as $champ => $val)
$update[] = $champ . '=' . _q($val); $update[] = $champ . '=' . _q($val);
if (!count($update)) return; if (!count($update))
return false;
if ($options['supplement_sql'])
$update[] = $options['supplement_sql'];
spip_query($q = "UPDATE spip_$table_objet SET ".join(', ',$update)." WHERE $id_table_objet=$id"); spip_query($q = "UPDATE spip_$table_objet SET ".join(', ',$update)." WHERE $id_table_objet=$id");
...@@ -101,6 +100,7 @@ function modifier_contenu($type, $id, $options, $c=false) { ...@@ -101,6 +100,7 @@ function modifier_contenu($type, $id, $options, $c=false) {
) )
); );
return true;
} }
// http://doc.spip.org/@revision_document // http://doc.spip.org/@revision_document
...@@ -118,7 +118,6 @@ function revision_document($id_document, $c=false) { ...@@ -118,7 +118,6 @@ function revision_document($id_document, $c=false) {
// http://doc.spip.org/@revision_auteur // http://doc.spip.org/@revision_auteur
function revision_auteur($id_auteur, $c=false) { function revision_auteur($id_auteur, $c=false) {
include_spip('inc/modifier');
return modifier_contenu('auteur', $id_auteur, return modifier_contenu('auteur', $id_auteur,
array( array(
...@@ -129,5 +128,52 @@ function revision_auteur($id_auteur, $c=false) { ...@@ -129,5 +128,52 @@ function revision_auteur($id_auteur, $c=false) {
} }
// Quand on edite un forum, on tient a conserver l'original
// sous forme d'un forum en reponse, de statut 'original'
function conserver_original($id_forum) {
$s = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent="._q($id_forum)." AND statut='original'");
if (spip_num_rows($s))
return true;
// recopier le forum
$t = spip_fetch_array(
spip_query("SELECT date_heure,titre,texte,auteur,email_auteur,nom_site,url_site,ip,id_auteur,idx,id_thread FROM spip_forum WHERE id_forum="._q($id_forum))
);
if ($t
AND spip_query("INSERT spip_forum (date_heure,titre,texte,auteur,email_auteur,nom_site,url_site,ip,id_auteur,idx,id_thread) VALUES (".join(',',array_map('_q', $t)).")")) {
$id_copie = spip_insert_id();
spip_query("UPDATE spip_forum SET id_parent="._q($id_forum).", statut='original' WHERE id_forum=$id_copie");
return true;
}
return false;
}
// http://doc.spip.org/@revision_auteur
function revision_forum($id_forum, $c=false) {
if (!conserver_original($id_forum)) {
spip_log("erreur de sauvegarde de l'original");
return;
}
$r = modifier_contenu('forum', $id_forum,
array(
'champs' => array('titre', 'texte', 'auteur', 'email_auteur', 'nom_site', 'url_site', 'ip'),
'nonvide' => array('titre' => _T('info_sans_titre'))
),
$c);
// s'il y a vraiment eu une modif, on stocke le numero IP courant
// ainsi que le nouvel id_auteur dans le message modifie
if ($r) {
spip_query("UPDATE spip_forum SET ip="._q($GLOBALS['ip']).", id_auteur="._q($GLOBALS['auteur_session']['id_auteur'])." WHERE id_forum="._q($id_forum));
}
return $r;
}
?> ?>
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