Rev 1088 | Rev 1292 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// +--------------------------------------------------------------------------------+// | annuaire_moteur_fonction.php |// +--------------------------------------------------------------------------------+// | Copyright (c) 2000 - 2003 Tela Botanica |// +--------------------------------------------------------------------------------+// | Les fonctions de annuaire_moteur.php |// +--------------------------------------------------------------------------------+// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |// +--------------------------------------------------------------------------------+//// $Id: annuaire_backoffice.fonct.php,v 1.8 2007-01-04 16:33:09 alexandre_tb Exp $/** function mkengine ()**** @return*/include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php' ;include_once PAP_CHEMIN_API_PEAR.'HTML/Table.php';include_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/select.php';function mkengine(){global $nbr_total;global $bouton, $HTTP_POST_VARS ;$requete = mkquery() ;$ret = '<div>'. $requete .'</div>';// Deux requetes, une avec tous les resultats, l'autre avec les résultats affichés$result_final = $GLOBALS['ins_db']->query($requete) ;if (DB::isError($result_final)) {echo $result_final->getMessage().'<br />'.$requete ;}$nbr_final = $result_final->numRows() ;$_SESSION['requete_mail_tous'] = $requete ;$donnees = array();while ($ligne = $result_final->fetchRow(DB_FETCHMODE_ASSOC)) {$donnees[] = $ligne ;}if (!isset($_REQUEST['setPerPage'])) $_REQUEST['setPerPage'] = 50 ;$param_pager = array ('mode' => 'Jumping','delta' => 5,'itemData' => $donnees) ;$pager = & Pager::factory($param_pager);$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ;// Deux cas , soit on a cliqué sur rechercher, soit on a cliqué sur un lienforeach ($mes_vars as $key=>$value) {if (!$bouton) { // on a cliqué sur un lienif (empty($HTTP_POST_VARS[$value])) {}} else {// Si on clique sur le bouton rechercherif (empty ($HTTP_POST_VARS[$value])) {$$value = "" ;} else {$$value = $HTTP_POST_VARS[$value] ;}}}$ret = '';$ret .= '<h1>'.AM_L_TITRE.'</h1>'."\n" ;// construction du moteur de str$ret .= '<div>';// Le formulaire de recherche avec QuickForm$formulaire = new HTML_QuickForm('formulaire_recherche', 'post', str_replace('&', '&', $GLOBALS['ins_url']->getURL()));$formulaire->addElement('text', 'recherche', AM_L_RECHERCHER);$requete = 'select GC_ID, GC_NAME from gen_COUNTRY where GC_LOCALE="fr"';$pays = &$GLOBALS['ins_db']->getAssoc ($requete);$pays = array_merge (array('tous' => 'Tous les pays'), $pays);if (DB::isError($pays)) {return $pays->getMessage().'<br />'.$pays->getDebugInfo();}$select = new HTML_QuickForm_select ('pays', AM_L_PAYS, $pays, array ('class' => 'projet_asso')) ;$formulaire->addElement($select) ;$formulaire->addElement('text', 'nom', AM_L_NOM);$formulaire->addElement('text', 'prenom', AM_L_PRENOM);$formulaire->addElement('text', 'ville', AM_L_VILLE);if (defined('INS_CHAMPS_NOM_DEPARTEMENT')) {$departement = & $GLOBALS['ins_db']->getAssoc('select GFD_ID, CONCAT(GFD_ID,\' - \',GFD_NAME) as GFD_NAME from gen_FRENCH_DPT');$departement = array_merge (array ('tous' => 'Tous'), $departement);$select_dpt = new HTML_QuickForm_select ('departement', AM_L_DEPARTEMENT, $departement, array ('class' => 'projet_asso')) ;$formulaire->addElement($select_dpt);}$formulaire->addElement('text', 'mail', AM_L_MAIL);$grp = array(20 => 20, 50 => 50, 100 => 100) ;$select_grp = new HTML_QuickForm_select ('T_REPONSE', '', $grp, array ('class' => 'projet_asso')) ;$formulaire->addElement($select_grp);$formulaire->addElement('submit', 'bouton', AM_L_RECHERCHER);foreach ($mes_vars as $key=>$value) {if (isset($_POST[$value])) {$default[$value] = $_POST[$value] ;}}$formulaire->setDefaults($_POST);$ret .= '<br />'.$formulaire->toHTML();// La liste des lettres de l'alphabetfor ($i = 65 ; $i <91 ; $i++) {$GLOBALS['ins_url']->addQueryString('lettre', chr($i)) ;$ret .= "\t<a href=\"".$GLOBALS['ins_url']->getURL();$ret .= '">';$ret .= chr($i) ;$ret .= "</a> \n";}$GLOBALS['ins_url']->addQueryString ('lettre', 'tous') ;$ret .= " <a href=\"".$GLOBALS['ins_url']->getURL().'">'.AM_L_TOUS."</a>\n" ;$ret .= "</div>\n" ;// Comptage du nombre total de données dans la table (hors CACHER = 1)$requete_nbre_inscrit = "select count(*) as CPT from ".INS_ANNUAIRE;$resultat_nbre_inscrit = $GLOBALS['ins_db']->query($requete_nbre_inscrit) ;if ($resultat_nbre_inscrit->numRows() == 1) {$tmp_nb = $resultat_nbre_inscrit->fetchRow(DB_FETCHMODE_OBJECT);$nbr_total = $tmp_nb->CPT;$chaine = " sur $nbr_total entrées";if ($nbr_total <= 0) $ret .= "<B>Erreur</B> lors du comptage des structures ($nbr_total trouvées) : $requete_nbre_inscrit";}else $ret .= "<B>Erreur</B> lors du comptage des structures : $requete_nbre_inscrit";// fin comptage$ret .= '<p class="zone_info">'.$nbr_final.' résultat(s)'.$chaine.'</p>' ;$GLOBALS['ins_url']->removeQueryString('lettre') ;// Menu Ajouter un inscrit$GLOBALS['ins_url']->addQueryString('ajouter', '1') ;$ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_AJOUT_MEMBRE.'</a></div>'."\n";$data = $pager->getPageData();$table = new HTML_Table(array ('class' => 'table_bazar')) ;if (defined('INS_CHAMPS_VILLE')) {$table->addRow(array('<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_NOM.'">Identité</a>','<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_MAIL.'">Adresse mail</a>','<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_VILLE.'">'.AM_L_VILLE.'</a>','Pays ou Dpt (fr)'), '', 'TH') ;} else {$table->addRow(array('<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_NOM.'">Identité</a>','<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_MAIL.'">Adresse mail</a>','Pays ou Dpt (fr)'), '', 'TH') ;}$debut = isset($_REQUEST['pageID']) ? $_REQUEST['pageID'] : 1 ;for ($i = ($debut - 1) * $_REQUEST['setPerPage'];$i < $_REQUEST['setPerPage'] * $debut;$i++) {// On teste s'il y une valeur, si oui on ajoute la ligneif (isset ($data[$i])) {$urlPop = $GLOBALS['ins_url']->getURL().'&'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID];if (defined('INS_CHAMPS_VILLE')) {$ligne_inscrit = array ("<a href=\"$urlPop\">".$data[$i][INS_CHAMPS_NOM].' '.$data[$i][INS_CHAMPS_PRENOM].'</a>', $data[$i][INS_CHAMPS_MAIL], $data[$i][INS_CHAMPS_VILLE]) ;} else {$ligne_inscrit = array ("<a href=\"$urlPop\">".$data[$i][INS_CHAMPS_NOM].' '.$data[$i][INS_CHAMPS_PRENOM].'</a>', $data[$i][INS_CHAMPS_MAIL]) ;}// Pour la france on met le département, sinon on laisse le nom du paysif ($data[$i][INS_CHAMPS_PAYS] != 'fr') {array_push ($ligne_inscrit, $data[$i][INS_CHAMPS_LABEL_PAYS]);} else {if (defined('INS_CHAMPS_NOM_DEPARTEMENT')) {$req_dpt = 'select '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT.",".INS_ANNUAIRE." where ".INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID] ;$req_dpt .= " and ".INS_ANNUAIRE.'.'.INS_CHAMPS_DEPARTEMENT.'='.INS_TABLE_DPT.'.'.INS_CHAMPS_ID_DEPARTEMENT ;$resultat_dpt = $GLOBALS['ins_db']->query($req_dpt) ;if (DB::isError($resultat_dpt)) {echo $resultat_dpt->getMessage().$resultat_dpt->getDebugInfo();}$ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC) ;array_push ($ligne_inscrit, $ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT]) ;}}$table->addRow($ligne_inscrit) ;}}$ret .= $table->toHTML();$links = $pager->getLinks();$ret .= $links['all'] ;$ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'&action='.ANN_MAIL_TOUS.'">'.AM_L_MAIL_SELECTION."</a></div>\n" ;return $ret;}function mkquery(){// Requete sur l'annuaire pour extraire le nom, prénom, ville, nom du département (jointure),// l'état de la cotisation (jointure)// le tableau suivant contient tous les champs de la table annuaire_tela sur lesquels on peut effectuer une rechercheif (defined('INS_CHAMPS_DEPARTEMENT')) {$fields_annu = array("nom" => INS_CHAMPS_NOM, "prenom" => INS_CHAMPS_PRENOM , "mail" => INS_CHAMPS_MAIL ,"dept" => INS_CHAMPS_DEPARTEMENT, "pays" => INS_CHAMPS_PAYS ) ;}else {$fields_annu = array("nom" => INS_CHAMPS_NOM, "prenom" => INS_CHAMPS_PRENOM , "mail" => INS_CHAMPS_MAIL ,"pays" => INS_CHAMPS_PAYS ) ;}if (defined('INS_CHAMPS_VILLE')) $fields_annu["ville"]=INS_CHAMPS_VILLE;$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "pays", "sort", "T_REPONSE", "lettre", "statut") ;$queries = "SELECT ".INS_ANNUAIRE.".*" ;$queries .= ", ".INS_TABLE_PAYS.'.'.INS_CHAMPS_LABEL_PAYS ;$queries .= " FROM ".INS_ANNUAIRE ;$queries .= ",".INS_TABLE_PAYS ;// Construction en fonction des champs saisies// juste le champs "rechercher", on regarde partout$where = ' WHERE ' ;if (isset ($_REQUEST['recherche']) && $_REQUEST['recherche'] != "") {$where .= '('.INS_CHAMPS_NOM.' like "%'.$_REQUEST['recherche'].'%"' ; // le premierforeach($fields_annu as $key=>$value) {if ($key == "nom" || $key == 'dept') continue ;$where .= ($key == "pays" ?$_REQUEST['pays'] == "tous" ? ")" :") and $value = '".$_REQUEST['pays']."'" : ' or '.$value.' like "%'.$_REQUEST['recherche'].'%"') ; // les autres}if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] != 'tous') {$where .= 'and '.INS_CHAMPS_DEPARTEMENT.'="'.$_REQUEST['dept'].'"' ;}} else {// si un ou plusieurs autres champs ont été indiqué, on les rajoute ici$or_flag = false ;foreach($fields_annu as $key=>$valeur) {if ($key != "") {if ($key == "pays") {if (!isset($_REQUEST[$key]) || $_REQUEST[$key] == "tous") {$where .= ' '.INS_CHAMPS_PAYS." like '%'"." and ";} else {$where .= " $valeur like \"%".$_REQUEST[$key]."%\""." and " ;}} else {if ($key == "dept") {if (isset($_REQUEST[$key]) && $_REQUEST[$key] != "tous") {$where .= " and ".INS_CHAMPS_DEPARTEMENT."=".$_REQUEST[$key] ;if ($fields_annu["pays"] != "fr") $where .= " and ".INS_CHAMPS_PAYS."=\"fr\"" ;}} else {if (isset ($_REQUEST[$key]) && $or_flag) {$where .= "$valeur like \"%".$_REQUEST[$key]."%\" and " ; ;} else {$where .= "$valeur like \"%%\" and " ; ;}}}$or_flag = true ;}}$where = substr($where, 0, strlen($where)-5);// ici le cas ou rien n'a été saisie du tout, on affiche toutif (!$or_flag) {$where .= INS_CHAMPS_NOM." like '%')" ;}}if (isset($_REQUEST['lettre'])) {if ($_REQUEST['lettre'] == 'tous') $_REQUEST['lettre'] = '';$where = ' WHERE '.INS_CHAMPS_NOM.' LIKE "'.$_REQUEST['lettre'].'%"' ;}$where .= " and ".INS_ANNUAIRE.".".INS_CHAMPS_PAYS."=".INS_TABLE_PAYS.".".INS_CHAMPS_ID_PAYS."" ;if (isset($nom) && $nom != "") $where .= " and ".INS_CHAMPS_NOM." like \"%$nom%\"" ;if (isset($_REQUEST['prenom']) && $_REQUEST['prenom'] != "")$where .= " and ".INS_CHAMPS_PRENOM.' like "%'.$_REQUEST['prenom'].'%"' ;if (isset($ville) && $ville != "") $where .= " and ".INS_CHAMPS_VILLE." like \"%$ville%\"" ;if (isset($mail) && $mail != "") $where .= " and ".INS_CHAMPS_MAIL." like \"%$mail%\"" ;$where .= ' and gip_id_i18n like "%'.$GLOBALS['lang'].'%"' ;if (isset ($_REQUEST['lettre']) && $_REQUEST['lettre'] == "tous") $_REQUEST['lettre'] = "" ;if (!isset ($_REQUEST['lettre'])) $_REQUEST['lettre'] = '' ;$queries .= $where.' AND '.INS_CHAMPS_ID.'!=0';if (isset($_REQUEST['sort']) && $_REQUEST['sort'] != "") $queries .= ' order by '.$_REQUEST['sort'] ;return $queries;}function ajouterInscrit() {$res = '';$GLOBALS['ins_url']->addQueryString ('ajouter', '1');$GLOBALS['ins_url']->addQueryString ('ajouter_v', '1');$formulaire = new HTML_formulaireInscription('inscription', '',str_replace ('&', '&', $GLOBALS['ins_url']->getURL()), '', '') ;$formulaire->construitFormulaire(str_replace ('&', '&', $GLOBALS['ins_url']->getURL())) ;if (isset($_REQUEST['ajouter_v'])) {if ($formulaire->validate()) {$id_utilisateur = insertion($formulaire->getSubmitValues()) ;// Appel des actions desinscriptions des applications clientes$d = dir(GEN_CHEMIN_CLIENT);while (false !== ($repertoire = $d->read())) {if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php'))include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ;}$d->close();if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) {inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;}return mkengine();}}return $formulaire->toHTML();}?>