Projet IDAPA

Accueil > Ressources > SPIP > Gestion des articles dans SPIP

Gestion des articles dans SPIP

mardi 13 octobre 2009, par DURAND, HAINIGUE

Nous avons choisis d’écrire un article sur la table « spip-articles » afin de mieux comprendre son fonctionnement. Cette table contient 29 champs avec des caractéristiques différentes.

La clé primaire de cette table est id_article, elle permet d’identifier de manière unique un enregistrement dans une table. Par exemple, grâce à n’importe quel « id_article » on peut retrouver tous les champs qui correspondent. Certains champs sont en lien avec d’autres tables, par exemple, pour « id_rubrique » le numéro 5 du premier enregistrement correspond à « Datamining avec R », information recueilli dans la table « spip-rubrique ». Ou encore, grâce à « id_article » on peut retrouver le nom, adresse mail, ou toutes autres renseignements sur l’auteur de l’article en question.

Lors de la rédaction d’un nouvel article, nous pouvons constater que certains champs sont facultatifs, ce qui équivaut à avoir certains champs vides ou pas entièrement renseignés tels que le chapo, les descriptifs.

Nous allons maintenant analyser quelques champs. Le champ « Titre » est de type text, il permet de donner un titre à un article qui peut contenir des lettres, des chiffres ou des caractères spéciaux. Le champ « Date_modif » est de type date time, c’est à dire qu’il affiche la date et l’heure de la dernière modification de l’article. Le champ « Statut » est de type varchar(10), ce dernier nous renseigne sur la publication ou non de l’article. Le 10 correspond au nombre de caractère maximal autorisé. Le champ « id_rubrique » est de type bigint, c’est à dire qu’il correspond à un très grand entier et qu’il permet également d’avoir des négatifs.

Lors de la parution d’un article, il est impossible de déclarer des auteurs supplémentaires à celui identifié sur le site. Ce soucis est dû au fonctionnement de spip. En effet, seuls les administrateurs ont le droit d’ajouter un auteur supplémentaire à un article. Un rédacteur ne peut pas le faire. De même, pour les administrateurs restreints qui gèrent les différentes rubriques. Ceci est dû au fait que les administrateurs restreints peuvent être identifié a partir du lien entre auteurs et rubriques mais cette procédure est compliqué à réaliser pour la base de données. Dans "spip_auteurs" il nous est possible de différentier les administrateurs des autres grâce au champ "statut", celui-ci étant "0minirezo". Les administrateurs restreints et les rédacteurs ayant le même statut, celui-ci étant "1comite".
Plus d’informations sur ce site : http://labor-liber.org/fr/spip/presentation/all#auteurs_redacteur_administrateur_restreint

Lors de la création d’un article, il se crée des nouveaux enregistrements dans certaines tables de la base de données. Par exemple, dans "spip_rubriques" lié à "spip_article" par la clé "id-rubrique", il se crée un nouvel enregistrement qui décrit la rubrique dans laquelle l’article va être classé. Ou encore, dans "spip_versions" lié à "spip_articles" par la clé "id-version", il se crée un nouvel enregistrement qui décrit la version dans laquelle l’article sera publié. Un nouvel enregistrement se fait également dans la table "spip_auteurs_articles", celui-ci se fait à partir de la clé primaire "id_article". A partir de "spip_auteurs_articles" et la concaténation de clé primaire et de "id_auteur" se crée un autre enregistrement dans "spip_auteurs".

A présent , nous allons vous fournir quelques explications pour le schéma UML ci-joint. Les traits reliant deux rectangles ou un rectangle et un rond représente les liens existants entres ces deux tables. Comme nous pouvons le constater les tables "Articles" , "Auteurs" et "Auteurs Articles" sont reliés par l’article en lui même. Le rond nommé "Article" ne représente pas une table réelle. Les " * " signifient qu’il peut exister plusieurs liens pour cette table, par exemple un auteur peut l’être pour plusieurs articles , comme un article peut avoir plusieurs auteurs. En recvanche le " 1 " signifie qu’il ne peut exister qu’un seul et unique lien entre les deux tables reliées, ici un article ne peut être classé que dans une seule rubrique mais une rubrique peut contenir plusieurs articles .