Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
448 ddelon 1
<?php
2
 
3
// +--------------------------------------------------------------------------------+
4
// | annuaire_moteur_fonction.php 		                      						|
5
// +--------------------------------------------------------------------------------+
6
// | Copyright (c) 2000 - 2003 Tela Botanica 							        	|
7
// +--------------------------------------------------------------------------------+
8
// | Les fonctions de annuaire_moteur.php                                           |
9
// +--------------------------------------------------------------------------------+
10
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> 		  		        |
11
// +--------------------------------------------------------------------------------+
12
//
1796 alexandre_ 13
// $Id: annuaire_backoffice.fonct.php,v 1.13.2.1 2008-02-08 08:21:20 alexandre_tb Exp $
448 ddelon 14
 
15
 
16
/** function mkengine ()
17
*
18
*
19
*
20
*	@return
21
*/
22
 
1298 neiluj 23
include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php' ;
24
include_once PAP_CHEMIN_API_PEAR.'HTML/Table.php';
679 alexandre_ 25
 
448 ddelon 26
function mkengine()
27
  {
28
    global $bouton, $HTTP_POST_VARS ;
29
 
679 alexandre_ 30
    $requete = mkquery() ;
1680 alexandre_ 31
    //$ret = '<div>'. $requete .'</div>';
32
    $ret = '';
33
    // Deux requetes, une avec tous les resultats, l'autre avec les resultats affiches
679 alexandre_ 34
 
35
    $result_final = $GLOBALS['ins_db']->query($requete) ;
36
    if (DB::isError($result_final)) {
37
    	echo $result_final->getMessage().'<br />'.$requete ;
38
    }
39
    $nbr_final = $result_final->numRows() ;
40
 
41
    $_SESSION['requete_mail_tous'] = $requete ;
42
 
43
    $donnees = array();
44
	while ($ligne = $result_final->fetchRow(DB_FETCHMODE_ASSOC)) {
45
		$donnees[] = $ligne ;
46
	}
47
 
48
	if (!isset($_REQUEST['setPerPage'])) $_REQUEST['setPerPage'] = 50 ;
49
 
50
	$param_pager = array (
51
                    'mode' => 'Jumping',
52
                    'delta' => 5,
53
                    'itemData' => $donnees
54
             ) ;
55
    $pager = & Pager::factory($param_pager);
1292 neiluj 56
 
57
 
448 ddelon 58
    $mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ;
1292 neiluj 59
 
1432 alexandre_ 60
    // Deux cas , soit on a clique sur rechercher, soit on a clique sur un lien
448 ddelon 61
    foreach ($mes_vars as $key=>$value) {
1432 alexandre_ 62
        if (!$bouton) {     // on a clique sur un lien
448 ddelon 63
            if (empty($HTTP_POST_VARS[$value])) {
679 alexandre_ 64
 
448 ddelon 65
            }
66
        } else {
67
            // Si on clique sur le bouton rechercher
68
            if (empty ($HTTP_POST_VARS[$value])) {
69
                $$value = "" ;
70
            } else {
71
                $$value = $HTTP_POST_VARS[$value] ;
72
            }
73
        }
1292 neiluj 74
    }
1432 alexandre_ 75
    // Comptage du nombre total de donnees dans la table (hors CACHER = 1)
1292 neiluj 76
    $requete_nbre_inscrit = "select count(*) as CPT from ".INS_ANNUAIRE;
77
    $resultat_nbre_inscrit = $GLOBALS['ins_db']->query($requete_nbre_inscrit) ;
78
 
448 ddelon 79
 
1292 neiluj 80
  if ($resultat_nbre_inscrit->numRows() == 1) {
81
        $tmp_nb = $resultat_nbre_inscrit->fetchRow(DB_FETCHMODE_OBJECT);
82
        $nbr_total = $tmp_nb->CPT;
1432 alexandre_ 83
        $chaine = "parmi $nbr_total donn&eacute;es";
84
        if ($nbr_total <= 0) $ret .= "<B>Erreur</B> lors du comptage des structures ($nbr_total trouv&eacute;es) : $requete_nbre_inscrit";
1292 neiluj 85
    }
1298 neiluj 86
  else $ret .=  "<B>Erreur</B> lors du comptage des structures : $requete_nbre_inscrit";
1292 neiluj 87
 
88
 
89
  // fin comptage
90
 
1467 alexandre_ 91
  	//$ret = '';
1292 neiluj 92
	$ret .= '<h1>'.AM_L_TITRE.' '.$chaine.'</h1>'."\n" ;
448 ddelon 93
  // construction du moteur de str
94
 
1680 alexandre_ 95
 	$url = $GLOBALS['ins_url']->getURL();
96
 
97
    isset ($_REQUEST['recherche']) ? $recherche = stripslashes($_REQUEST['recherche']) : $recherche = '';
98
 
1432 alexandre_ 99
    // formulaire contenant les pays, avec par defaut soit le pays en cours
1292 neiluj 100
    // soit "tous les pays"
101
    $liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
102
    $tableau_pays = $liste_pays->getListePays(INS_LANGUE_DEFAUT) ;
103
 
104
    foreach ($tableau_pays as $codeIso => $labelPays) {
105
        if (!empty($pays)) {
1680 alexandre_ 106
                $pays = $_REQUEST['pays'];
1292 neiluj 107
        }
108
    }
1680 alexandre_ 109
 
1432 alexandre_ 110
    // Construction du <select> des departements
1292 neiluj 111
    $requete_dpt = 'select '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT ;
112
    $resultat_dpt = $GLOBALS['ins_db']->query($requete_dpt) ;
113
    if (DB::isError($resultat_dpt)) {
114
    	echo 'Echec de la requete<br />'.$requete_dpt.'<br />'.$resultat_dpt->getMessage();
115
    }
1680 alexandre_ 116
 
1292 neiluj 117
    while ($ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC)) {
1680 alexandre_ 118
        $tableau_dpt[$ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT]] = $ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT];
