Fichier ecrire/action/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.

Source

Proposer une amélioration

Liste des fonctions

APIs

array | boolean objet_associable( string $objet )

Paramètres

  1. string $objet

    Objet à tester

Retour

  • array | boolean
    • false si l'objet n'est pas associable.
    • array(clé primaire, nom de la table de lien) si associable

API

Package

Proposer une amélioration

$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

boolean | integer objet_associer( array $objets_source , array | string $objets_lies , array $qualif = null )

Paramètres

  1. array $objets_source
  2. array | string $objets_lies
  3. array $qualif = null

Retour

  • boolean | integer

API

Package

Proposer une amélioration

$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' => '*')

boolean | integer objet_dissocier( array $objets_source , array | string $objets_lies , array | null $cond = null )

Paramètres

  1. array $objets_source
  2. array | string $objets_lies
  3. array | null $cond = 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.

Retour

  • boolean | integer

API

Package

Proposer une amélioration
integer objet_dupliquer_liens( string $objet , integer $id_source , integer $id_cible , array $types = null , array $exclure_types = null )

Paramètres

  1. string $objet
  2. integer $id_source
  3. integer $id_cible
  4. array $types = null
  5. array $exclure_types = null

Retour

  • integer

    Nombre de liens copiés

API

Package

Proposer une amélioration

$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

integer objet_optimiser_liens( array $objets_source , array | string $objets_lies )

Paramètres

  1. array $objets_source
  2. array | string $objets_lies

Retour

  • integer

API

Package

Proposer une amélioration

$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

boolean | integer objet_qualifier_liens( array $objets_source , array | string $objets_lies , array $qualif )

Paramètres

  1. array $objets_source
  2. array | string $objets_lies
  3. array $qualif

Retour

  • boolean | integer

API

Utilisé par

Package

Proposer une amélioration

$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) )

array objet_trouver_liens( array $objets_source , array | string $objets_lies , array | null $cond = null )

Paramètres

  1. array $objets_source

    Couples (objets_source => identifiants) (objet qui a la table de lien)

  2. array | string $objets_lies

    Couples (objets_lies => identifiants)

  3. array | null $cond = null

    Condition du where supplémentaires

Retour

  • array

    Liste des trouvailles

API

Package

Proposer une amélioration

Internes

$objets et de la forme array($objet=>$id_objets,...) un * pour $id,$objet,$id_objets permet de traiter par lot

On supprime tous les liens entre les objets indiqués par défaut, sauf s'il y a des rôles déclarés entre ces 2 objets, auquel cas on ne supprime que les liaisons avec le role déclaré par défaut si rien n'est précisé dans $cond. Il faut alors passer $cond=array('role'=>'*') pour supprimer tous les roles, ou array('role'=>'un_role') pour un role précis.

boolean | integer lien_delete( string $objet_source , string $primary , string $table_lien , integer $id , array $objets , array | null $cond = null )

Paramètres

  1. string $objet_source
  2. string $primary
  3. string $table_lien
  4. integer $id
  5. array $objets
  6. array | null $cond = null

    Conditions where par défaut. Un cas particulier est géré lorsque l'index 'role' est présent (ou absent)

Retour

  • boolean | integer

Package

Internal

Proposer une amélioration

$objets et de la forme array($objet=>$id_objets,...) un * pour $id,$objet,$id_objets permet de traiter par lot

Le tableau de condition peut avoir un index 'role' indiquant de chercher un rôle précis, ou * pour tous les roles (alors équivalent à l'absence de l'index)

array lien_find( string $objet_source , string $primary , string $table_lien , integer $id , array $objets , array | null $cond = null )

Paramètres

  1. string $objet_source
  2. string $primary
  3. string $table_lien
  4. integer $id
  5. array $objets
  6. array | null $cond = null

    Condition du where par défaut

    On peut passer un index 'role' pour sélectionner uniquement
    le role défini dedans (et '*' pour tous les rôles).

Retour

  • array

Package

Internal

Proposer une amélioration

$objets et de la forme array($objet=>$id_objets,...)

Retourne le nombre d'insertions réalisées

boolean | integer lien_insert( string $objet_source , string $primary , string $table_lien , integer $id , array $objets , array $qualif )

