$aff
$aff : string
Nom de l'objet metier
Définition de la classe *om_table*.
Cette classe permet de 'tabler' les champs suivant une requete.
$_etatRechercheAv : boolean
Etat de la recherche avancee : true -> activee, false -> desactivee
Pour activer la recherche avancee sur un objet particulier, rendez-vous dans le fichier sql/[...]/objet.inc.php de l'objet et ajoutez le tableau suivant aux tableaux d'options:
EX: $options[] = (1) array('type' => 'search', (2) 'display' => true, (3) 'advanced' => $champs, (4) 'default_form' => 'advanced', (5) 'absolute_object' => 'om_utilisateur');
(1) 'type' : OBLIGATOIRE Permet de definir le type de l'option. Pour une recherche il faut saisir 'search'.
(2) 'display' : OBLIGATOIRE Permet d'afficher ou non la recherche, tout en conservant sa configuration Supporte les valeurs 'true' et 'false'.
(3) 'advanced' : OBLIGATOIRE Permet de preciser que le formulaire de recherche est un formulaire de recherche avancee. Cette cle doit contenir le tableau des champs configures pour la recherche (voir plus bas pour la configuration).
(4) 'default_form' : optionnel Permet de choisir quel formulaire de recherche est ouvert par defaut. La valeur 'advanced' permet d'afficher le formulaire de recherche multi-criteres. Les autres valeurs ou si 'default_form' n'est pas configure, affichent le formulaire de recherche mono-critere.
(5) 'absolute_object' : OBLIGATOIRE Permet de specifier le nom de la table en base de donnees de l'objet recherche.
$htmlChampRechercheAv : array
Liste des attributs 'name' des champs HTML composant le formulaire de recherche avancee.
Ces valeurs sont les cles du tableau $_POST contenant les valeurs a rechercher.
Cette liste sera initialisee seulement si la recherche avancee est activee.
$paramChampRechercheAv : array
Tableau de parametres permettant de construire le formulaire de recherche avancee et d'interroger les bonnes tables et colonnes de la base de donnees.
Les cles de ce tableau sont les noms des champs du formulaire de recherche.
Les valeurs sont des tableaux associatif contenant la configuration du champ a savoir : la colonne et la table dans laquel s'effectuera la recherche de sa valeur, son type, sa taille, etc.
EX: array('dentifiant_utilisateur' (1) =>
(2) array('colonne' => 'om_utilisateur',
(3) 'table' => 'om_utilisateur',
(4) 'type' => 'text',
(5) 'libelle' => __('Identifiant'),
(6) 'taille' => 10,
(7) 'max' => 8));
(1) 'identifiant_utilisateur' : OBLIGATOIRE Nom unique du champ HTML (attribut name du champ).
(2) 'colonne' : OBLIGATOIRE Nom de la colonne de la base de donnees qui sera interrogee si $_POST contient la cle 'identifiant_utilisateur'.
(3) 'table' : OBLIGATOIRE Nom de la table de la base de donnees qui sera interrogee si $_POST contient la cle 'identifiant_utilisateur'.
(4) 'type' : OBLIGATOIRE Type du champ HTML a afficher. Cela peut-etre date, text, select, ou tout autre type supporte par la classe formulaire. Pour les champs de type select, le nom du champ HTML (1) doit etre le meme que le nom de la colonne (2). A corriger.
(5) 'libelle' : OBLIGATOIRE Le label qui sera affiche a cote du champ dans le formulaire de recherche.
(6) 'taille' : optionnel La taille du champ HTML (attribut size).
(7) 'max' : optionnel La longueur maximale de la valeur du champ (attribut maxlength).
EX: Recherche des utilisateurs crees entre telle et telle date
$champs['date_de_creation'] =
array('colonne' => 'creation_date',
'table' => 'user',
'libelle' => __('Date de creation'),
'type' => 'date',
'where' => 'intervaldate');
Cette configuration permet de creer deux champs HTML datepicker:
date_de_creation_max : permet de saisir une date maximale
Ces champs permettent de rechercher les uilisateurs dont la date de de creations est incluse dans l'intervalle saisi, bornes comprises. Il est possible de ne saisir qu'une seule date afin de rechercher les utilisateurs ayant ete crees avant ou apres une date particuliere.
EX: Recherche des utilisateurs administrateurs
L'information se trouve directement dans la table utilisateur.
$champs['administrator'] =
array('colonne' => 'is_admin',
'table' => 'user',
'libelle' => __('Administrateur'),
'type' => 'select',
'subtype' => 'manualselect',
'args' => $args);
$args[0] = array('', 'true', 'false');
$args[1] = array(__('Tous'), __('Oui'), __('Non'));
Cette configuration permet de creer un champ HTML de type select avec trois choix:
Non (valeur 'false')
Le tableau $args[0] contient les valeurs associes aux choix. Elles seront recherchees telles quelles dans la base de donnees.
En selectionnant 'Oui', la requete sera construite comme suit:
WHERE user.is_admin::varchar like 'true'
Il est possible de saisir n'importe quelle chaine de caracteres dans $args[0] et pas seulement des valeurs booleenes.
Attention cette recherche n'est pas sensible a la casse. Plusieurs fonction de formatage sont appelees sur 'user.is_admin' avant de tester l'egalite.
EX: Recherche des utilisateurs administrateurs
L'information se trouve non pas dans la table utilisateur mais dans la table administrateur disposant d'une colonne user_id (cle etrangere). Il faut utiliser une sous-requete pour recuperer l'ensemble des identifiants de le table administrateur afin de tester si un identifiant utilisateur est present dans cette liste.
$champs['administrator'] =
array('colonne' => 'id',
'table' => 'user',
'libelle' => __('Type d'utilisateur'),
'type' => 'select',
'subtype' => 'manualselect',
'where' => 'insubquery',
'args' => $args,
'subquery' => $subquery);
$args[0] = array('', 'true', 'false');
$args[1] = array(__('Tous'),
__('Administrateurs'),
__('Utilisateurs simples'));
$subquery = 'SELECT user_id FROM admin';
Cette configuration permet de creer un champ HTML de type select avec trois choix:
Utilisateurs simples (valeur 'false')
Le tableau $args[0] contient les valeurs associes aux choix. La valeur 'true' indique que les identifiants des utilisateurs doivent se trouver dans la sous-requete, la valeur 'false' indique qu'ils ne doivent pas se trouver dans la sous-requete. Contrairement a l'exemple 2, elles ne seront pas recherchees telles quelles dans la base de donnees et ne doivent surtout pas etre modifiees.
En selectionnant 'Administrateurs', la requete sera construite comme suit:
WHERE user.id IN (SELECT user_id FROM admin)
$_rechercheAvanceeFaite : boolean
Permet de savoir si une recherche avancee a ete effectuee.
Ce parametre est false:
$f : null|\om_application
Instance de la classe *om_application*.
__construct(string $aff, string $table, integer $serie, array $champAffiche, array $champRecherche, string $tri, string $selection, string $edition = "", array $options = array(), null|string $advs_id = null, boolean $om_validite = false) : void
Constructeur.
Cette methode permet d'affecter tous les parametres aux attributs de la classe auxquels ils correspondent
string | $aff | Nom de l'objet metier |
string | $table | Critere from de la requete |
integer | $serie | Nombre d'enregistrement(s) par page |
array | $champAffiche | Tableau des champs a afficher |
array | $champRecherche | Tableau des champs sur lesquels la recherche est effectuee |
string | $tri | Critere de tri de la requete |
string | $selection | Clause de selection dans la requete |
string | $edition | Lien vers edition pdf |
array | $options | |
null|string | $advs_id | |
boolean | $om_validite |
display(array $params = array(), array $actions = array(), mixed $dnu1 = null, string $class = "tab", boolean $onglet = false) : void
Affichage principal.
array | $params | |
array | $actions | |
mixed | $dnu1 | @deprecated Ne pas utiliser. |
string | $class | Prefixe de la classe CSS a utiliser |
boolean | $onglet |
composeExportUrl(array $params = array()) : string
Compose une URL pour l'export.
Le principe est d'utiliser la propriété 'params' pour tous les paramètres de l'URL sauf si ils ont une valeur dans le paramètre passé.
array | $params | Tableau de valeurs à surcharger. |
add_aggregate_filters(array $filters, string $opp) : string
Cree une chaine en ajoutant les criteres de recherche avancee utilisant des fonctions d'aggregation les uns a la suite des autres.
Cela permet de construire l'expression SQL devant se placer apres la clause HAVING.
array | $filters | liste des crietes de recherche |
string | $opp | operateur binaire 'AND' ou 'OR' |
l'expression se placant apres le HAVING
_del_substr(string $str, string $substr, string $rep = "") : string
Supprime la chaine $substr de $str si $substr existe.
Methode insensible à la casse
string | $str | ... |
string | $substr | ... |
string | $rep | optionnel, $rep peut remplacer $substr |
le parametre $str traite
getPostedChampRechercheAv(boolean $with_table_prefix = false) : array
Retourne la liste des champs de recherche avancee qui ont ete envoyes par POST et dont la valeur n'est pas vide.
Cela permet d'utiliser dans la clause SQL WHERE uniquement les champs sollicites.
De plus, si la requete SQL contient des alias de table comme
utilisateur as u
le parametre $with_table_prefix permet de retourner
la liste des champs. (A condition que le parametre table_prefix
existe).
boolean | $with_table_prefix | ... |