Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 199 → Rev 200

/trunk/modeles/AnnuaireModele.php
257,6 → 257,7
 
$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant);
$champ_code_postal = $tableau_mappage[0]['champ_code_postal'];
$champ_pays = $tableau_mappage[0]['champ_pays'];
 
$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
263,6 → 264,7
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '.
' COUNT(*) AS nbre '.
'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
'WHERE '.$champ_pays.' = "FR" '.
'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) '.
340,7 → 342,7
 
return $resultat_nombre_inscrits;
}
 
/**
* Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
* @param int $id_annuaire l'identifiant de l'annuaire
349,7 → 351,7
* @param boolean $modele indique si l'on veut recherche la valeur exacte ou non
* @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère
*/
public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false, $numero_page = 1, $taille_page = 50) {
public function rechercherInscritDansAnnuaireMappeParTableauChamps($id_annuaire, $criteres, $modele = false, $numero_page = 1, $taille_page = 50) {
 
$sep = '';
 
356,10 → 358,12
if($modele) {
$sep = '%';
}
foreach($criteres as $champ => $valeur) {
$criteres[$champ] = $valeur.$sep;
}
 
$valeurs = array($champ_critere => $valeur.$sep);
 
return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, array(), true, $numero_page, $taille_page);
return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page);
}
 
/**
1038,7 → 1042,7
* @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
* @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
*/
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50) {
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') {
// Si la fonction est appelée et que tous les critères sont vides
if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
1078,6 → 1082,13
// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
foreach($valeurs as $champ => $valeur) {
if(trim($valeur) != '') {
if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_code_postal']) {
if(strpos($valeur,"%") == false) {
$valeur .= '%';
}
}
if(strpos($valeur,"%") != false) {
$operateur = ' LIKE ';
} else {
1104,6 → 1115,7
$nb_inscrits = $resultat_nb_inscrits['nb'];
}
 
$requete_recherche_inscrits .= ' ORDER BY '.$champs_mappage[0]['champ_nom'];
$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
 
$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);