Le framework de SPIP s’oriente vers une manipulation de tables - objets
Rappelons d’abord la documentation d’origine
https://www.spip.net/5525 : la déclaration des objets éditoriaux (cf.La structure de base de données de SPIP 3)
https://www.spip.net/5526 : l’ API "editer_objet.php"
https://www.spip.net/5528 : l’ API "autoriser" (voir aussi Autorisations Dans Spip)
https://www.spip.net/5477 : l’ API "editer_liens.php"
Noter que la déclaration des tables standard SPIP prévoit deux modes de paramètrage :
’champs_editables’ : seront gérés dans les formulaires-écrans de modification
’champs_versionnes’ : seront suivis dans les détails de versionning....
voir aussi dans ecrire/base/objets.php
les fonctions : table_objet(), table_objet_sql(), id_table_objet() et objet_type()
Penser à récupérer les identifiants dans une balise..
Le tableau de description d’une table SPIP
Si vous voulez lire les descriptions des tables dans le source PHP de SPIP, il faut s’intéresser aux fichiers situés dans ./ecrire
/base
et dans les sous-répertoires analogues de ./plugins-dist
/xxx
/base
...
Chaque table SPIP est déclarée dans le tableau associatif $tables['
spip_nom_de_table
']
, par un tableau assez important et structuré selon les clés principales suivantes.. [1] :
field : la liste des champs avec leur définition SQL
key : la clé principale, et la création des index KEY en SQL
join :
tables_jointures :
statut : un tableau définissant le champ utilisé, avec valeurs et exceptions,
complété par les statuts_titres, statuts_textes_instituer,...
rechercher_champs : les divers champs utilisés pour la recherche (avec ponderation)
champs_editables : les champs modifiables dans le formulaire de base
champs_versionnes : les champs a prendre en compte si le versionning est activé
enfin divers champs aident à préciser des libellés ou commandes pour les internes de l’espace privé
(en particulier des noms de squelettes propres : url_voir url_edit & page ...)
La gestion directe des objets par action
Après l’expérimentation d’un plugin CRUD [2] implémentant directement les opérations atomiques sur une table, une démarche API objet a été intégrée à SPIP : celle-ci est fondée sur quelques fonctions simples, définies dans les modules de ./ecrire/action
[3] :
action_editer_objet_dist($id = null
| "objet/id"
, $objet = null, $set = null)
-
objet_inserer($objet, $id_objet [, $set]);
-
objet_modifier($objet, $id_objet, $set);
Article publié le 4 mars 2020, et actualisé en septembre 2021 .
Répondre à cet article