L’API pour les objets

  Des notes pour organiser les outils disponibles

La gestion des objets éditoriaux s’appuie désormais sur une API bien structurée, et donc généralisable à tout objet éditorial natif ou nouveau créé dans un plugin.

Il devient alors très intéressant d’utiliser cette API pour controler des comportements complémentaires qui seraient développés par des plugins, alors applicables de façon générique.

Article publié le 4 mars 2020, et actualisé en septembre 2021

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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);

Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Qui sont elles-meme des tableaux associatifs...

[2déprécié dès la fin de SPIP 3.0

[3à insérer par include_spip('action/editer_objet'); et include_spip('action/editer_liens');.... Les autres modules proposent des fonctions plutôt interfacées avec les _request( à des champs de formulaires du privé !


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 4 mars 2020, et actualisé en septembre 2021 .

Répondre à cet article