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 objet searchDoc 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.

×