Les concepts
L’archivage
L’archivage est une action destinée à 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é. La différence avec d’autres plugins comme Archive est que l’action d’archivage ne modifie pas le statut de l’objet concerné. Un objet archivé peut-être restauré dans son état initial en une action appelée désarchivage.
Étant donné que certains objets sont, comme les rubriques, des conteneurs d’autres objets du même type ou d’un type différent, les actions d’archivage ou de désarchivage sont propagées automatiquement à l’ensemble des enfants de la branche.
Les objets archivables
Le plugin peut fonctionner avec tout type d’objet SPIP, c’est-à-dire un enregistrement d’une table déclarée par le pipeline declarer_tables_objets_sql
. Par défaut, le plugin peut s’appliquer à tous les types d’objet déclarés par le pipeline sus-mentionnés.
Ces types d’objet et leurs tables SQL associées sont qualifiés de archivables. Il est possible de réduire cette liste en utilisant le pipeline archivage_exclusions_tables
ou la constante _ARCHIVAGE_TABLES_EXCLUES
.
Par défaut, les objets archivables ne sont pas d’emblée autorisés à l’archivage : un paramétrage utilisateur est nécessaire pour choisir parmi les objets archivables ceux qui deviendront effectivement des objets autorisés à l’archivage.
Le contexte d’archivage
Le contexte d’archivage est un ensemble de données qui informent sur l’archivage d’un objet. Il est composé:
- d’un indicateur d’état d’archivage qui prend les valeurs:
- archivé,
- non archivé, sachant que cet état peut être précisé pour distinguer un objet « hors archive » d’un objet «désarchivé» si la consignation du désarchivage est activée
- d’une date, celle de d’archivage ou de désarchivage;
- de l’éventuel objet racine sur lequel l’action a été déclenchée, et ce uniquement pour les enfants de ladite racine;
- et d’un motif facultatif, expliquant la raison de l’archivage voire du désarchivage.
Le contexte d’archivage est donc matérialisé par plusieurs champs qui sont ajoutés à chaque table archivable. Le plugin Archivage de Contenus ajoutent ces champs lors de son installation pour les tables archivables par défaut. Si un plugin utilisateur veut utiliser l’archivage sur un nouveau type d’objet, il doit lui-même ajouter les champs du contexte d’archivage à son nouveau type d’objet via l’API fournie par le plugin Archivage de Contenus.
Les actions relatives à l’archivage
L’action de base est l’archivage d’un objet non archivé. Cette action s’accompagne toujours de la mise à jour de la date du contexte d’archivage et, le cas échéant pour les enfants, de la consignation de l’objet racine sur lequel l’archivage a eu lieu.
En outre, si le motif d’archivage est utilisé, ce motif est rempli automatiquement par un motif par défaut qui peut être modifié ultérieurement.
Le désarchivage, appliqué uniquement à un objet archivé, permet de rétablir le comportement normal de l’objet (affichage public, affichage privé et fonctionnement) et de ses éventuels enfants. Néanmoins, si la consignation du désarchivage est activée par paramétrage, l’objet obtenu est considéré comme «désarchivé».
De même que pour l’archivage, si le motif est utilisé, ce motif est aussi rempli automatiquement et peut aussi être modifié à posteriori via l’action d’explication. Cette option n’est possible que si la consignation du désarchivage est activée.
L’explication est l’action qui permet de modifier le motif d’archivage ou de désarchivage. Elle n’est accessible que si le paramétrage du plugin autorise l’utilisation du motif. Cette action n’est jamais propagée aux enfants.
Le motif est choisi parmi une liste prédéfinie fournie par le plugin et qui peut être complétée ou amendée en utilisant le pipeline archivage_liste_motifs
.
Dans le cas où la consignation du désarchivage est activée, il est possible de rétablir l’objet concerné dans l’état initial « hors archive » : c’est l’action d’effacement des données d’archivage qui s’applique uniquement aux objets désarchivés et, le cas échéant, à leurs enfants.
Le fonctionnement du plugin peut être résumé dans le graphe état-transition qui suit.