119
        if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] == $ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT]) {
120
        	$dpt = $_REQUEST['dept'];
121
        }
1292 neiluj 122
    }
1796 alexandre_ 123
	// Construction d un select avec les type d inscription
124
 
125
	$requete_type_inscription = 'select ic_id_inscription, ic_nom_inscription from inscription_configuration';
126
	$resultat_type_inscription  = $GLOBALS['ins_db']->query ($requete_type_inscription);
127
	if (DB::isError($resultat_type_inscription)) {
128
    	return 'Echec de la requete<br />'.$requete_type_inscription.'<br />'.$resultat_type_inscription->getMessage();
129
    }
130
	if ($resultat_type_inscription->numRows() > 1) {
131
		if (isset($_REQUEST['type_inscription'])) $type_inscription = $_REQUEST['type_inscription'];
132
		while ($ligne_type_inscription = $resultat_type_inscription->fetchrow(DB_FETCHMODE_ASSOC)) {
133
			$tableau_type_inscription[$ligne_type_inscription['ic_id_inscription']] = $ligne_type_inscription['ic_nom_inscription'];
134
		}
135
	}
1680 alexandre_ 136
    $pager_select_box = $pager->getperpageselectbox (50 , 200, 50 , false ,'%d');
137
 
138
    ob_start();
139
    include_once INS_CHEMIN_SQUELETTE.INS_FICHIER_SQUELETTE_BACKOFFICE_MOTEUR ;
140
    $ret .= ob_get_contents();
141
    ob_end_clean();
1292 neiluj 142
 
679 alexandre_ 143
    // La liste des lettres de l'alphabet
144
    for ($i = 65 ; $i <91 ; $i++) {
145
    	$GLOBALS['ins_url']->addQueryString('lettre', chr($i)) ;
146
        $ret .= "\t<a href=\"".$GLOBALS['ins_url']->getURL();
147
        $ret .= '">';
148
        $ret .= chr($i) ;
149
        $ret .= "</a> \n";
150
	}
151
	$GLOBALS['ins_url']->addQueryString ('lettre', 'tous') ;
152
	$ret .= " <a href=\"".$GLOBALS['ins_url']->getURL().'">'.AM_L_TOUS."</a>\n" ;
1680 alexandre_ 153
    //$ret .= "</div>\n" ;
1432 alexandre_ 154
    $ret .= '<div>'.$nbr_final.' r&eacute;sultat(s)</div>' ;
679 alexandre_ 155
    $GLOBALS['ins_url']->removeQueryString('lettre') ;
156
 
157
    // Menu Ajouter un inscrit
