17.8.1.4 Recherche de document depuis leur identifiant
Si vous disposez d'une liste d'identifiant de document, il n'est pas conseillé de réaliser une boucle avec l'appel au constructeur new_doc car cela se révèle lent et consommateur en mémoire. Il est conseillé dans ce cas d'utiliser l'itérateur de document.
$dl=new DocumentList(); $dl->addDocumentIdentifiers(array(1112, 1110, 1120, 2034)); foreach ($dl as $fam) { print $fam->getTitle()."\n"; }
La méthode DocumentList::addDocumentIdentifiers()
permet de renseigner la
liste des identifiants de document.
Si dans la liste un ou plusieurs identifiant n'existe pas alors l'itérateur ne les retourne pas. Dans ce cas le nombre de documents retourné est inférieur au nombre d'identifiants donnés.
Par défaut seuls les document que l'utilisateur a le droit de voir sont retournés.
Si vous voulez affiner les critères de recherche vous pouvez le faire en utilisant la recherche stockée dans l'iterateur.
$dl=new DocumentList(); $dl->addDocumentIdentifiers(array(1180, 3852, 3853)); $dl->getSearchDocument()->addFilter("title ~ 'Doe'"); $dl->getSearchDocument()->overrideViewControl();
Cela ne retournera que les documents dont le titre contient Doe parmi les
trois documents donnés sans tenir compte des droits de visibilités. Il est aussi
possible d'utiliser la fonction de callback pour l'appliquer à l'ensemble
de la liste (voir DocumentList::listMap()
).