Créer une nouvelle recherche

Dans ce document, on prend l'exemple de la création d'une recherche auteur avec un formulaire appelé "standard"

I. Créer la page bib

pages/bib/catalogue/recherches/formulaires/auteur/standard

Les paramètres concernent essentiellement 2 types de plugins : les plugins de recherche (cf III) et les plugins de formatage (cf IV)

+ _page => bib/catalogue/recherches.php
+ _parametres
     + barre_icones2 ----> les icones
     + classe_css => tvs_recherchator
     + favicon => IMG/icones/page_find.png
     + format_liste_defaut => tableau_nom_prenom_date => le format de liste par défaut parmi celles proposées (format)
     + format_notice_defaut => texte_isbd_standard => idem pour format notice (format)
     + nom_recherchator => tvs_recherchator
     + plugin_get_formulaire_defaut => la liste de critères à afficher dans la grille de recherche (recherche)
          + nom_plugin => catalogue/recherches/listes_criteres/auteur/formulaire_defaut
     + plugin_get_id => permet de retouver l'id d'une notice à partir de son idx (position dans une liste) (ne change pas)
          + nom_plugin => catalogue/marcxml/formatage/auteur/formats_liste/id_seul
     + plugin_get_liste_criteres => la liste des critères à ajouter (p-ê différent de ceux de la grille) (recherche)
          + nom_plugin => catalogue/recherches/listes_criteres/auteur/standard
     + plugin_get_liste_formats_liste => les différents fomats pour les listes de notices (format)
          + nom_plugin => catalogue/marcxml/formatage/auteur/listes_formats_liste/defaut
     + plugin_get_liste_formats_notice => idem pour les notices (format)
          + nom_plugin => catalogue/marcxml/formatage/auteur/listes_formats_notice/defaut
     + plugin_get_liste_tris => différents critères de tri (recherche)
          + nom_plugin => catalogue/recherches/listes_tris/auteur/standard
     + plugin_type_2_grille => association entre les types d'objets et la grille de catalogage par défaut à utiliser => à saisir
          + nom_plugin => catalogue/catalogage/type_2_grille/defaut
     + titre_page => bib/catalogue/recherches/formulaires/titre_page
     + tri_defaut => t_nom => tri par défaut
     + type_objet => auteur
     + ws_url => bib_ws.php?module=catalogue/recherches/formulaires/biblio/standard

II. Créer la page bib_ws

pages/bib_ws/catalogue/recherches/formulaires/auteur/standard

+ _page => bib_ws/catalogue/recherches/formulaires.php
+ _parametres
     + plugin_formulaire_2_recherche => modificateur de recherche (ajoute un critère, en modifie un autre...)
          + nom_plugin => catalogue/recherches/modificateurs/auteur/standard
     + plugin_recherche
          + nom_plugin => catalogue/recherches/recherche_simple

III. Créer les plugins pour la recherche

Dans plugins/catalogue/recherches

Un certain nombre de paramètres ne dépendent pas du type d'objet et ne sont donc pas à modifier pour chaque création d'objet :

> booleens (et, ou sauf)
> types_recherches (commence par, contient mot, supérieur à...)
> listes_types_recherches : des listes de types_recherches

D'autres dépendent du type d'objet :

> criteres/nom_de_l_objet/nom_du_critere : différents critères possibles (par ex. auteur, titre, tous mots...) :
+ parametres
+ !!booleens
     + nom_plugin => catalogue/recherches/booleens/standard
+ !!types_recherches
     + nom_plugin => catalogue/recherches/listes_types_recherches/defaut
+ ??critere_intitule => bib/catalogue/recherches/criteres/auteur/standard/mots_nom
+ critere => a_nom
+ type_champ => textbox

> listes_criteres/nom_de_l_objet/nom_de_la_liste : liste de critères pour créer par exemple une grille ou pour définir les champs qu'on peut ajouter dans une grille.
+ !!01 - mots_auteur
     + nom_plugin => catalogue/recherches/criteres/biblio/standard/mots_auteur
+ !!02 - mots_titre
     + nom_plugin => catalogue/recherches/criteres/biblio/standard/mots_titre
+ !!03 - tousmots
     + nom_plugin => catalogue/recherches/criteres/biblio/standard/tousmots

> tris et listes_tris
Les critères de tri

> modificateurs/nom_de_l_objet/nom_du_modificateur 
Certains paramètres qu'on pourra ajouter ou modifier à la recherche (nb de pages, ajout d'un critère "au - 1 exemplaire"...

IV. Créer les plugins de formatage

cf. la fiche sur le formatage des notices marcxml (1.d)

V. Le plugin de recherche

catalogue/recherches/recherche_simple

plugin_catalogue_recherches_recherche_simple()

Interface avec la classe recherche_simple
Tous les paramètres de la méthode init sont fournis dans le paramètre [param_recherche]

@param mixed $parametres
@param [param_recherche] => les paramètres attendus par recherche_simple::init() (cf la classe recherche_simple)

@return array
@return [nb_pages] => nb de pages
@return [nb_notices] => nb de notices
@return [notices] => les notices (peut être très variable selon format choisi : d'une chaine SQL à une liste formatée...) 

détail de [param_recherche]

[type_objet] => type d'objet à rechercher
[criteres][0,1,2...][booleen (AND, OR...) | type_recherche (str_commence, str_contient...) | intitule_critere (a_titre, a_auteur...) | valeur_critere (la chaine à rechercher)]
[tris][0,1,2...] => les colonnes à utiliser pour trier
[page] => page à afficher
[nb_notices_par page] 
[format_resultat] => str_sql : la requete SQL | donnees : une array des résultat (en tableau) contenant ou non la notice xml | formate : tableau ou chaine formatés
[bool_parse_contenu] => est-ce qu'on parse la notice pour en faire un objet DOMXML (qui sera ajouté dans la colonne xml)
[plugin_formate_notice] => plugin à utiliser pour formater chaque notice (si format_resultat == formate)
                           passe en paramètre la ligne (toutes les colonnes + éventuellement la notice xml) dans le paramètre [ligne]
                           récupère directement [resultat]
[plugin_formate_liste] =>  plugin à utiliser pour formater la liste (si format_resultat == formate)
                           si non fourni, on retourne une array
                           passe en paramètre le tableau des notices sous [tableau]
                           recupère directement [resultat]