158
    $GLOBALS['ins_url']->addQueryString('ajouter', '1') ;
159
    $ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_AJOUT_MEMBRE.'</a></div>'."\n";
1432 alexandre_ 160
    $GLOBALS['ins_url']->removeQueryString('ajouter') ;
679 alexandre_ 161
	$data  = $pager->getPageData();
162
 
163
	$table = new HTML_Table(array ('class' => 'table_bazar')) ;
1292 neiluj 164
	$table->addRow(array(
165
				'<a href="'.$GLOBALS['ins_url']->getURL().'&amp;sort='.INS_CHAMPS_NOM.'">Identit&eacute;</a>',
166
				'<a href="'.$GLOBALS['ins_url']->getURL().'&amp;sort='.INS_CHAMPS_MAIL.'">Adresse mail</a>',
167
				'<a href="'.$GLOBALS['ins_url']->getURL().'&amp;sort='.INS_CHAMPS_VILLE.'">'.AM_L_VILLE.'</a>',
1432 alexandre_ 168
				'Pays ou Dpt (fr)',
169
				INS_SUPPRIMER
679 alexandre_ 170
			), '', 'TH') ;
171
 
172
	$debut = isset($_REQUEST['pageID']) ? $_REQUEST['pageID'] : 1 ;
173
	for ($i = ($debut - 1) * $_REQUEST['setPerPage'];
174
				$i < $_REQUEST['setPerPage'] * $debut;
175
				$i++) {
176
		// On teste s'il y une valeur, si oui on ajoute la ligne
177
		if (isset ($data[$i])) {
1796 alexandre_ 178
			$GLOBALS['ins_url']->addQueryString('id_inscription', $data[$i]['a_ce_id_inscription']);
679 alexandre_ 179
			$urlPop = $GLOBALS['ins_url']->getURL().'&amp;'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID];
1292 neiluj 180
			$ligne_inscrit = array ("<a href=\"$urlPop\">".$data[$i][INS_CHAMPS_NOM].' '.$data[$i][INS_CHAMPS_PRENOM].
679 alexandre_ 181
								'</a>', $data[$i][INS_CHAMPS_MAIL], $data[$i][INS_CHAMPS_VILLE]) ;
182
 
1432 alexandre_ 183
			// Pour la france on met le departement, sinon on laisse le nom du pays
679 alexandre_ 184
			if ($data[$i][INS_CHAMPS_PAYS] != 'fr') {
185
				array_push ($ligne_inscrit, $data[$i][INS_CHAMPS_LABEL_PAYS]);
186
			} else {
1298 neiluj 187
		        $req_dpt = 'select '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT.",".INS_ANNUAIRE.
1292 neiluj 188
							" where ".INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID] ;
1298 neiluj 189
		        $req_dpt .= " and ".INS_ANNUAIRE.'.'.INS_CHAMPS_DEPARTEMENT.'='.INS_TABLE_DPT.'.'
1292 neiluj 190
		        					.INS_CHAMPS_ID_DEPARTEMENT ;
191
		        $resultat_dpt = $GLOBALS['ins_db']->query($req_dpt) ;
1298 neiluj 192
		        if (DB::isError($resultat_dpt)) {
193
		        	echo $resultat_dpt->getMessage().$resultat_dpt->getDebugInfo();
194
		        }
1292 neiluj 195
		        $ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC) ;
196
				array_push ($ligne_inscrit, $ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT]) ;
1680 alexandre_ 197
 
679 alexandre_ 198
			}
1680 alexandre_ 199
			$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_SUPPRIMER_INSCRIT);
200
			$GLOBALS['ins_url']->addQueryString(INS_VARIABLE_ID_INSCRIT, $data[$i][INS_CHAMPS_ID]);
201
			array_push ($ligne_inscrit, '<a href="'.$GLOBALS['ins_url']->getURL().
202
					'" onclick="javascript:return confirm(\''.INS_SUPPRIMER.' ?\');">'.INS_SUPPRIMER.'</a>');
203
			$GLOBALS['ins_url']->removeQueryString(ANN_VARIABLE_ACTION);
204
			$GLOBALS['ins_url']->removeQueryString(INS_VARIABLE_ID_INSCRIT);
679 alexandre_ 205
			$table->addRow($ligne_inscrit) ;
