Version 3 — Novembre 2021 — JLuc
Dans SPIP 4 et les plugins dist, on trouve 8 occurrences d’une jointure explicite à 3 tables : 7 font la même jointure du document vers la table des types de document, et 1 tente une jointure des documents vers l’article courant.
Accéder au type d’un document
Dans modeles/document_case.html
!
<BOUCLE_docslies(DOCUMENTS documents_liens types_documents){id_document}{id_objet}{objet}{statut?}>
Filtrer sur l’article auquel est associé un document
Mauvais exemple dans inclure/documents.html ça marche pas bien : https://git.spip.net/spip/dist/issues/4834
<BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article?}{objet?}{id_objet?} {media!=image} {texte=''} {vu=non}>
Des documents vers leurs types
Visiblement ces liaisons peuvent se faire avec 2 tables seulement.
Dans modeles/audio_emb.html
:
<BOUCLE_ext(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout}>
Des MESSAGES vers leurs auteurs
Dans organiseur/prive/objets/liste/messages-recus.html :
<BOUCLE_compte_non_lus(MESSAGES auteurs){destinataire?#ENV{destinataire}}{id_auteur?}{type!=pb}{type?}{where?}{statut?}{recherche?}{non_lu}>[(#NOM|vide)]</BOUCLE_compte_non_lus>
Dans organiseur/prive/rss on trouve
<BOUCLE_A(messages auteurs_liens){doublons M}{auteurs_liens.id_auteur}>
mais aussitôt après :
<BOUCLE_RSS(messages auteurs){!par date_heure}{!doublons M}{0,10}>
puis
<BOUCLE_message_rv(messages auteurs_messages){lang_select=non}{par date_heure}{inverse}{statut="publie"}{rv=oui}{auteurs_messages.id_auteur=#ID_AUTEUR}>
On trouve aussi plusieurs occurrences de cette dernière jointure dans
spip/prive/ical_prive.html, qui présente en prime une intéressante inversion de inverse l’ordre d’apparition des tables :
<BOUCLE_message_n_a(AUTEURS auteurs_messages){lang_select=non}{id_message}>
Modifications opérées par un auteur
Dans prive/rss/revisions.html :
<BOUCLE_RSS(VERSIONS auteurs){id_version >1}{!par date}{0,10}{id_secteur ?}{id_auteur ?}>
Liste de plugins
Dans svp/formulaires/inc-admin_plugin.html :
<BOUCLE_plugins(PAQUETS plugins){tout}{par multi nom, paquets.prefixe}{!par constante, actif}{id_depot=0}{actif ?}{constante ?IN #ENV{constante}}>
Dépot d’un plugins
Dans svp/prive/squelettes/hierarchie.html :
<BOUCLE_plugin(PLUGINS depots) {id_plugin}{0, 1}>
Je ne liste que des jointures pas déjà vues et que sur les plugins un peu actifs ou courants.
Plugin coordonnées
<BOUCLE_add(ADRESSES adresses_liens auteurs){id_auteur}>
<BOUCLE_mail(EMAILS emails_liens auteurs){id_auteur=#ENV{id_auteur}}>
<BOUCLE_num(NUMEROS numeros_liens auteurs){id_auteur}>
Plugin emballe_medias_collections
Cette boucle a besoin d’une jointure explicite car elle a des critères sur les documents ?
<BOUCLE_medias_collection_ajouter(ARTICLES spip_documents_liens spip_documents){id_auteur=#SESSION{id_auteur}}{id_secteur?}{documents.media == #ENV{document_media,.*}}{!par maj}{pagination #ENV{pagination,9}}{doublons medias_ajoutes}>
Je ne liste que des jointures pas déjà vues. Il faudrait vérifier si les squelettes sont compatibles SPIP 4.
Ahuntsic : documents vers leur article
C’est le même besoin que pour https://git.spip.net/spip/dist/issues/4834
[(#REM) Si un seul document est joint a l'article, et si le texte est vide,
on incruste automatiquement ce document
]
<BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article} {mode=document}{texte=''}{extension !IN gif,jpg,png} {vu=non}>
Ya la même boucle vers la rubrique.
Collezion : MOTs vers ARTICLES
C’est dans une boucle GROUPE. Ça semble présenter des motclés, mais lesquels ?
De toute façon c’est pour un vieux SPIP.
<BOUCLE_mot(MOTS spip_mots_articles spip_articles) {articles.statut = publie} {fusion mots.id_mot}{id_groupe}>
<li class="#GET{li}"><a href="#URL_MOT">#TITRE</a></li>
</BOUCLE_mot>