Paramètres

  1. string $objet_source

    Objet source de l'insertion (celui qui a la table de liaison)

  2. string $primary

    Nom de la clé primaire de cet objet

  3. string $table_lien

    Nom de la table de lien de cet objet

  4. integer $id

    Identifiant de l'objet sur lesquels on va insérer des liaisons

  5. array $objets

    Liste des liaisons à faire, de la forme array($objet=>$id_objets)

  6. array $qualif

    Liste des qualifications à appliquer (qui seront faites par lien_set()), dont on cherche un rôle à insérer également. Si l'objet dispose d'un champ rôle, on extrait des qualifications le rôle s'il est présent, sinon on applique le rôle par défaut.

Retour

  • boolean | integer

    Nombre d'insertions faites, false si échec.

Package

Internal

Proposer une amélioration

$objets et de la forme array($objet=>$id_objets,...) un * pour $id,$objet,$id_objets permet de traiter par lot

boolean | integer lien_optimise( string $objet_source , string $primary , string $table_lien , integer $id , array $objets )

Paramètres

  1. string $objet_source
  2. string $primary
  3. string $table_lien
  4. integer $id
  5. array $objets

Retour

  • boolean | integer

Package

Internal

Proposer une amélioration
void lien_ordonner( string $objet_source , string $primary , string $table_lien , integer $id , array | string $objets )

Paramètres

  1. string $objet_source
  2. string $primary
  3. string $table_lien
  4. integer $id
  5. array | string $objets

Package

Proposer une amélioration
void lien_propage_date_modif( string $objet , array | integer $ids )

Paramètres

  1. string $objet
  2. array | integer $ids

Package

Internal

Proposer une amélioration

$objets et de la forme array($objet=>$id_objets,...) un * pour $id,$objet,$id_objets permet de traiter par lot

exemple : $qualif = array('vu'=>'oui');

boolean | integer lien_set( string $objet_source , string $primary , string $table_lien , integer $id , array $objets , array $qualif )

Paramètres

  1. string $objet_source

    Objet source de l'insertion (celui qui a la table de liaison)

  2. string $primary

    Nom de la clé primaire de cet objet

  3. string $table_lien

    Nom de la table de lien de cet objet

  4. integer $id

    Identifiant de l'objet sur lesquels on va insérer des liaisons

  5. array $objets

    Liste des liaisons à faire, de la forme array($objet=>$id_objets)

  6. array $qualif

    Liste des qualifications à appliquer.

    Si l'objet dispose d'un champ rôle, on extrait des qualifications
    le rôle s'il est présent, sinon on applique les qualifications
    sur le rôle par défaut.

Retour

  • boolean | integer

    Nombre de modifications faites, false si échec.

Package

Internal

Proposer une amélioration
array lien_where( string $primary , integer | string | array $id_source , string $objet , integer | string | array $id_objet , array $cond = array() )

Paramètres

  1. string $primary

    Nom de la clé primaire

  2. integer | string | array $id_source

    Identifiant de la clé primaire

  3. string $objet

    Nom de l'objet lié

  4. integer | string | array $id_objet

    Identifiant de l'objet lié

  5. array $cond = array()

    Conditions par défaut

Retour

  • array

    Liste des conditions

Package

Internal

Proposer une amélioration

$objets_source et $objets_lies 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)

on peut passer optionnellement une qualification du (des) lien(s) qui sera alors appliquee dans la foulee. En cas de lot de liens, c'est la meme qualification qui est appliquee a tous

boolean | integer | array objet_traiter_liaisons( string $operation , array $objets_source , array $objets_lies , null | array $set = null )

Paramètres

  1. string $operation

    Nom de la fonction PHP qui traitera l'opération

  2. array $objets_source

    Liste de ou des objets source De la forme array($objet=>$id_objets,...), où $id_objets peut lui même être un scalaire ou un tableau pour une liste d'objets du même type

  3. array $objets_lies

    Liste de ou des objets liés De la forme array($objet=>$id_objets,...), où $id_objets peut lui même être un scalaire ou un tableau pour une liste d'objets du même type

  4. null | array $set = null

    Liste de coupels champs valeur, soit array(champs => valeur) En fonction des opérations il peut servir à différentes utilisations

Retour

  • boolean | integer | array

Package

Internal

Proposer une amélioration