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 !
132 lines
3.7 KiB
PHP
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;
|
|
}
|