From 9a2d4442d68cea71849fa4a46d3c54c31d808aac Mon Sep 17 00:00:00 2001 From: RealET <real3t@gmail.com> Date: Thu, 3 Mar 2022 13:43:33 +0100 Subject: [PATCH] API SPIP pour les auteurs, sites et formulaires formidable + nettoyage de code et execeptions sur autorisations --- base/soyezcreateurs.php | 112 ++++++++++++++++++++--------- soyezcreateurs_administrations.php | 10 --- 2 files changed, 78 insertions(+), 44 deletions(-) diff --git a/base/soyezcreateurs.php b/base/soyezcreateurs.php index d59dd29d..68ee9cc4 100644 --- a/base/soyezcreateurs.php +++ b/base/soyezcreateurs.php @@ -11,7 +11,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return; include_spip("inc/lang"); include_spip('inc/meta'); - +include_spip('inc/autoriser'); +include_spip('action/editer_objet'); // Déclaration des champs extra nécessaires à SoyezCréateurs function soyezcreateurs_declarer_champs_extras($champs = array()) { @@ -139,7 +140,6 @@ function id_groupe($titre) { //fonction qui permet de créer un groupe de mots clés function create_groupe($groupe, $descriptif='', $texte='', $unseul='non', $obligatoire='non', $tables_liees='', $minirezo='oui', $comite='oui', $forum='non') { - include_spip('action/editer_objet'); $id_groupe = find_groupe($groupe); spip_log("1. (create_groupe) pret a creer groupe : titre = $groupe. retour de find_groupe = $id_groupe", _LOG_DEBUG); if ($id_groupe == 0) { @@ -170,8 +170,8 @@ function supprimer_mot_groupe($nom_groupe,$nom_mot) { if ($id_groupe>0) { $id_mot = id_mot($nom_mot, $id_groupe); if ($id_mot>0) { - sql_delete("spip_mots", "id_mot=$id_mot"); - sql_delete("spip_mots_liens", "id_mot=$id_mot"); + include_spip('action/editer_mot'); + mot_supprimer($id_mot); } } } @@ -180,9 +180,9 @@ function vider_groupe($nom_groupe) { $id_groupe = id_groupe($nom_groupe); if ($id_groupe>0) { $id_mots = sql_select('id_mot', 'spip_mots', 'id_groupe='.sql_quote($id_groupe)); + include_spip('action/editer_mot'); while($id_mot = sql_fetch($id_mots)){ - sql_delete("spip_mots", "id_mot=".$id_mot['id_mot']); - sql_delete("spip_mots_liens", "id_mot=".$id_mot['id_mot']); + mot_supprimer($id_mot); } sql_delete("spip_groupes_mots", "id_groupe=$id_groupe"); } @@ -190,7 +190,6 @@ function vider_groupe($nom_groupe) { //fonction qui mets à jour un groupe de mots clés function remplacer_groupe($titre, $descriptif, $texte, $unseul, $obligatoire, $tables_liees, $minirezo, $comite, $forum) { - include_spip('action/editer_objet'); $id_groupe = id_groupe($titre); $set = array( "titre" => $titre, @@ -233,7 +232,6 @@ function id_mot($titre, $id_groupe) { //fonction qui permet de créer un mot clé function create_mot($groupe, $mot, $descriptif='', $texte='') { - include_spip('action/editer_objet'); $id_groupe = id_groupe($groupe); $find_mot = find_mot($mot, $id_groupe); if ($find_mot == 0) { @@ -262,7 +260,6 @@ function create_mot($groupe, $mot, $descriptif='', $texte='') { //fonction qui permet de mettre à jour un mot clé function remplacer_mot($id_mot, $mot, $descriptif, $texte, $id_groupe, $groupe) { - include_spip('action/editer_objet'); $set = array( "titre" => $mot, "descriptif" => $descriptif, @@ -276,7 +273,6 @@ function remplacer_mot($id_mot, $mot, $descriptif, $texte, $id_groupe, $groupe) //fonction qui permet de changer un mot clé de groupe function deplacer_mot($id_mot, $id_groupe) { - include_spip('action/editer_objet'); $set = array( "id_groupe" => $id_groupe ); @@ -319,7 +315,6 @@ function delete_rubrique($titre) { // fonction qui permet de renommer une rubrique à partir du titre function rename_rubrique($titre, $nouveau_titre) { - include_spip('action/editer_objet'); $id_rubrique = id_rubrique($titre); if ($id_rubrique) { $set = array( @@ -334,7 +329,6 @@ function rename_rubrique($titre, $nouveau_titre) { //fonction qui permet de créer une rubrique function create_rubrique($titre, $id_parent='0', $descriptif='') { - include_spip('action/editer_objet'); $id_rubrique = find_rubrique($titre); if ($id_rubrique == 0) { $set= array( @@ -342,7 +336,9 @@ function create_rubrique($titre, $id_parent='0', $descriptif='') { "id_parent" => $id_parent, "descriptif" => $descriptif ); + autoriser_exception('inserer', 'rubrique', $id_rubrique); $id_rubrique = objet_inserer('rubrique', $id_parent, $set); + autoriser_exception('inserer', 'rubrique', $id_rubrique, false); spip_log("1. (create_rubrique) rubrique cree : id = $id_rubrique, titre = $titre", _LOG_DEBUG); } else if ($id_rubrique > 0) { @@ -354,8 +350,6 @@ function create_rubrique($titre, $id_parent='0', $descriptif='') { //fonction qui mets à jour une rubrique function remplacer_rubrique($id_rubrique, $set) { - include_spip('action/editer_objet'); - include_spip('inc/autoriser'); // donner une autorisation exceptionnelle temporaire autoriser_exception('modifier', 'rubrique', $id_rubrique); $retour = objet_modifier('rubrique', $id_rubrique, $set); @@ -389,7 +383,6 @@ function id_article($titre, $id_rubrique) { //fonction qui permet de créer un article function create_article($texte, $rubrique, $lang='fr') { - include_spip('action/editer_objet'); $id_rubrique = id_rubrique($rubrique); $count_articles = find_article($texte['titre'], $id_rubrique); if ($count_articles == 0) { @@ -411,7 +404,9 @@ function create_article($texte, $rubrique, $lang='fr') { "url_site" => $texte['url_site'], "virtuel" => $texte['virtuel'] ); + autoriser_exception('inserer', 'article', $id_rubrique); $id_article = objet_inserer('article', $id_rubrique, $set); + autoriser_exception('inserer', 'article', $id_rubrique, false); spip_log("2. (create_article) article insere : $id_article", _LOG_DEBUG); } else if ($count_articles > 0) { @@ -424,7 +419,6 @@ function create_article($texte, $rubrique, $lang='fr') { //fonction qui permet de mettre à jour un article function remplacer_article($id_article, $id_rubrique, $texte) { - include_spip('action/editer_objet'); $set = array( "surtitre" => $texte['surtitre'], "soustitre" => $texte['soustitre'], @@ -436,7 +430,9 @@ function remplacer_article($id_article, $id_rubrique, $texte) { "url_site" => $texte['url_site'], "virtuel" => $texte['virtuel'] ); + autoriser_exception('modifier', 'article', $id_article); objet_modifier('article', $id_article, $set); + autoriser_exception('modifier', 'article', $id_article, false); return true; } @@ -449,7 +445,7 @@ function poubelle_article($id_or_titre_article, $titre_rubrique) { $id_article = id_article($id_or_titre_article, $id_rubrique); } if ($id_article) { - include_spip('action/editer_objet'); + autoriser_exception('modifier', 'article', $id_article); objet_modifier( 'article', $id_article, @@ -457,6 +453,7 @@ function poubelle_article($id_or_titre_article, $titre_rubrique) { 'statut' => 'poubelle' ) ); + autoriser_exception('modifier', 'article', $id_article, false); } } } @@ -542,7 +539,6 @@ function create_rubrique_mot($rubrique, $mot, $groupe) { } function create_evenement($rubrique, $article, $titre_evenement, $debut, $fin, $descriptif = '',$lieu ='', $horaire='oui') { - include_spip('action/editer_objet'); $id_rubrique = id_rubrique($rubrique); if ($id_rubrique > 0) { $id_article = id_article($article, $id_rubrique ); @@ -563,7 +559,6 @@ function create_evenement($rubrique, $article, $titre_evenement, $debut, $fin, $ } function create_encart($titre, $identifiant, $largeur=0, $hauteur=0) { - include_spip('action/editer_objet'); $titre = sql_quote($titre); $result = sql_fetsel( "id_encart", @@ -578,9 +573,13 @@ function create_encart($titre, $identifiant, $largeur=0, $hauteur=0) { "hauteur" => $hauteur ); if ($id_encart > 0) { + autoriser_exception('modifier', 'encart', $id_encart); objet_modifier("encart", $id_encart, $set); + autoriser_exception('modifier', 'encart', $id_encart, false); } else { + autoriser_exception('inserer', 'encart', $id_encart); $id_encart = objet_inserer("encart", $id_encart, $set); + autoriser_exception('inserer', 'encart', $id_encart, false); } return $id_encart; } @@ -611,12 +610,25 @@ function find_auteur_email($id_auteur) { //fonction qui permet de créer un auteur (sans login ni mot de passe) function create_auteur($nom, $email='', $bio='') { - include_spip('action/editer_objet'); $id_auteur = find_auteur($nom); if ($id_auteur > 0) { - objet_modifier("auteurs", $id_auteur, $set); + $set = array( + "email" => $email, + "bio" => $bio + ); + autoriser_exception('modifier', 'auteur', $id_auteur); + objet_modifier("auteur", $id_auteur, $set); + autoriser_exception('modifier', 'auteur', $id_auteur, false); } else { - $id_auteur = objet_inserer("auteurs", $id_auteur, array("nom" => $nom, "email" => $email, "bio" => $bio, "statut" => "1comite")); + $set = array( + "nom" => $nom, + "email" => $email, + "bio" => $bio, + "statut" => '1comite' + ); + autoriser_exception('inserer', 'auteur', $id_auteur); + $id_auteur = objet_inserer("auteur", $id_auteur, $set); + autoriser_exception('inserer', 'auteur', $id_auteur, false); } spip_log("1. (create_auteur) auteur cree : id = $id_auteur, nom = $nom", _LOG_DEBUG); return $id_auteur; @@ -625,7 +637,6 @@ function create_auteur($nom, $email='', $bio='') { function create_document($chemin, $objet, $mode, $champs='non', $id_document='non') { include_spip('action/ajouter_documents'); - include_spip('inc/autoriser'); $chemin = find_in_path($chemin); $type = $objet['type']; $id_objet = $objet['id_objet']; @@ -661,18 +672,31 @@ function id_site($titre, $id_rubrique) { } function create_site($site, $rubrique) { - include_spip('action/editer_objet'); $id_rubrique = id_rubrique($rubrique); - $date = date("Y-m-d H:i:s"); if ($id_rubrique > 0) { $id_site = id_site($site['nom_site'], $id_rubrique); if ($id_site > 0) { + $set = array( + "url_site" => $site['url_site'], + "url_syndic" => $site['url_syndic'], + "descriptif" => $site['descriptif'], + "statut" => $site['statut'] ? $site['statut']:'prop', + "syndication" => $site['url_syndic'] ? 'oui':'non', + "oubli" => $site['oubli'] ? 'oui':'non' + ); objet_modifier('site', $id_rubrique, $set); } else { - $id_site = objet_inserer('site', $id_rubrique, array("id_rubrique" => $id_rubrique, "nom_site" => $site["nom_site"], "url_site" => $site["url_site"], "url_syndic" => $site["url_syndic"], "descriptif" => $site["descriptif"], "statut" => $site["statut"] ? $site['statut'] : 'prop', "date" => $date, "syndication" => $site["url_syndic"] ? "oui" : "non", "oubli" => $site["oubli"] ? "oui":"non")); - include_spip('inc/rubriques'); - calculer_rubriques(); - propager_les_secteurs(); + $set = array( + "id_rubrique" => $id_rubrique, + "nom_site" => $site['nom_site'], + "url_site" => $site['url_site'], + "url_syndic" => $site['url_syndic'], + "descriptif" => $site['descriptif'], + "statut" => $site['statut'] ? $site['statut']:'prop', + "syndication" => $site['url_syndic'] ? 'oui':'non', + "oubli" => $site['oubli'] ? 'oui':'non' + ); + $id_site = objet_inserer('site', $id_rubrique, $set); effacer_meta("date_calcul_rubriques"); } return $id_site; @@ -692,19 +716,39 @@ function id_formidable($identifiant) { } function create_formidable($formidable) { - include_spip('action/editer_objet'); $id_formulaire = id_formidable($formidable['identifiant']); if ($id_formulaire > 0) { - objet_modifier('formulaires', $id_formulaire, $set); + $set = array( + "titre" => $formidable['titre'], + "descriptif" => $formidable['descriptif'], + "message_retour" => $formidable['message_retour'], + "saisies" => $formidable['saisies'], + "traitements" => $formidable['traitements'], + "public" => $formidable['public'], + "statut" => $formidable['statut'], + "apres" => $formidable['apres'], + "url_redirect" => $formidable['url_redirect'] + ); + objet_modifier('formulaire', $id_formulaire, $set); } else { - $id_formulaire = objet_inserer('formulaires', $id_formulaire, array("identifiant" => $formidable['identifiant'], "titre" => $formidable['titre'], "descriptif" => $formidable["descriptif"], "message_retour" => $formidable["message_retour"], "saisies" => $formidable["saisies"], "traitements" => $formidable["traitements"], "public" => $formidable["traitements"], "statut" => $formidable["statut"], "apres" => $formidable["apres"], "url_redirect" => $formidable["url_redirect"])); - include_spip('inc/rubriques'); + $set = array( + "identifiant" => $formidable['identifiant'], + "titre" => $formidable['titre'], + "descriptif" => $formidable['descriptif'], + "message_retour" => $formidable['message_retour'], + "saisies" => $formidable['saisies'], + "traitements" => $formidable['traitements'], + "public" => $formidable['public'], + "statut" => $formidable['statut'], + "apres" => $formidable['apres'], + "url_redirect" => $formidable['url_redirect'] + ); + $id_formulaire = objet_inserer('formulaires', $id_formulaire, $set); } return $id_formulaire; } function poubelle_site($titre_site, $titre_rubrique) { - include_spip('action/editer_objet'); $id_rubrique = id_rubrique($titre_rubrique); if ($id_rubrique) { $id_syndic = id_site($titre_site, $id_rubrique); diff --git a/soyezcreateurs_administrations.php b/soyezcreateurs_administrations.php index f3f18353..b8af84cc 100644 --- a/soyezcreateurs_administrations.php +++ b/soyezcreateurs_administrations.php @@ -23,7 +23,6 @@ function soyezcreateurs_upgrade($nom_meta_base_version,$version_cible){ $maj['3.0.20'] = array( array('soyezcreateurs_3_0_20') ); $maj['3.0.24'] = array( array('soyezcreateurs_3_0_24') ); - $maj['3.0.28'] = array( array('soyezcreateurs_3_0_28') ); $maj['3.0.30'] = array( array('soyezcreateurs_3_0_30') ); $maj['3.0.31'] = array( array('soyezcreateurs_3_0_31') ); $maj['3.0.33'] = array( array('soyezcreateurs_3_0_33') ); @@ -197,14 +196,6 @@ function soyezcreateurs_3_0_24() { } } -function soyezcreateurs_3_0_28() { - // Au cas où : remttre au carré les id_secteur des articles et rubriques. - include_spip('inc/rubriques'); - calculer_rubriques(); - propager_les_secteurs(); - effacer_meta("date_calcul_rubriques"); -} - function soyezcreateurs_3_0_30() { $id_mot = create_mot("_ModePortail", "ZoomSur2_Variante1", "Affecter ce mot clef à l’objet que vous voulez placer dans le cadre « Zoom sur secondaire » (facultatif).\n\nLe site prendra le dernier article ayant ce mot clef.", "Variante sur 2 colonnes : \n-* Titre de la rubrique contenant l’article\n-* 1re colonne :\n-** Document joint (de type autre média, PowerPoint par exemple) affiché avec son logo\n-** Chapo de l'article en dessous (permet de faire un lien)\n-* 2e colonne :\n-** Logo de l’article\n-** faisant un lien vers l’article (et si c’est une redirection, ça peut conduire à une autre page"); } @@ -409,7 +400,6 @@ function soyezcreateurs_finalisationinstall() { // On termine en invalidant les caches include_spip('inc/invalideur'); suivre_invalideur("soyezcreateurs"); - } /* -- GitLab