17.8.1.7 Recherche sur les propriétés du document

17.8.1.7.1 Recherche et révision

Par défaut seule la dernière révision du document est retournée. Pour chercher sur l'ensemble des révisions, il faut mettre la propriété latest a false.

$s=new SearchDoc(getDbAccess(), $familyId);
$s->setObjectReturn(true);
$s->latest=false; // toutes les révisions

Si la propriété locked = -1, cela indique que le document est figé.

17.8.1.7.2 Recherche sur les propriétés

Cet exemple montre la recherche de document par le titre. Ici, tout type de document est retourné si son titre contient 'jean' en majuscule ou minuscule. Les opérateurs utilisables sont les opérateurs SQL de PostgreSQL.

$nom="jean";
$s=new SearchDoc();// famid : toute famille
$s->addFilter("title ~* '%s'",$nom); // titre contient jean 
$s->setObjectReturn();
$dl=$s->search()->getDocumentList();
 
foreach ($dl as $k=>$doc)
    print "$k)".$doc->getTitle()."\n";
}

Dans la cas où on recherche une valeurs dans n'importe quel attribut du document, on utilisera la propriété svalues. Cet attribut contient la concaténation des valeurs des autres attributs séparés par le caractère £.

$searchExpression='myWord';
$s=new SearchDoc();// famid : toute famille
$s->addFilter("svalues ~* '%s'", $searchExpression); 

17.8.1.7.3 Recherche sur les états d'un document lié à un cycle de vie

La recherche des documents en fonction de leur activité ou de leur état est faite en filtrant sur la propriété state. La clef correspondante est l'identifiant indiqué dans les propriétés e1 et e2 du cycle.

La recherche suivant l'activité est forcément effectuée sur les dernières révisions.

/**
 * @var WDoc $wdoc
 */
$wdoc=new_doc("","ZOO_CYCLEDA" ); // Cycle sur les demandes d'adoption
$s=new SearchDoc("", "ZOO_DEMANDEADOPTION"); // Famille demande d'adoption
$s->addFilter("state = '%s'", $wdoc->getFirstState()); // recherche des document étant dans la première activité
$s->search();

La recherche sur l'état est effectuée sur les révisions passées.

$s=new SearchDoc("", "ZOO_DEMANDEADOPTION"); // Famille demande d'adoption
$s->addFilter("state = '%s'", \Zoo\WDemandeAdoption::submittedState); // recherche des document ayant été soumis
$s->latest=false; // toutes les révisions
$s->addFilter("locked = -1"); // révisions passés uniquement
$s->search();
×