Documentation du code de SPIP et de ses plugins

SPIP

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
used-by
action_ajouter_lien_dist()
used-by
auteur_associer()
Return values
bool|int

objet_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
used-by
auteur_dissocier()
used-by
action_supprimer_lien_dist()
Return values
bool|int

objet_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
used-by
auteur_qualifier()
Return values
bool|int

objet_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
int

objet_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


        
On this page

Search results