Le concept d’archivage mis en place par le plugin Archivage de Contenus implique de ranger des objets SPIP dans une zone de stockage virtuelle pour les extraire de la publication (espace public) voire des différents affichages standard de l’espace privé.
Gérer une telle zone nécessite de changer le comportements naturels des objets concernés d’une manière générique. Création, modification, changement de statut et déplacement d’un objet sont les actions qui devraient être impactées par l’archivage.
Deux principaux types de changement sont envisageables pour les objets concernés par l’archivage:
- Interdire les actions qui pourraient engendrer des incohérences avec l’archivage
- Ajouter des traitements liés à l’archivage suite au déclenchement de l’une des actions précitées
Mais au préalable, il semble que l’api objet de SPIP ne distingue pas clairement les actions, en particulier, pour le déplacement et le changement de statut qui sont toutes deux incluses dans instituer. Et d’ailleurs il n’y a pas de suppression car on utilise le changement de statut pour cela.
Je me demande si on aurait pas intérêt à mieux clarifier les actions de base sur les objets (un peu comme un CRUD étendu ou modifié).
Ensuite, pour le point 1, la façon évidente d’interdire une action sur un objet est d’utiliser l’api d’autorisation. Le problème c’est que l’on ne sait pas reconnaitre l’autorisation de création ou de modification voire de déplacement : ni par une déclaration ni par le nom.
Une déclaration incluse dans celle des objets spip serait une réponse mais il faudrait pour cela connaitre la liste et l’identifiant des actions sur les objets.
Pour le point 2, c’est les pipelines pre_edition et post_edition qui devraient être utilisés mais il faudrait pour cela vérifier qu’ils sont bien appelés systématiquement pour chaque action précitée et dans un contexte cohérent pour chaque type d’objet.
L’idée de ce fil c’est de discuter de ces sujets pour voir si il y aurait un intérêt de créer un ou plusieurs tickets à inclure dans une prochaine roadmap de spip.