13.13.14 SearchDoc::excludeConfidential()
Cette méthode permet d'exclure les documents marqués comme confidentiel.
13.13.14.1 Description
bool excludeConfidential ( bool $exclude = true )
Il est possible de marquer des documents comme confidentiels ceux-ci sont alors
trouvés dans les recherches mais ne sont pas consultables si l'utilisateur n'en
a pas le droit. Cette méthode permet d'exclure ces documents si l'utilisateur
n'a pas le droit confidential
sur les documents recherchés.
13.13.14.1.1 Avertissements
Si la recherche est faite avec l'utilisateur "admin" cette méthode est sans effet car "admin" a tous les droits.
Par défaut, la méthode ::search()
retourne les documents
confidentiels, même ceux auxquels l'utilisateur n'a pas le droit confidential
.
13.13.14.2 Liste des paramètres
- (bool)
exclude
(valeur par défaut :true
) - Si la valeur est à
true
alors les documents confidentiels sont exclus, si la valeur est àfalse
ils sont inclus. Un objetsearchDoc
les inclus par défaut.
13.13.14.3 Valeur de retour
void
13.13.14.4 Erreurs / Exceptions
Aucun.
13.13.14.5 Historique
Aucun.
13.13.14.6 Exemples
13.13.14.6.1 Recherche de tous les documents accessibles
Cette exemple retourne les documents accessibles :
- les document non confidentiels
- les document confidentiels où l'utilisateur possède les privilèges suffisants.
$searchDoc = new SearchDoc('', ''); $searchDoc->setObjectReturn(); $searchDoc->excludeConfidential(true); $searchDoc->search(); $s=$searchDoc->getSearchInfo(); print_r($s);
Résultat :
Array ( [count] => 1631
[query] => SELECT docread.id, owner, title, confidential, ... FROM docread WHERE (docread.archiveid IS NULL) AND (docread.doctype != 'Z') AND (docread.doctype != 'T') AND (docread.locked != -1) AND (confidential IS NULL OR hasaprivilege('{2,11}', profid,1024)) AND (views && '{2,0,11}') ORDER BY title LIMIT ALL OFFSET 0;
[error] => [error] => [delay] => 0.042s )
13.13.14.6.2 Recherche de tous les documents visibles y compris les confidentiels
$searchDoc = new SearchDoc('', ''); $searchDoc->setObjectReturn(); $searchDoc->excludeConfidential(false); $searchDoc->search(); $searchInfo=$searchDoc->getSearchInfo(); print_r($searchInfo); $documentList=searchDoc->getDocumentList(); foreach ($documentList as $doc) { if ($doc->isConfidential()) { printf("Confidential : %d) %s\n", $doc->id, $doc->getTitle()); } }
Résultat :
Array ( [count] => 1634
[query] => SELECT docread.id, owner, title, confidential, ... FROM docread WHERE (docread.archiveid IS NULL) AND (docread.doctype != 'Z') AND (docread.doctype != 'T') AND (docread.locked != -1) AND (views && '{2,0,11}') ORDER BY title LIMIT ALL OFFSET 0;
[error] => [delay] => 0.041s )
Confidential : 1421) document confidentiel Confidential : 1419) document confidentiel Confidential : 1420) document confidentiel
13.13.14.6.3 Recherche de tous les documents confidentiels
$searchDoc = new SearchDoc('', ''); $searchDoc->setObjectReturn(); $searchDoc->addFilter("confidential > 0"); $searchDoc->search(); print_r($searchDoc->getSearchInfo());
Résultat :
Array ( [count] => 3
[query] => SELECT docread.id, owner, title, confidential, ... FROM docread WHERE (docread.archiveid IS NULL) AND (docread.doctype != 'Z') AND (docread.doctype != 'T') AND (docread.locked != -1) AND (confidential > 0) AND (views && '{2,0,11}') ORDER BY title LIMIT ALL OFFSET 0;
[error] => [error] => [delay] => 0.006s )
13.13.14.7 Notes
La méthode Doc::getTitle()
retourne "Document confidentiel"
lorsque l'utilisateur courant n'a pas les privilèges suffisants pour accéder au
document.
13.13.14.8 Voir aussi
Le chapitre de sécurité avancé sur la recherche des confidentiels.