New file |
0,0 → 1,330 |
<?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.13 2007-11-08 09:26:20 alexandre_tb Exp $ |
|
|
/** function mkengine () |
* |
* |
* |
* @return |
*/ |
|
include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php' ; |
include_once PAP_CHEMIN_API_PEAR.'HTML/Table.php'; |
|
function mkengine() |
{ |
global $bouton, $HTTP_POST_VARS ; |
|
$requete = mkquery() ; |
//$ret = '<div>'. $requete .'</div>'; |
$ret = ''; |
// Deux requetes, une avec tous les resultats, l'autre avec les resultats affiches |
|
$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 clique sur rechercher, soit on a clique sur un lien |
foreach ($mes_vars as $key=>$value) { |
if (!$bouton) { // on a clique sur un lien |
if (empty($HTTP_POST_VARS[$value])) { |
|
} |
} else { |
// Si on clique sur le bouton rechercher |
if (empty ($HTTP_POST_VARS[$value])) { |
$$value = "" ; |
} else { |
$$value = $HTTP_POST_VARS[$value] ; |
} |
} |
} |
// Comptage du nombre total de donnees 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 = "parmi $nbr_total donné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 = ''; |
$ret .= '<h1>'.AM_L_TITRE.' '.$chaine.'</h1>'."\n" ; |
// construction du moteur de str |
|
$url = $GLOBALS['ins_url']->getURL(); |
|
isset ($_REQUEST['recherche']) ? $recherche = stripslashes($_REQUEST['recherche']) : $recherche = ''; |
|
// formulaire contenant les pays, avec par defaut soit le pays en cours |
// soit "tous les pays" |
$liste_pays = new ListeDePays($GLOBALS['ins_db']) ; |
$tableau_pays = $liste_pays->getListePays(INS_LANGUE_DEFAUT) ; |
|
foreach ($tableau_pays as $codeIso => $labelPays) { |
if (!empty($pays)) { |
$pays = $_REQUEST['pays']; |
} |
} |
|
// Construction du <select> des departements |
$requete_dpt = 'select '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT ; |
$resultat_dpt = $GLOBALS['ins_db']->query($requete_dpt) ; |
if (DB::isError($resultat_dpt)) { |
echo 'Echec de la requete<br />'.$requete_dpt.'<br />'.$resultat_dpt->getMessage(); |
} |
|
while ($ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC)) { |
$tableau_dpt[$ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT]] = $ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT]; |
if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] == $ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT]) { |
$dpt = $_REQUEST['dept']; |
} |
} |
|
$pager_select_box = $pager->getperpageselectbox (50 , 200, 50 , false ,'%d'); |
|
ob_start(); |
include_once INS_CHEMIN_SQUELETTE.INS_FICHIER_SQUELETTE_BACKOFFICE_MOTEUR ; |
$ret .= ob_get_contents(); |
ob_end_clean(); |
|
// La liste des lettres de l'alphabet |
for ($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" ; |
$ret .= '<div>'.$nbr_final.' résultat(s)</div>' ; |
$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"; |
$GLOBALS['ins_url']->removeQueryString('ajouter') ; |
$data = $pager->getPageData(); |
|
$table = new HTML_Table(array ('class' => 'table_bazar')) ; |
$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)', |
INS_SUPPRIMER |
), '', '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 ligne |
if (isset ($data[$i])) { |
$urlPop = $GLOBALS['ins_url']->getURL().'&'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID]; |
$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]) ; |
|
// Pour la france on met le departement, sinon on laisse le nom du pays |
if ($data[$i][INS_CHAMPS_PAYS] != 'fr') { |
array_push ($ligne_inscrit, $data[$i][INS_CHAMPS_LABEL_PAYS]); |
} else { |
$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]) ; |
|
} |
$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_SUPPRIMER_INSCRIT); |
$GLOBALS['ins_url']->addQueryString(INS_VARIABLE_ID_INSCRIT, $data[$i][INS_CHAMPS_ID]); |
array_push ($ligne_inscrit, '<a href="'.$GLOBALS['ins_url']->getURL(). |
'" onclick="javascript:return confirm(\''.INS_SUPPRIMER.' ?\');">'.INS_SUPPRIMER.'</a>'); |
$GLOBALS['ins_url']->removeQueryString(ANN_VARIABLE_ACTION); |
$GLOBALS['ins_url']->removeQueryString(INS_VARIABLE_ID_INSCRIT); |
$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, prenom, ville, nom du departement (jointure), |
// l'etat de la cotisation (jointure) |
|
// le tableau suivant contient tous les champs de la table annuaire_tela sur lesquels on peut effectuer une recherche |
$fields_annu = array("nom" => INS_CHAMPS_NOM, "prenom" => INS_CHAMPS_PRENOM , "mail" => INS_CHAMPS_MAIL , "ville" => INS_CHAMPS_VILLE, |
"dept" => INS_CHAMPS_DEPARTEMENT, "pays" => INS_CHAMPS_PAYS ) ; |
|
$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "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 premier |
foreach($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 ete indique, 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 .= " and ".INS_CHAMPS_PAYS." like '%'"; |
} else { |
$where .= " and $valeur like \"%".$_REQUEST[$key]."%\"" ; |
} |
} 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]."%\"" ; |
} else { |
$where .= "$valeur like \"%%\"" ; |
} |
if ($key != "ville") $where .= " and " ; |
} |
} |
$or_flag = true ; |
} |
} |
// ici le cas ou rien n'a ete saisie du tout, on affiche tout |
if (!$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 ; |
|
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())) ; |
$msg = ''; |
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' ; |
$msg .= GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php<br />'; |
} |
$d->close(); |
if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) { |
inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ; |
} |
if (!isset ($msg)) $msg = ''; |
return $msg.mkengine(); |
} |
} |
return $formulaire->toHTML(); |
} |
?> |