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.