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.