206
		}
207
	}
208
	$ret .= $table->toHTML();
209
	$links = $pager->getLinks();
210
	$ret .= $links['all'] ;
211
 
212
    $ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'&amp;action='.ANN_MAIL_TOUS
213
    			.'">'.AM_L_MAIL_SELECTION."</a></div>\n" ;
214
 
448 ddelon 215
    return $ret;
216
}
217
 
218
 
219
function mkquery()
220
{
221
 
1432 alexandre_ 222
	// Requete sur l'annuaire pour extraire le nom, prenom, ville, nom du departement (jointure),
223
	// l'etat de la cotisation (jointure)
448 ddelon 224
 
225
	// le tableau suivant contient tous les champs de la table annuaire_tela sur lesquels on peut effectuer une recherche
1292 neiluj 226
	$fields_annu = array("nom" => INS_CHAMPS_NOM, "prenom" => INS_CHAMPS_PRENOM , "mail" => INS_CHAMPS_MAIL , "ville" => INS_CHAMPS_VILLE,
227
			"dept" => INS_CHAMPS_DEPARTEMENT, "pays" => INS_CHAMPS_PAYS ) ;
448 ddelon 228
 
1292 neiluj 229
    $mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ;
230
 
231
	$queries = "select ".INS_ANNUAIRE.".*" ;
679 alexandre_ 232
    $queries .= ", ".INS_TABLE_PAYS.'.'.INS_CHAMPS_LABEL_PAYS ;
1292 neiluj 233
	$queries .= " from ".INS_ANNUAIRE ;
679 alexandre_ 234
    $queries .= ",".INS_TABLE_PAYS ;
448 ddelon 235
 
236
	// Construction en fonction des champs saisies
237
 
238
	// juste le champs "rechercher", on regarde partout
679 alexandre_ 239
 
1292 neiluj 240
	$where = ' where ' ;
679 alexandre_ 241
    if (isset ($_REQUEST['recherche']) && $_REQUEST['recherche'] != "") {
242
        $where .= '('.INS_CHAMPS_NOM.' like "%'.$_REQUEST['recherche'].'%"' ; // le premier
243
        foreach($fields_annu as $key=>$value) {
244
			if ($key == "nom" || $key == 'dept') continue ;
245
            $where .= ($key == "pays" ?
246
                $_REQUEST['pays'] == "tous" ? ")" :
247
                ") and $value = '".$_REQUEST['pays']."'" : ' or '.$value.' like "%'.$_REQUEST['recherche'].'%"') ;	// les autres
248
        }
249
        if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] != 'tous') {
250
        	$where .= 'and '.INS_CHAMPS_DEPARTEMENT.'="'.$_REQUEST['dept'].'"' ;
251
        }
252
	} else {
448 ddelon 253
 
1432 alexandre_ 254
		// si un ou plusieurs autres champs ont ete indique, on les rajoute ici
448 ddelon 255
 
679 alexandre_ 256
		$or_flag = false ;
257
		foreach($fields_annu as $key=>$valeur) {
258
            if ($key != "") {
259
                if ($key == "pays") {
260
                    if (!isset($_REQUEST[$key]) || $_REQUEST[$key] == "tous") {
1292 neiluj 261
                    	$where .= " and ".INS_CHAMPS_PAYS." like '%'";
448 ddelon 262
                    } else {
1292 neiluj 263
                    	$where .= " and $valeur like \"%".$_REQUEST[$key]."%\"" ;
679 alexandre_ 264
                    }
265
                } else {
266
                    if ($key == "dept") {
267
                        if (isset($_REQUEST[$key]) && $_REQUEST[$key] != "tous") {
268
                            $where .= " and ".INS_CHAMPS_DEPARTEMENT."=".$_REQUEST[$key] ;
269
                            if ($fields_annu["pays"] != "fr") $where .= " and ".INS_CHAMPS_PAYS."=\"fr\"" ;
270
                        }
271
 
272
                    } else {
273
                        if (isset ($_REQUEST[$key]) && $or_flag) {
1292 neiluj 274
                        	$where .= "$valeur like \"%".$_REQUEST[$key]."%\"" ;
448 ddelon 275
                        } else {
1292 neiluj 276
                        	$where .= "$valeur like \"%%\"" ;
277
                        }
278
                        if ($key != "ville") $where .= " and " ;
448 ddelon 279
                    }
280
                }
679 alexandre_ 281
                $or_flag = true ;
282
            }
283
		}
1432 alexandre_ 284
		// ici le cas ou rien n'a ete saisie du tout, on affiche tout
679 alexandre_ 285
		if (!$or_flag) {
286
				$where .= INS_CHAMPS_NOM." like '%')" ;
287
		}
448 ddelon 288
	}