La gestion des branches
Toutes les actions à l’exception de l’explication entrainent automatiquement la propagation aux enfants de l’objet concerné. Ce mécanisme n’est pas débrayable. Néanmoins, il est possible de le contourner quelque peu en autorisant, par paramétrage, les enfants à vivre leur vie d’après indépendamment de celle de la racine initiatrice.
Ainsi, un enfant archivé à la suite d’un archivage de sa racine pourra être désarchivé indépendamment avec ses éventuels enfants. Tout lien d’archivage avec son ancienne racine est alors rompu et toute action future sur son ancienne racine sera inopérante sur cet enfant.
Le paramétrage du plugin
Pour une utilisation simplifiée, il suffit de choisir les types de contenus que l’on souhaite pouvoir archiver sur la page de configuration :
Si on souhaite aller plus loin dans l’utilisation du plugin on peut paramétrer des usages avancés, à savoir, dans l’ordre du formulaire :
- Permettre de modifier l’état d’archivage d’une sous-branche d’une branche déjà archivée (ou désarchivée)
- Consigner le désarchivage, les contenus ainsi désarchivés ne font plus partis des archives (au sens des boucles SPIP) mais une notice est inscrite sur leur page propre.
- Utiliser les motifs pour expliquer l’archivage (ou le désarchivage si la consignation est activée).
Par défaut, ces possibilités sont désactivées.
L’utilisation au quotidien
Archiver des contenus
Pour archiver un contenu dont le type est autorisé à l’archivage il suffit de cliquer sur le bouton «Archiver» présent dans la boite d’informations de sa page. En retour, le contenu verra apparaitre une notice d’archivage avec sa date et éventuellement un motif par défaut si celui-ci est utilisé. Le bouton «Archiver» laisse place au bouton «Désarchiver».
Désarchiver un contenu archivé
Il suffit d’utiliser le bouton «Désarchiver» présent dans la boite d’informations de la page dudit contenu. Le contenu ne sera plus archivé et le bouton «Archiver» réapparait. Si la consignation du désarchivage est activée, une notice remplace celle de l’archivage.
Changer le motif d’archivage
Quand l’option d’utilisation du motif est activée, un bouton «Modifier le motif» apparait dans la boite de notice sur l’archivage incluse dans la fiche de chaque objet. Ce bouton ouvre un formulaire de changement de motif affichant la liste des motifs disponibles pour le type d’objet et l’état d’archivage courant.

