editer_liens.php
API d'édition de liens
Cette API gère la création, modification et suppressions de liens entre deux objets éditoriaux par l'intermédiaire de tables de liaison tel que spip_xx_liens.
L'unicité est assurée dans les fonctions sur le trio (id_x, objet, id_objet) par défaut, ce qui correspond à la déclaration de clé primaire.
Des rôles peuvent être déclarés pour des liaisons. À ce moment là, une colonne spécifique doit être présente dans la table de liens et l'unicité est alors assurée sur le quatuor (id_x, objet, id_objet, role) et la clé primaire adaptée en conséquence.
Table of Contents
Functions
- objet_associable() : array<string|int, mixed>|bool
- Teste l'existence de la table de liaison xxx_liens d'un objet
- objet_associer() : bool|int
- Associer un ou des objets à des objets listés
- objet_dissocier() : bool|int
- Dissocier un (ou des) objet(s) des objets listés
- objet_qualifier_liens() : bool|int
- Qualifier le lien entre un (ou des) objet(s) et des objets listés
- objet_trouver_liens() : array<string|int, mixed>
- Trouver les liens entre objets
- objet_optimiser_liens() : int
- Nettoyer les liens morts vers des objets qui n'existent plus
- objet_dupliquer_liens() : int
- Dupliquer tous les liens entrant ou sortants d'un objet vers un autre (meme type d'objet, mais id different) si $types est fourni, seuls les liens depuis/vers les types listes seront copies si $exclure_types est fourni, les liens depuis/vers les types listes seront ignores
- lien_ordonner() : mixed
- Reordonner les liens sur lesquels on est intervenus
- lien_triables() : mixed
- Une table de lien est-elle triable ? elle doit disposer d'un champ rang_lien pour cela
- lien_rang_where() : array<string|int, mixed>
- Fabriquer la condition where pour compter les rangs
Functions
objet_associable()
Teste l'existence de la table de liaison xxx_liens d'un objet
objet_associable(string $objet) : array<string|int, mixed>|bool
Parameters
- $objet : string
-
Objet à tester
Return values
array<string|int, mixed>|bool —- false si l'objet n'est pas associable.
- array(clé primaire, nom de la table de lien) si associable
objet_associer()
Associer un ou des objets à des objets listés
objet_associer(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed> $qualif = null ]) : bool|int
$objets_source
et $objets_lies
sont de la forme
array($objet=>$id_objets,...)
$id_objets
peut lui même être un scalaire ou un tableau pour une liste d'objets du même type
ou de la forme array("NOT", $id_objets)
pour une sélection par exclusion
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
On peut passer optionnellement une qualification du (des) lien(s) qui sera alors appliquée dans la foulée. En cas de lot de liens, c'est la même qualification qui est appliquée a tous
Parameters
- $objets_source : array<string|int, mixed>
- $objets_lies : array<string|int, mixed>|string
- $qualif : array<string|int, mixed> = null
Tags
Return values
bool|intobjet_dissocier()
Dissocier un (ou des) objet(s) des objets listés
objet_dissocier(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed>|null $cond = null ]) : bool|int
$objets_source
et $objets_lies
sont de la forme
array($objet=>$id_objets,...)
$id_objets
peut lui-même être un scalaire ou un tableau pour une liste d'objets du même type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet, $id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
S'il y a des rôles possibles entre les 2 objets, et qu'aucune condition sur la colonne du rôle n'est transmise, on ne supprime que les liens avec le rôle par défaut. Si on veut supprimer tous les rôles, il faut spécifier $cond => array('role' => '*')
Parameters
- $objets_source : array<string|int, mixed>
- $objets_lies : array<string|int, mixed>|string
- $cond : array<string|int, mixed>|null = null
-
Condition du where supplémentaires
À l'exception de l'index 'role' qui permet de sélectionner un rôle ou tous les rôles (*), en s'affranchissant du vrai nom de la colonne.
Tags
Return values
bool|intobjet_qualifier_liens()
Qualifier le lien entre un (ou des) objet(s) et des objets listés
objet_qualifier_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies, array<string|int, mixed> $qualif) : bool|int
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
Parameters
- $objets_source : array<string|int, mixed>
- $objets_lies : array<string|int, mixed>|string
- $qualif : array<string|int, mixed>
Tags
Return values
bool|intobjet_trouver_liens()
Trouver les liens entre objets
objet_trouver_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed>|null $cond = null ]) : array<string|int, mixed>
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
renvoie une liste de tableaux decrivant chaque lien dans lequel objet_source et objet_lie sont aussi affectes avec l'id de chaque par facilite ex : array( array('id_document'=>23,'objet'=>'article','id_objet'=>12,'vu'=>'oui', 'document'=>23,'article'=>12) )
Parameters
- $objets_source : array<string|int, mixed>
-
Couples (objets_source => identifiants) (objet qui a la table de lien)
- $objets_lies : array<string|int, mixed>|string
-
Couples (objets_lies => identifiants)
- $cond : array<string|int, mixed>|null = null
-
Condition du where supplémentaires
Return values
array<string|int, mixed> —Liste des trouvailles
objet_optimiser_liens()
Nettoyer les liens morts vers des objets qui n'existent plus
objet_optimiser_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies) : int
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
Parameters
- $objets_source : array<string|int, mixed>
- $objets_lies : array<string|int, mixed>|string
Return values
intobjet_dupliquer_liens()
Dupliquer tous les liens entrant ou sortants d'un objet vers un autre (meme type d'objet, mais id different) si $types est fourni, seuls les liens depuis/vers les types listes seront copies si $exclure_types est fourni, les liens depuis/vers les types listes seront ignores
objet_dupliquer_liens(string $objet, int $id_source, int $id_cible[, array<string|int, mixed> $types = null ][, array<string|int, mixed> $exclure_types = null ]) : int
Parameters
- $objet : string
- $id_source : int
- $id_cible : int
- $types : array<string|int, mixed> = null
- $exclure_types : array<string|int, mixed> = null
Return values
int —Nombre de liens copiés
lien_ordonner()
Reordonner les liens sur lesquels on est intervenus
lien_ordonner(string $objet_source, string $primary, string $table_lien, int $id, array<string|int, mixed>|string $objets) : mixed
Parameters
- $objet_source : string
- $primary : string
- $table_lien : string
- $id : int
- $objets : array<string|int, mixed>|string
lien_triables()
Une table de lien est-elle triable ? elle doit disposer d'un champ rang_lien pour cela
lien_triables(string $table_lien) : mixed
Parameters
- $table_lien : string
lien_rang_where()
Fabriquer la condition where pour compter les rangs
lien_rang_where(string $table_lien, string $primary, int|string|array<string|int, mixed> $id_source, string $objet, int|string|array<string|int, mixed> $id_objet[, array<string|int, mixed> $cond = [] ]) : array<string|int, mixed>
Parameters
- $table_lien : string
- $primary : string
- $id_source : int|string|array<string|int, mixed>
- $objet : string
- $id_objet : int|string|array<string|int, mixed>
- $cond : array<string|int, mixed> = []
Return values
array<string|int, mixed> —Liste des conditions