679 alexandre_ 289
 
290
    if (isset($_REQUEST['lettre'])) {
291
    	if ($_REQUEST['lettre'] == 'tous') $_REQUEST['lettre'] = '';
1292 neiluj 292
    	$where = ' where '.INS_CHAMPS_NOM.' like "'.$_REQUEST['lettre'].'%"' ;
448 ddelon 293
    }
679 alexandre_ 294
    $where .= " and ".INS_ANNUAIRE.".".INS_CHAMPS_PAYS."=".INS_TABLE_PAYS.".".INS_CHAMPS_ID_PAYS."" ;
295
 
296
    if (isset($nom) && $nom != "") $where .= " and ".INS_CHAMPS_NOM." like \"%$nom%\"" ;
297
    if (isset($_REQUEST['prenom']) && $_REQUEST['prenom'] != "")
298
    				$where .= " and ".INS_CHAMPS_PRENOM.' like "%'.$_REQUEST['prenom'].'%"' ;
299
    if (isset($ville) && $ville != "") $where .= " and ".INS_CHAMPS_VILLE." like \"%$ville%\"" ;
300
    if (isset($mail) && $mail != "") $where .= " and ".INS_CHAMPS_MAIL." like \"%$mail%\"" ;
301
    $where .= ' and  gip_id_i18n like "%'.$GLOBALS['lang'].'%"' ;
302
 
303
	if (isset ($_REQUEST['lettre']) && $_REQUEST['lettre'] == "tous") $_REQUEST['lettre'] = "" ;
304
    if (!isset ($_REQUEST['lettre'])) $_REQUEST['lettre'] = '' ;
1796 alexandre_ 305
    if (isset ($_REQUEST['type_inscription']) && $_REQUEST['type_inscription'] != 'tous') $where .= ' and a_ce_id_inscription="'.$_REQUEST['type_inscription'].'"';
679 alexandre_ 306
 
307
 
1292 neiluj 308
    $queries .= $where ;
679 alexandre_ 309
 
310
  if (isset($_REQUEST['sort']) && $_REQUEST['sort'] != "") $queries .= ' order by '.$_REQUEST['sort'] ;
448 ddelon 311
  return $queries;
312
}
313
 
314
 
679 alexandre_ 315
function ajouterInscrit() {
316
	$res = '';
317
	$GLOBALS['ins_url']->addQueryString ('ajouter', '1');
318
	$GLOBALS['ins_url']->addQueryString ('ajouter_v', '1');
319
	$formulaire = new HTML_formulaireInscription('inscription',  '',
320
						str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()), '', '') ;
321
	$formulaire->construitFormulaire(str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())) ;
1467 alexandre_ 322
	$msg = '';
679 alexandre_ 323
	if (isset($_REQUEST['ajouter_v'])) {
324
		if ($formulaire->validate()) {
1298 neiluj 325
			$id_utilisateur = insertion($formulaire->getSubmitValues()) ;
326
 
327
			// Appel des actions desinscriptions des applications clientes
1467 alexandre_ 328
	        $d = dir(GEN_CHEMIN_CLIENT);
329
			while (false !== ($repertoire = $d->read())) {
330
				if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php'))
331
				include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ;
332
				$msg .= GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php<br />';
333
			}
334
			$d->close();
679 alexandre_ 335
			if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) {
336
				inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
337
			}
1467 alexandre_ 338
			if (!isset ($msg)) $msg = '';
339
		    return $msg.mkengine();
679 alexandre_ 340
        }
448 ddelon 341
	}
679 alexandre_ 342
	return $formulaire->toHTML();
448 ddelon 343
}
1796 alexandre_ 344
//-- Fin du code source    ------------------------------------------------------------
345
/*
346
* $Log: not supported by cvs2svn $
347
* --------------------------------------------------------*/
1292 neiluj 348
?>