F-d-ration_de_groupes/formulaires/editer_sujet.php
Pierre 9c42e9cc24 On crée un deuxième forum.
On normalise les éléments du forum pour qu'il transmette l'id du forum en paramètre, notamment pour la création et la redirection dans le bon forum.
On ajoute des fonctions d'autorisation pour qu'un créateur de sujet puisse le modifier tant qu'il n'a pas de réponse.
On modifie les autorisations pour le formulaire editer_auteur, afin qu'un simple inscrit (6forum) puisse éditer son profil aussi !
2020-03-11 03:30:23 +01:00

132 lines
3.7 KiB
PHP

<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function formulaires_editer_sujet_charger_dist($id_article=0, $id_rubrique, $redirect=''){
$erreurs = array();
include_spip('inc/autoriser');
if (! autoriser("creer","sujet")) {
$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
return $erreurs;
}
// Pour récupérer les champs renseignés en cas d'erreur
$titre = _request('titre');
$texte = _request('texte');
$valeurs = array();
$valeurs['titre'] = $titre;
$valeurs['texte'] = $texte;
if (intval($id_article)) {
if (! autoriser("modifier","article", $id_article)) {
$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
return $erreurs;
}
$valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article));
$where = array(
'id_objet='.intval($id_article),
'objet="article"',
);
$res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
$valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
}
else {
$valeurs['T_id_auteurs'] = array();
$valeurs['id_article'] = -1 * intval(session_get('id_auteur'));
}
$valeurs['_bigup_rechercher_fichiers'] = true;
return $valeurs;
}
function formulaires_editer_sujet_verifier_dist($id_article=0, $id_rubrique, $redirect=''){
$erreurs = array();
include_spip('inc/autoriser');
if (! autoriser("creer","sujet")) {
$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
return $erreurs;
}
if (intval($id_article)) {
if (! autoriser("modifier","article", $id_article)) {
$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
return $erreurs;
}
}
// il faut au minimum titre et un texte pour créer un article
if (_request('titre') == '' OR _request('texte') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un titre et un texte pour créer un article.";
return $erreurs;
}
$bigform = charger_fonction('bigform_verifier','inc');
$options = ['mime' => 'tout_mime','taille_max'=>'5000','largeur_max'=>'2048','hauteur_max'=>'2048'];
$bigform($options,$erreurs);
return $erreurs;
}
function formulaires_editer_sujet_traiter_dist($id_article = 0, $id_rubrique, $redirect = ''){
$new = $id_article;
if (!intval($id_article)) {
include_spip('action/editer_article');
$set = array(
'statut' => 'publie'
);
$id_article = article_inserer($id_rubrique,$set);
}
// enregistrement de l'image
if (!intval($new)) {
$where = array(
'objet="article"',
'id_objet='.intval(session_get('id_auteur')) * -1
);
sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where);
}
// maj de l'article
$set = array(
'titre' => _request('titre'),
'texte' => _request('texte')
);
sql_updateq('spip_articles',$set,'id_article='.intval($id_article));
// maj association article -> auteurs
include_spip('action/editer_liens');
$where = array(
'id_objet='.intval($id_article),
'objet="article"',
);
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
$ids_auteurs = array_column($ids_auteurs, 'id_auteur');
$Tauteurs = _request('Tauteurs');
if (count($Tauteurs)) {
$associer = array_diff($Tauteurs, $ids_auteurs);
$dissocier = array_diff($ids_auteurs, $Tauteurs);
objet_associer( array('auteur' => $associer),array('article' => intval($id_article) ));
objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) ));
}
include_spip('inc/invalideur');
suivre_invalideur("id='id_article/1'");
$retour = array();
$retour['message_ok'] = "Le sujet a bien été créé.";
$retour['redirect'] = $redirect;
$bigform = charger_fonction('bigform_traiter','inc');
$bigform($id_article, 'article');
return $retour;
}