Le suivi des archives
L’entrée Suivi de l’archivage du menu Publication propose une page listant, type de contenu par type de contenu les archives. Si la consignation du désarchivage est activée, une autre page permet de lister les contenus désarchivés.
En outre, les contenus acceptant des enfants comme les rubriques, affichent sur leur page la liste de leurs enfants archivés.
Pour aller plus loin...
Si vous voulez approfondir votre connaissance du plugin, vous pouvez consulter le guide de conception inclus dans le code du plugin ainsi que l’article Archivage de Contenus, fonctionnement avancé.
Discussions by date of activity
5 discussions
Bonjour,
Je viens d’installer le plugin Archivage-de-Contenus, sur spip 4.4.4...
J’ai cette erreur lorsque je vais sur une rubrique quelque soit la rubrique :
J’ai vidé le cache, mais rien n’y fait... Et la rubrique reste visible lorsque j’essaie d’appliquer l’archivage.
Reply to this message
hello,
J’utilise ce plugin pour la première fois. C’est top, les éléments archivés sont automatiquement exclus des boucles sur le site public.
Dans la partie privée je ne vois pas comment distinguer les éléments archivés des autres dans les listes (d’articles par exemple).
Mais comme l’archive n’est pas un statut comme “brouillon” ou “poubelle” je comprend que la puce carrée ne change pas de couleur si l’élément est archivé.
Merci.
Hello,
Le fait d’exclure les objets archivés des boucles fonctionnent dans le public et dans le privé. Aussi, pour visualiser les objets archivés, il faut aller dans la page Suivi de l’archivage (entrée du menu Publication). Là tu as tous les objets archivés par type et tu peux aussi faire des actions dessus.
Reply to this message
ce sera peut-être utile...
le plugin est installé avec le squelette SC, mais je ne m’en sers pas pour l’instant
par contre, il provoque un bug dans l’actualisation spip2spip
dans ../prive/objets/infos/objet.html plugins/auto/archivage/v0.5.5/inc/archivage.php
avec le message
Oui ça n’a pas l’air d’être normal. Quand tu actives le plugin il insère dans les objets que tu autorises à l’archive un bouton archiver.
Peux-tu me dire si tu as configuré l’archivage sur le type d’objet concerné ou pas ?
Alors j’ai répondu trop vite. Le problème est dans le formulaire instituer inclus dans le bloc d’infos qui doit être bloqué si un objet est archivé. La fonction
archivage_objet_est_autorise
est appelée pour vérifier justement si l’objet est archivé.Ce que je ne comprends pas c’est quoi cet objet
spip2spip
? Pourquoi on a un formulaire instituer sur cet objet qui a priori n’en est pas un ?Bon j’ai fait une petite correction dans le plugin pour éviter cette erreur même si je pense que le traitement devrait être dans spip. La version 0.6.0 sera disponible dans quelques minutes avec la correction.
Si tu peux me faire un retour stp.
Reply to this message
Hello _Eric_
j’avoue que je découvre , mais actuellement j’utilise
ciarchive : statut archivé pour les articles
il existe egalement le plugin archive
plus le tien, du coup, je sai pas trop lequel mettre en service
qu’est ce qui les différences et pourquoi trois qui semble faire la même chose
Hello,
Il y a deux grosses différences.
D’abord le plugin Archivage de Contenus n’utilise pas le statut pour définir l’état d’archivage d’un objet. Cela permet de préserver le vrai statut de l’objet si besoin de le restaurer. C’est comme si tu mettais l’objet dans une boite d’archive.
La deuxième différence c’est que ce plugin peut fonctionner avec tous les objets SPIP et pas uniquement les articles et qu’il gère les conteneurs d’objet comme la rubrique. Il y a aussi d’autre notion mais qui sont moins significatives.
Les articles et le pdf inclus dans le plugin te donnent toutes les informations utiles sinon.
Merci pour les infos
je vais donc l’installer, d’autant plus qu’il est sur GIT donc en partage
Reply to this message
Bonjour,
Merci pour le plugin... J’ai juste une petite question... Dans votre explication, vous signalez que les objets enfants sont automatiquement archivés si l’objet parent est archivé ?...
Est-ce que cela s’applique à l’objet événement du plugin Agenda ? Et à l’inverse pourrait-on imaginer d’archiver l’article (qui contient les événements) en fonction de la date de dépassement d’un événement ?
Eric.
Hello,
Il n’y pas de relation de parenté entre un article et un évènement d’après ce que je vois dans la déclaration que fait le plugin Agenda des évènements. Donc il ne peut pas y avoir de propagation automatique de l’archivage d’un article vers les évènements qui lui sont rattachés.
Néanmoins, il existe un pipeline
post_archivage_objet
qui pourrait être utilisé pour le faire dans le cas où on archiverait un article possédant des évènements.L’inverse, n’est pas non plus possible de façon générique dans le plugin actuellement. Ca serait d’ailleurs plus complexe car il faudrait un CRON pour détecter régulièrement si la date des évènements inclus dans un article est dépassée. Ensuite, il pourrait être envisageable en utilisant l’api du plugin d’archiver automatiquement l’article en question.
Que ce soit le premier ou le deuxième sujet cela demande de coder ces actions dans un autre plugin utilisant Archivage de Contenus, mais c’est faisable.
Merci pour le retour Eric,
C’est en partie ce qu’il me semblait... Mais je n’ai pas les compétences pour entreprendre un tel chantier.
Peut-être qu’une personne motivée et cherchant à appliquer une telle logique avec le plugin agenda ou une logique s’y approchant (effacer les événements passés de plus de x jours) apportera un peu plus de bonheurs aux spipiens et spipiennes :-)
Eric
Toujours dans le même ordre d’idée... Est-ce que le plugin archive les documents liés aux articles ?
En fait c’est la même réponse que pour les évènements et les articles. Tu n’as pas de lien de parenté entre un document et un article, juste une éventuelle association. Donc si dans la configuration du plugin tu autorises les articles et les documents à l’archivage tu pourras le faire mais indépendamment l’un de l’autre.
Le fait d’archiver un article associé à des documents n’archivera pas les documents liés. C’est d’ailleurs logique car ils peuvent être liés à d’autres articles. Par contre, tu peux unitairement archiver un document donné.
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
