17.8.1.8 Recherche des relations d'un document

Pour trouver les documents qui sont lié à un autre, il faut utiliser la classe DocRel. La méthode DocRel::getIRelations() donne la liste des documents liés vers un document.

include_once("FDL/Class.Doc.php");
$docrelation=new DocRel();
$doc=new_doc("", 5835 , true);
 
$docrelation=new DocRel($doc->initid);
 
$toMeRelation=$docrelation->getIRelations();
$fromMeRelation=$docrelation->getRelations();
 
print "\n# --------- Relation vers moi\n";
print_r($toMeRelation);
print "\n# --------- Relation depuis moi\n";
print_r($fromMeRelation);

La méthode DocRel::getIRelations() retourne les caractéristiques des documents liés.

  • sinitid : identifiant initial source (celui qui pointe vers la cible),
  • cinitid : identifiant initial cible (la cible pointé par la source),
  • stitle : titre de la source,
  • ctitle : titre de la cible,
  • sicon : icone de la source,
  • cicon : icone de la cible,
  • type : type de lien (nom de l'attribut ayant établi le lien),
  • doctype : doctype du document source.

Résultat :

    # --------- Relation vers moi
    Array
    (
        [0] => Array
            (
                ["sinitid"] => 5973
                ["cinitid"] => 5835
                ["ctitle"] => "Dogue Robert"
                ["cicon"] => "ugarde.png"
                ["stitle"] => "Théodor"
                ["sicon"] => "animal.png"
                ["type"] => "an_gardien"
                ["doctype"] => "F"
            )
        [1] => Array
            (
                ["sinitid"] => 5835
                ["cinitid"] => 5835
                ["ctitle"] => "Dogue Robert"
                ["cicon"] => "ugarde.png"
                ["stitle"] => "Dogue Robert"
                ["sicon"] => "ugarde.png"
                ["type"] => "us_meid"
                ["doctype"] => "F"
            )
    )
 
    # --------- Relation depuis moi
    Array
    (
        [0] => Array
            (
                ["sinitid"] => 5835
                ["cinitid"] => 5830
                ["ctitle"] => "Surveillants"
                ["cicon"] => "igroup.png"
                ["stitle"] => "Dogue Robert"
                ["sicon"] => "ugarde.png"
                ["type"] => "us_idgroup"
                ["doctype"] => "F"
            )
        [1] => Array
            (
                ["sinitid"] => 5835
                ["cinitid"] => 1010
                ["ctitle"] => "Utilisateurs"
                ["cicon"] => "igroup.png"
                ["stitle"] => "Dogue Robert"
                ["sicon"] => "ugarde.png"
                ["type"] => "us_idgroup"
                ["doctype"] => "F"
            )
        [2] => Array
            (
                ["sinitid"] => 5835
                ["cinitid"] => 5832
                ["ctitle"] => "Gardien surveillant"
                ["cicon"] => "role.png"
                ["stitle"] => "Dogue Robert"
                ["sicon"] => "ugarde.png"
                ["type"] => "us_roles"
                ["doctype"] => "F"
            )
 

Pour exploiter les résultats, il est possible d'utiliser un objet DocumentList.

$ids=array_map(
    function ($r) {
        return $r["sinitid"];
    },
    $toMeRelation
);
$dl=new DocumentList();
$dl->addDocumentIdentifiers($ids);
/**
 * @var Doc $doc
 */
foreach ($dl as $doc) {
    printf("%s %s '%d'\n", $doc->getFamilyDocument()->getTitle(), $doc->getTitle(), $doc->id);
}

Résultat :

Gardien Dogue Robert '5835'
animal Théodor '5973'

L'objet $dl contient alors les documents pointant vers la cible.

×