Subversion Repositories Applications.bazar

Rev

Rev 52 | Rev 54 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5 florian 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
53 florian 22
// CVS : $Id: bazar.fonct.php,v 1.18 2005-11-18 16:03:23 florian Exp $
5 florian 23
/**
24
*
25
* Fonctions du module bazar
26
*
27
*@package bazar
28
//Auteur original :
29
*@author        Alexandre Granier <alexandre@tela-botanica.org>
30
*@author        Florian Schmitt <florian@ecole-et-nature.org>
31
//Autres auteurs :
32
*@copyright     Tela-Botanica 2000-2004
53 florian 33
*@version       $Revision: 1.18 $ $Date: 2005-11-18 16:03:23 $
5 florian 34
// +------------------------------------------------------------------------------------------------------+
35
*/
36
 
37
// +------------------------------------------------------------------------------------------------------+
38
// |                                            ENTETE du PROGRAMME                                       |
39
// +------------------------------------------------------------------------------------------------------+
53 florian 40
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/QuickForm.php' ;
41
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/QuickForm/checkbox.php' ;
42
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/QuickForm/textarea.php' ;
43
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Table.php' ;
5 florian 44
require_once 'bazar.fonct.formulaire.php';
45
require_once 'bazar.fonct.rss.php';
46
 
47
// +------------------------------------------------------------------------------------------------------+
48
// |                                           LISTE de FONCTIONS                                         |
49
// +------------------------------------------------------------------------------------------------------+
50
 
51
/** niveau_droit() - Retourne le niveau de droit de l'utilisateur
52
*
53
* @param   integer Id de la nature d'offre pour connaitre les droits sur une rubrique
24 florian 54
* @param   integer Id de la personne (par défaut la personne loguée)
5 florian 55
*
56
* @return   string Retourne 'redacteur', 'administrateur', 'superadministrateur', ou 'aucun'
57
*/
58
function niveau_droit($id_nature_offre='0', $personne) {
39 florian 59
	$requete = 'select bd_niveau_droit FROM bazar_droits WHERE bd_id_utilisateur='.$personne.
5 florian 60
	           ' AND (bd_id_nature_offre='.$id_nature_offre.' OR bd_id_nature_offre=0)';
61
	$resultat = $GLOBALS['_BAZAR_']['db']->query ($requete) ;
62
	if (DB::isError($resultat)) {
63
		die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
64
	}
65
	if ($resultat->numRows() != 0) {
66
		while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
67
			if ($ligne['bd_niveau_droit']==0) return 'superadministrateur';
68
			if ($ligne['bd_niveau_droit']==1) return 'redacteur';
69
			if ($ligne['bd_niveau_droit']==2) return 'administrateur';
70
		}
71
	}
72
	else return 'aucun';
73
}
74
 
75
 
76
/** fiches_a_valider () - Renvoie les annonces restant à valider par un administrateur
77
*
78
* @return   string  HTML
79
*/
80
function fiches_a_valider() {
81
	// Pour les administrateurs d'une rubrique, on affiche les fiches a valider de cette rubrique
82
	// On effectue une requete sur le bazar pour voir les fiches a administrer
83
	$res= '<h2>'.BAZ_ANNONCES_A_ADMINISTRER.'</h2>';
11 ddelon 84
	$requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=0 AND bn_id_nature=bf_ce_nature AND bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu.' or  bn_ce_id_menu=0 ORDER BY bf_date_maj_fiche DESC' ;
5 florian 85
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
86
	if (DB::isError($resultat)) {
87
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
88
	}
89
	if ($resultat->numRows() != 0) {
90
		$tableAttr = array('id' => 'table_bazar') ;
91
		$table = new HTML_Table($tableAttr) ;
92
		$entete = array (BAZ_TITREANNONCE ,BAZ_ANNONCEUR, BAZ_TYPEANNONCE, BAZ_PUBLIER, BAZ_SUPPRIMER) ;
93
		$table->addRow($entete) ;
94
		$table->setRowType (0, 'th') ;
95
 
96
		// On affiche une ligne par proposition
97
		while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
98
			//Requete pour trouver le nom et prénom de l'annonceur
99
			$requetenomprenom = 'SELECT '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_NOM.' FROM '.BAZ_ANNUAIRE.' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'] ;
100
			$resultatnomprenom = $GLOBALS['_BAZAR_']['db']->query ($requetenomprenom) ;
101
			if (DB::isError($resultatnomprenom)) {
102
				die ("Echec de la requete<br />".$resultatnomprenom->getMessage()."<br />".$resultatnomprenom->getDebugInfo()) ;
103
			}
104
			while ($lignenomprenom = $resultatnomprenom->fetchRow (DB_FETCHMODE_ASSOC)) {
105
				$annonceur=$lignenomprenom[BAZ_CHAMPS_PRENOM]." ".$lignenomprenom[BAZ_CHAMPS_NOM];
106
			}
107
			$lien_voir=$GLOBALS['_BAZAR_']['url'];
108
			$lien_voir->addQueryString('action', BAZ_VOIR_FICHE);
109
			$lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']);
110
			$lien_voir->addQueryString('typeannonce', $ligne['bn_label_nature']);
111
 
112
			$lien_publie_oui=$GLOBALS['_BAZAR_']['url'];
113
			$lien_publie_oui->addQueryString('action', BAZ_ACTION_PUBLIER);
114
			$lien_publie_oui->addQueryString('id_fiche', $ligne['bf_id_fiche']);
115
			$lien_publie_oui->addQueryString('typeannonce', $ligne['bn_label_nature']);
116
 
117
			$lien_publie_non=$GLOBALS['_BAZAR_']['url'];
118
			$lien_publie_non->addQueryString('action', BAZ_ACTION_PAS_PUBLIER);
119
			$lien_publie_non->addQueryString('id_fiche', $ligne['bf_id_fiche']);
120
			$lien_publie_non->addQueryString('typeannonce', $ligne['bn_label_nature']);
121
 
122
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
123
			$lien_supprimer->addQueryString('action', BAZ_ACTION_SUPPRESSION);
124
			$lien_supprimer->addQueryString('id_fiche', $ligne['bf_id_fiche']);
125
			$lien_supprimer->addQueryString('typeannonce', $ligne['bn_label_nature']);
126
 
127
			$table->addRow (array(
128
			                '<a href="'.$lien_voir->getURL().'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom
129
					$annonceur."\n", // col 2 : annonceur
130
					$ligne['bn_label_nature']."\n", // col 3 : type annonce
131
					"<a href=\"".$lien_publie_oui->getURL()."\">".BAZ_OUI."</a> / \n".
132
					"<a href=\"".$lien_publie_non->getURL()."\">".BAZ_NON."</a>", // col 4 : publier ou pas
133
					"<a href=\"".$lien_supprimer->getURL()."\"".
134
					" onclick=\"javascript:return confirm('".BAZ_CONFIRMATION_SUPPRESSION."');\">".BAZ_SUPPRIMER."</a>\n")) ; // col 5 : supprimer
135
 
136
		}
137
		$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
138
		$table->updateColAttributes(1, array("align" => "center"));
139
		$table->updateColAttributes(2, array("align" => "center"));
140
		$table->updateColAttributes(3, array("align" => "center"));
141
		$table->updateColAttributes(4, array("align" => "center"));
142
		$res .= $table->toHTML() ;
143
	}
144
	else {
145
		$res .= BAZ_PAS_DE_FICHE_A_VALIDER ;
146
	}
147
 
148
	return $res;
149
}
150
 
151
 
152
/** mes_fiches () - Renvoie les fiches bazar d'un utilisateur
153
*
154
* @return   string  HTML
155
*/
156
function mes_fiches() {
24 florian 157
	if ($GLOBALS['AUTH']->getAuth()) {
158
		$res= '<h2>'.BAZ_VOS_ANNONCES.'</h2>'."\n";
159
		// requête pour voir si l'utilisateur a des fiches à son nom, classées par date de MAJ et nature d'annonce
160
		$requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_ce_utilisateur='. $GLOBALS['id_user'].
161
		           ' AND bn_id_nature=bf_ce_nature AND bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu.' or  bn_ce_id_menu=0 ORDER BY bf_date_maj_fiche DESC,bf_ce_nature ASC';
162
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
163
		if (DB::isError($resultat)) {
164
			die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
165
		}
166
		if ($resultat->numRows() != 0) {
167
			$tableAttr = array('id' => 'table_bazar') ;
168
			$table = new HTML_Table($tableAttr) ;
169
			$entete = array (BAZ_TITREANNONCE , BAZ_TYPEANNONCE, BAZ_ETATPUBLICATION, BAZ_MODIFIER, BAZ_SUPPRIMER) ;
170
			$table->addRow($entete) ;
171
			$table->setRowType (0, "th") ;
172
 
5 florian 173
		// On affiche une ligne par proposition
174
		while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
175
			if ($ligne['bf_statut_fiche']==1) $publiee=BAZ_PUBLIEE;
176
			elseif ($ligne['bf_statut_fiche']==0) $publiee=BAZ_ENCOURSDEVALIDATION;
177
			else $publiee=BAZ_REJETEE;
178
 
179
			$lien_voir=$GLOBALS['_BAZAR_']['url'];
180
			$lien_voir->addQueryString('action', BAZ_VOIR_FICHE);
181
			$lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']);
182
			$lien_voir->addQueryString('typeannonce', $ligne['bn_label_nature']);
12 ddelon 183
			$lien_voir_url=$lien_voir->getURL();
5 florian 184
 
185
			$lien_modifier=$GLOBALS['_BAZAR_']['url'];
186
			$lien_modifier->addQueryString('action', BAZ_ACTION_MODIFIER);
187
			$lien_modifier->addQueryString('id_fiche', $ligne['bf_id_fiche']);
188
			$lien_modifier->addQueryString('typeannonce', $ligne['bn_label_nature']);
12 ddelon 189
			$lien_modifier_url=$lien_modifier->getURL();
5 florian 190
 
191
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
192
			$lien_supprimer->addQueryString('action', BAZ_ACTION_SUPPRESSION);
193
			$lien_supprimer->addQueryString('id_fiche', $ligne['bf_id_fiche']);
194
			$lien_supprimer->addQueryString('typeannonce', $ligne['bn_label_nature']);
12 ddelon 195
			$lien_supprimer_url=$lien_supprimer->getURL();
5 florian 196
 
197
			$table->addRow (array(
12 ddelon 198
			                '<a href="'.$lien_voir_url.'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom
5 florian 199
					$ligne['bn_label_nature']."\n", // col 2: type annonce
200
					$publiee."\n", // col 3 : publiee ou non
12 ddelon 201
					'<a href="'.$lien_modifier_url.'">'.BAZ_MODIFIER.'</a>'."\n", // col 4 : modifier
202
					'<a href="'.$lien_supprimer_url.'" onclick="javascript:return
5 florian 203
					 confirm('.BAZ_CONFIRMATION_SUPPRESSION.');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 5 : supprimer
204
		}
205
		$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
206
		$table->updateColAttributes(1, array("align" => "center"));
207
		$table->updateColAttributes(2, array("align" => "center"));
208
		$table->updateColAttributes(3, array("align" => "center"));
209
		$table->updateColAttributes(4, array("align" => "center"));
210
		$res .= $table->toHTML() ;
24 florian 211
		}
212
	    else {
213
	    	$res .= BAZ_PAS_DE_FICHE ;
214
	    }
5 florian 215
	}
24 florian 216
	else $res=BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR;;
5 florian 217
	return $res;
218
}
219
 
220
 
221
/** baz_administrer_annonces() interface de modification de type d'annonces
222
*
223
*   return  string le code HTML
224
*/
225
function baz_administrer_annonces() {
226
	$res= '<h2>'.BAZ_ADMIN_ANNONCES.'</h2>'."\n";
227
	return $res;
228
}
229
 
230
 
24 florian 231
/** baz_afficher_formulaire_annonce() - Génère le formulaire de saisie d'une annonce
5 florian 232
*
233
* @param   string type de formulaire: insertion ou modification
234
* @param   mixed objet quickform du formulaire
235
*
236
* @return   string  code HTML avec formulaire
237
*/
238
function baz_afficher_formulaire_annonce($mode='insertion',$formtemplate) {
45 florian 239
	//verification de la modification des fichiers, des url ou des images
5 florian 240
	if (isset($_GET['url'])) {
241
		if ($_GET['url']==1) baz_insertion_url($_POST['url_lien'],$_POST['url_texte'],$GLOBALS['_BAZAR_']['id_fiche']);
242
		if ($_GET['url']==2) baz_suppression_url($_GET['id_url']);
243
	}
244
	if (isset($_GET['fichier'])) {
245
		if ($_GET['fichier']==1) baz_insertion_fichier($_POST['fichier_description'], $GLOBALS['_BAZAR_']["id_fiche"]);
246
		if ($_GET['fichier']==2) baz_suppression_fichier($_GET['id_fichier']);
247
	}
248
	if (isset($_GET['image'])) {
249
		if ($_GET['image']==1) baz_insertion_image($GLOBALS['_BAZAR_']['id_fiche']);
250
		if ($_GET['image']==2) baz_suppression_image($GLOBALS['_BAZAR_']['id_fiche']);
251
	}
252
 
253
	//titre de la rubrique
254
	$res= '<h2>'.BAZ_TITRE_SAISIE_ANNONCE.$GLOBALS['_BAZAR_']['typeannonce'].'</h2>';
45 florian 255
	//Ajout des boutons
256
	$bouton[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER, '&nbsp;');
5 florian 257
 
45 florian 258
	//ajout d'une page sur les conditions pour l'annonce si elles existent
259
	$requete = 'SELECT bn_condition FROM bazar_nature WHERE bn_label_nature="'.$GLOBALS['_BAZAR_']['typeannonce'].'"';
260
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete);
261
	if (DB::isError($resultat)) {
262
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
263
	}
264
	$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
265
	if (($ligne['bn_condition']!='')AND(!isset($_POST['accept_condition']))AND(!isset($_GET['url'])OR(!isset($_GET['fichier']))OR(!isset($_GET['image'])))) {
266
		$lien_formulaire=$GLOBALS['_BAZAR_']['url'];
267
		$lien_formulaire->addQueryString('action', $_REQUEST['action']);
268
		$formtemplate = new HTML_QuickForm('formulaire', 'post', preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) );
53 florian 269
		require_once PAP_CHEMIN_RACINE.'api/pear/HTML/QuickForm/html.php';
45 florian 270
		$conditions= new HTML_QuickForm_html('<tr><td colspan="2"><p style="padding:4px; margin:5px; width: 100%; background: #C1CBA7;">'.$ligne['bn_condition'].'</p></td></tr>');
271
		$formtemplate->addElement('hidden','typeannonce', $_REQUEST['typeannonce']);
272
		if (isset($_REQUEST['id_fiche'])) $formtemplate->addElement('hidden','id_fiche', $_REQUEST['id_fiche']);
273
		$formtemplate->addElement($conditions);
274
		$formtemplate->addElement('checkbox', 'accept_condition',BAZ_ACCEPTE_CONDITIONS) ;
275
		$formtemplate->addRule('accept_condition', BAZ_ACCEPTE_CONDITIONS_REQUIS, 'required', '', 'client') ;
276
		$formtemplate->addGroup($bouton, null, null, '&nbsp;');
277
	}
278
	//affichage du formulaire si conditions acceptées
279
	else {
280
	//Parcours du fichier de templates, pour mettre les champs specifiques
5 florian 281
	$tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['typeannonce'].'.tpl');
282
	for ($i=0; $i<count($tableau); $i++) {
283
		$tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'],
284
		                     $tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ;
285
	}
286
	$formtemplate->addGroup($bouton, null, null, '&nbsp;');
287
 
288
	if ($mode=='modification') {
289
		//initialisation de la variable globale id_fiche
45 florian 290
		$GLOBALS['_BAZAR_']['id_fiche'] = $_REQUEST['id_fiche'];
5 florian 291
 
45 florian 292
		//Ajout des valeurs par defaut
293
		$formtemplate->setDefaults(baz_valeurs_fiche($GLOBALS['_BAZAR_']['id_fiche'])) ;
294
 
295
		//preparation des formulaires supplementaires
5 florian 296
		//AJOUTER UNE IMAGE
297
		$lien_formulaire=$GLOBALS['_BAZAR_']['url'];
298
		$lien_formulaire->addQueryString('action', BAZ_ACTION_MODIFIER);
299
		$lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
300
		$lien_formulaire->addQueryString('typeannonce', $GLOBALS['_BAZAR_']['typeannonce']);
301
		$lien_formulaire->addQueryString('image', '1');
302
 
303
		$requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
304
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
305
		if (DB::isError ($resultat)) {
306
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
307
		}
308
 
309
		if ($resultat->numRows()>0) {
310
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
311
				$image=$ligne->bf_url_image;
312
			}
313
			if ($image!=NULL) {
314
				$html='<tr><td colspan="2" width="600px"><hr /><img src="client/bazar/images/'.$image.'" border=0 alt="'.BAZ_TEXTE_IMG_ALTERNATIF.'" />'."\n";
315
				$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
316
				$lien_supprimer->addQueryString('action', $_GET['action']);
317
				$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
45 florian 318
				$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
5 florian 319
				$lien_supprimer->addQueryString('image', '2');
320
				$html.= '<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION.'\');" >'.BAZ_SUPPRIMER.'</a></td></tr>'."\n";
321
				$formimage = new HTML_QuickForm('formulaire', 'post',  preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) ) ;
322
				$formimage->addElement('html', $html) ;
323
			}
324
			else  {
325
				$formimage = new HTML_QuickForm('formulaire', 'post',  preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) ) ;
326
				$formimage->addElement('html', '<tr><td colspan="2" width="600px"><hr /><h3>'.BAZ_AJOUTER_IMAGE.'</h3></td></tr>') ;
327
				$formimage->addElement('file', 'image', BAZ_IMAGE) ;
328
				$formimage->addRule('image', BAZ_IMAGE_VALIDE_REQUIS, '', '', 'client') ; //a completer pour checker l'image
329
				$formimage->setMaxFileSize(BAZ_TAILLE_MAX_FICHIER);
330
				$formimage->addGroup($bouton, null, null, '');
331
			}
332
		}
333
		else {
334
			$formimage = new HTML_QuickForm('formulaire', 'post',  preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) ) ;
335
			$formimage->addElement('html', '<tr><td colspan="2" width="600px"><hr /><h3>'.BAZ_AJOUTER_IMAGE.'</h3></td></tr>') ;
336
			$formimage->addElement('file', 'image', BAZ_IMAGE) ;
337
			$formimage->addRule('image', BAZ_IMAGE_VALIDE_REQUIS, '', '', 'client') ; //a completer pour checker l'image
338
			$formimage->setMaxFileSize(BAZ_TAILLE_MAX_FICHIER);
339
			$formimage->addGroup($bouton, null, null, '');
340
		}
341
 
342
		//AJOUTER DES URL
343
		//recherche des URLs déjà entrées dans la base
344
		$requete = 'SELECT bu_id_url, bu_url, bu_descriptif_url FROM bazar_url WHERE bu_ce_fiche='.$GLOBALS['_BAZAR_']["id_fiche"];
345
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
346
		if (DB::isError ($resultat)) {
347
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
348
		}
349
		if ($resultat->numRows()>0) {
350
			$html= '<tr><td colspan="2" width="600px"><hr /><h3>'.BAZ_LISTE_URL.'</h3>'."\n";
351
			$tableAttr = array("id" => "table_bazar") ;
352
			$table = new HTML_Table($tableAttr) ;
353
			$entete = array (BAZ_LIEN , BAZ_SUPPRIMER) ;
354
			$table->addRow($entete) ;
355
			$table->setRowType(0, "th") ;
356
 
357
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
358
			$lien_supprimer->addQueryString('action', $_GET['action']);
359
			$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
45 florian 360
			$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
5 florian 361
			$lien_supprimer->addQueryString('url', '2');
362
 
363
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
364
				$lien_supprimer->addQueryString('id_url', $ligne->bu_id_url);
365
				$table->addRow (array(
366
				'<a href="'.$ligne->bu_url.'" target="_blank"> '.$ligne->bu_descriptif_url.'</a>', // col 1 : le lien
367
				'<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION.'\');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 2 : supprimer
368
				$lien_supprimer->removeQueryString('id_url');
369
			}
370
			$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
371
			$table->updateColAttributes(1, array("align" => "center"));
372
			$html.= $table->toHTML().'</td></tr>' ;
373
		}
374
		else {
375
			$html= '<tr><td colspan="2" width="600px"><hr /><h3>'.BAZ_PAS_URL.'</h3></td></tr>'."\n";
376
		}
377
		$html.='<tr><td colspan="2" width="600px"><h4>'.BAZ_AJOUTER_URL.'</h4>'."\n";
378
		$lien_formulaire=$GLOBALS['_BAZAR_']['url'];
379
		$lien_formulaire->addQueryString('action', $_GET['action']);
380
		$lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
381
		$lien_formulaire->addQueryString('typeannonce', $GLOBALS['_BAZAR_']['typeannonce']);
382
		$lien_formulaire->addQueryString('url', '1');
383
		$formurl = new HTML_QuickForm('formulaire', 'post',  preg_replace ('/&amp;/', '&', $lien_formulaire->getURL())) ;
384
		$formurl->addElement('html', $html) ;
385
		$formurl->addElement('text', 'url_lien', BAZ_URL_LIEN) ;
386
		$formurl->addElement('text', 'url_texte', BAZ_URL_TEXTE) ;
387
		$formurl->addRule('url_lien', BAZ_URL_LIEN_REQUIS, 'required', '', 'client') ;
388
		$formurl->addRule('url_texte', BAZ_URL_TEXTE_REQUIS, 'required', '', 'client') ;
389
 
390
		//AJOUTER DES FICHIERS JOINTS
391
		$requete = 'SELECT * FROM bazar_fichier_joint WHERE bfj_ce_fiche='.$GLOBALS['_BAZAR_']["id_fiche"];
392
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
393
		if (DB::isError ($resultat)) {
394
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
395
		}
396
 
397
		if ($resultat->numRows()>0) {
398
			$html= '<tr><td colspan="2" width="600px"><hr /><h3>'.BAZ_LISTE_FICHIERS_JOINTS.'</h3>'."\n";
399
			$tableAttr = array("id" => "table_bazar") ;
400
			$table = new HTML_Table($tableAttr) ;
401
			$entete = array (BAZ_FICHIER , BAZ_SUPPRIMER) ;
402
			$table->addRow($entete) ;
403
			$table->setRowType(0, "th") ;
404
 
405
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
406
			$lien_supprimer->addQueryString('action', $_GET['action']);
407
			$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
45 florian 408
			$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
5 florian 409
			$lien_supprimer->addQueryString('fichier', '2');
410
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
411
				$lien_supprimer->addQueryString('id_fichier', $ligne->bfj_id_fichier);
412
				$table->addRow (array(
413
				        '<a href="/client/bazar/upload/'.$ligne->bfj_fichier.'"> '.$ligne->bfj_description.'</a>', // col 1 : le fichier et sa description
414
					'<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION.'\');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 2 : supprimer
415
					$lien_supprimer->removeQueryString('id_fichier');
416
			}
417
			$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
418
			$table->updateColAttributes(1, array("align" => "center"));
419
			$html.= $table->toHTML().'</td></tr>' ;
420
		}
421
		else {
422
			$html= '<tr><td colspan="2"><hr /><h3>'.BAZ_PAS_DE_FICHIERS_JOINTS.'</h3></td></tr>'."\n";
423
		}
424
		$html.='<tr><td colspan="2" width="600px"><h4>'.BAZ_AJOUTER_FICHIER_JOINT.'</h4>'.'</td></tr>'."\n";
425
		$lien_formulaire=$GLOBALS['_BAZAR_']['url'];
426
		$lien_formulaire->addQueryString('action', $_GET['action']);
427
		$lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
428
		$lien_formulaire->addQueryString('typeannonce', $GLOBALS['_BAZAR_']['typeannonce']);
429
		$lien_formulaire->addQueryString('fichier', '1');
430
 
431
		$formfichiers = new HTML_QuickForm('formulaire', 'post',  preg_replace ('/&amp;/', '&', $lien_formulaire->getURL())) ;
432
		$formfichiers->addElement('html', $html) ;
433
		$formfichiers->addElement('file', 'fichier_joint', BAZ_FICHIER_JOINT) ;
434
		$formfichiers->addElement('text', 'fichier_description', BAZ_FICHIER_DESCRIPTION) ;
435
		$formfichiers->addRule('fichier_joint', BAZ_FICHIER_JOINT_REQUIS, 'required', '', 'client') ;
436
		$formfichiers->addRule('fichier_description', BAZ_FICHIER_LABEL_REQUIS, 'required', '', 'client') ;
437
		$formfichiers->setMaxFileSize(BAZ_TAILLE_MAX_FICHIER);
438
 
439
		//Ajout de 'http://' comme valeur par default d'une url
440
		$formurl->setDefaults(array('url_lien'=>'http://'));
441
		//Bouton de validation du formulaire
442
		$formurl->addGroup($bouton, null, null, '');
443
		$formfichiers->addGroup($bouton, null, null, '');
444
	}
45 florian 445
	}
446
	//Affichage a l'ecran
447
	$res .= $formtemplate->toHTML()."\n";
448
	if (isset($formimage)) $res .= $formimage->toHTML()."\n".$formurl->toHTML()."\n".$formfichiers->toHTML()."\n";
449
 
5 florian 450
	return $res;
451
}
452
 
453
 
454
/** baz_formulaire() - Renvoie le menu pour les saisies et modification des annonces
455
*
456
* @param   string choix du formulaire à afficher (soit formulaire personnalisé de l'annonce, soit choix du type d'annonce)
457
*
458
* @return   string  HTML
459
*/
460
function baz_formulaire($mode = 'inscription') {
24 florian 461
	if ($GLOBALS['AUTH']->getAuth()) {
45 florian 462
	//Recuperer les eventuelles variables passees en GET ou en POST
463
	if (isset($_REQUEST['id_fiche'])) $GLOBALS['_BAZAR_']['id_fiche']=$_REQUEST['id_fiche'];
21 alexandre_ 464
	if (isset($_REQUEST['typeannonce'])) {
465
		$GLOBALS['_BAZAR_']['typeannonce']=$_REQUEST['typeannonce'];
466
		// Pour éviter qu'un formulaire soit revalidé si l'utilisateur
467
		// Clique sur son bouton précédent
468
 
469
		if ($mode == BAZ_ACTION_NOUVEAU) unset($_SESSION['formulaire_annonce_valide']) ;
470
	}
5 florian 471
 
472
	//requete pour obtenir l'id du type d'annonce
473
        if (isset($GLOBALS['_BAZAR_']['typeannonce'])) {
474
		$requete = 'SELECT bn_id_nature FROM bazar_nature WHERE bn_label_nature="'.$GLOBALS['_BAZAR_']['typeannonce'].'"' ;
475
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
476
		if (DB::isError($resultat)) {
477
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
478
		}
479
		while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
480
			$GLOBALS['_BAZAR_']['id_typeannonce']=$ligne['bn_id_nature'];
481
		}
482
	}
483
	$lien_formulaire=$GLOBALS['_BAZAR_']['url'];
45 florian 484
	//Definir le lien du formulaire en fonction du mode de formulaire choisi
5 florian 485
	if ($mode == 'inscription') $lien_formulaire->addQueryString('action', BAZ_ACTION_NOUVEAU_V);
486
	if ($mode == BAZ_DEPOSER_ANNONCE) $lien_formulaire->addQueryString('action', BAZ_DEPOSER_ANNONCE);
487
	if ($mode == BAZ_ACTION_NOUVEAU) $lien_formulaire->addQueryString('action', BAZ_ACTION_NOUVEAU_V);
488
	if ($mode == BAZ_ACTION_MODIFIER) {
489
		$lien_formulaire->addQueryString('action', BAZ_ACTION_MODIFIER_V);
490
		$lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
491
	}
492
	if ($mode == BAZ_ACTION_MODIFIER_V) {
493
		$lien_formulaire->addQueryString('action', BAZ_ACTION_MODIFIER_V);
494
		$lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
495
	}
496
	if (!isset($GLOBALS['_BAZAR_']['typeannonce'])) $lien_formulaire->addQueryString('action', BAZ_ACTION_NOUVEAU);
497
	else $lien_formulaire->addQueryString('typeannonce', $GLOBALS['_BAZAR_']['typeannonce']);
498
	if ($mode == BAZ_GERER_DROITS) $lien_formulaire->addQueryString('action', BAZ_GERER_DROITS);
499
 
500
	$formtemplate = new HTML_QuickForm('formulaire', 'post', preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) );
46 florian 501
	//Traduction de champs requis
502
	$formtemplate->setRequiredNote(BAZ_CHAMPS_REQUIS) ;
503
    $formtemplate->setJsWarnings(BAZ_ERREUR_SAISIE,BAZ_VEUILLEZ_CORRIGER);
504
 
5 florian 505
	//------------------------------------------------------------------------------------------------
506
	//AFFICHAGE DU FORMULAIRE GENERAL DE CHOIX DU TYPE D'ANNONCE
507
	//------------------------------------------------------------------------------------------------
508
	if ($mode == BAZ_DEPOSER_ANNONCE) {
509
		$res = '';
510
 
511
		//requete pour obtenir le nom et la description des types d'annonce
24 florian 512
		$requete = "SELECT bn_id_nature, bn_label_nature, bn_description, bn_condition FROM bazar_nature WHERE bn_ce_id_menu=".$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu." or  bn_ce_id_menu=0 ORDER BY bn_label_nature ASC";
5 florian 513
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
514
		if (DB::isError($resultat)) {
515
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
516
		}
517
		$res.="<h2>".BAZ_DEPOSE_UNE_NOUVELLE_ANNONCE.'</h2>'."\n";
518
		$res.=BAZ_CHOIX_TYPEANNONCE.'<br />';
519
		while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
520
			$droitspers=niveau_droit($ligne["bn_id_nature"],$GLOBALS["id_user"]);
521
			if (($droitspers=='redacteur') or ($droitspers=='administrateur') or ($droitspers=='superadministrateur')) {
7 florian 522
				$formtemplate->addElement('radio', 'typeannonce', '', '<strong>'.$ligne['bn_label_nature'].
523
				           ':</strong><br />'.$ligne['bn_description'], $ligne['bn_label_nature'], array("id" => 'select'.$ligne['bn_id_nature'], "style" => 'float:left;'));
5 florian 524
			}
525
 
526
		}
527
 
7 florian 528
		$squelette =& $formtemplate->defaultRenderer();
529
		$squelette->setFormTemplate("\n".'<div id="choix"><form {attributes}>'."\n".'{content}'."\n".'</form></div>'."\n");
52 florian 530
		$squelette->setElementTemplate( '<div class="listechoix">'."\n".'{element}'."\n".'</div>'."\n");
7 florian 531
 
5 florian 532
		//Mettre les annonces en choix par défaut
533
		$formtemplate->setdefaults(array('typeannonce'=>'Annonces'));
534
 
535
		//Bouton de validation du formulaire
536
		$bouton[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER);
7 florian 537
		$formtemplate->addGroup($bouton, null, null, '&nbsp;');
5 florian 538
 
539
		//Affichage à l'écran
540
		$res.= $formtemplate->toHTML() ;
541
	}
542
 
543
	//------------------------------------------------------------------------------------------------
544
	//AFFICHAGE DU FORMULAIRE CORRESPONDANT AU TYPE DE L'ANNONCE CHOISI PAR L'UTILISATEUR
545
	//------------------------------------------------------------------------------------------------
546
	if ($mode == BAZ_ACTION_NOUVEAU) {
547
		$res=baz_afficher_formulaire_annonce('insertion',$formtemplate);
21 alexandre_ 548
 
5 florian 549
	}
550
 
551
	//------------------------------------------------------------------------------------------------
552
	//CAS DE LA MODIFICATION D'UNE ANNONCE (FORMULAIRE DE MODIFICATION)
553
	//------------------------------------------------------------------------------------------------
554
	if ($mode == BAZ_ACTION_MODIFIER) {
555
		$res=baz_afficher_formulaire_annonce('modification',$formtemplate);
556
	}
557
 
558
	//------------------------------------------------------------------------------------------------
559
	//CAS DE L'INSCRIPTION D'UNE ANNONCE
560
	//------------------------------------------------------------------------------------------------
561
	if ($mode == 'inscription') {
21 alexandre_ 562
		if ($formtemplate->validate() && !isset($_SESSION['formulaire_annonce_valide'])) {
5 florian 563
			$formtemplate->process('baz_insertion', false) ;
21 alexandre_ 564
			$_SESSION['formulaire_annonce_valide'] = 1;
5 florian 565
			return;
566
		}
567
	}
568
 
569
	//------------------------------------------------------------------------------------------------
570
	//CAS DE LA MODIFICATION D'UNE ANNONCE (VALIDATION ET MAJ)
571
	//------------------------------------------------------------------------------------------------
572
	if ($mode == BAZ_ACTION_MODIFIER_V) {
573
		if ($formtemplate->validate()) {
574
			$formtemplate->process('baz_mise_a_jour', false) ;
575
			return ;
576
		}
577
	}
578
 
579
	//------------------------------------------------------------------------------------------------
580
	//CAS OU LE FORMULAIRE DE GESTION DES DROITS EST APPELE
581
	//------------------------------------------------------------------------------------------------
582
	if ($mode == BAZ_GERER_DROITS) {
583
		//Initialisation de la variable personne
584
		if ( isset($_POST['personnes']) ) {
585
			$personne=$_POST['personnes'];
586
		}
587
		else $personne=0;
588
 
589
 
24 florian 590
		//Cas ou les droits ont été changés
5 florian 591
		if (isset($_GET['pers'])) {
592
			$personne=$_GET['pers'];
593
			//CAS DES DROITS POUR UN TYPE D'ANNONCE: On efface tous les droits de la personne pour ce type d'annonce
594
			if (isset($_GET['idtypeannonce'])) {
595
				$requete = 'DELETE FROM bazar_droits WHERE bd_id_utilisateur='.$_GET['pers'].
596
					   ' AND bd_id_nature_offre='.$_GET['idtypeannonce'];
597
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
598
				if (DB::isError($resultat)) {
599
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
600
				}
601
			}
602
			//CAS DU SUPER ADMIN: On efface tous les droits de la personne en général
603
			else {
604
				$requete = 'DELETE FROM bazar_droits WHERE bd_id_utilisateur='.$_GET['pers'];
605
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
606
				if (DB::isError($resultat)) {
607
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
608
				}
609
			}
610
			if ($_GET['droits']=='superadmin') {
611
				$requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].',0,0)';
612
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
613
				if (DB::isError($resultat)) {
614
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
615
				}
616
			}
617
			elseif ($_GET['droits']=='redacteur') {
618
				$requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].','.$_GET['idtypeannonce'].',1)';
619
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
620
				if (DB::isError($resultat)) {
621
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
622
				}
623
			}
624
			elseif ($_GET['droits']=='admin') {
625
				$requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].','.$_GET['idtypeannonce'].',2)';
626
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
627
				if (DB::isError($resultat)) {
628
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
629
				}
630
			}
631
		}
632
 
633
		//requete pour obtenir l'id, le nom et prénom des personnes inscrites à l'annuaire sauf soi même
634
		$requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' FROM '.BAZ_ANNUAIRE.
635
			   ' WHERE '.BAZ_CHAMPS_ID."!=".$GLOBALS['id_user'].' ORDER BY '.BAZ_CHAMPS_NOM.' ASC';
636
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
637
		if (DB::isError($resultat)) {
638
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
639
		}
640
		$res='<h2>'.BAZ_GESTION_DES_DROITS.'</h2>'."\n";
641
		$res.=BAZ_DESCRIPTION_GESTION_DES_DROITS.'<br /><br />';
642
		$personnes_select[0]=BAZ_SELECTION;
643
		while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
644
			$personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ;
645
		}
646
		$java=array ('onchange'=>'this.form.submit();');
647
		$formtemplate->addElement ('select', 'personnes', BAZ_LABEL_CHOIX_PERSONNE, $personnes_select, $java) ;
648
		$defauts=array ('personnes'=>$personne);
649
		$formtemplate->setDefaults($defauts);
650
		$res.= $formtemplate->toHTML() ;
651
 
652
 
653
 
654
		if ($personne!=0) {
655
			//cas du super utilisateur
656
			if (niveau_droit(0,$personne)=='superadministrateur') {
657
				$res.= '<br />'.BAZ_EST_SUPERADMINISTRATEUR.'<br /><br />'."\n";
658
				$lien_enlever_superadmin=$GLOBALS['_BAZAR_']['url'];
659
				$lien_enlever_superadmin->addQueryString('action', BAZ_GERER_DROITS);
660
				$lien_enlever_superadmin->addQueryString('pers', $personne);
661
				$lien_enlever_superadmin->addQueryString('droits', 'aucun');
662
				$res.= '<a href='.$lien_enlever_superadmin->getURL().'>'.BAZ_CHANGER_SUPERADMINISTRATEUR.'</a><br />'."\n";
663
			}
664
			else {
665
				$lien_passer_superadmin=$GLOBALS['_BAZAR_']['url'];
666
				$lien_passer_superadmin->addQueryString('action', BAZ_GERER_DROITS);
667
				$lien_passer_superadmin->addQueryString('pers', $personne);
668
				$lien_passer_superadmin->addQueryString('droits', 'superadmin');
669
				$res.= '<a href='.$lien_passer_superadmin->getURL().'>'.BAZ_PASSER_SUPERADMINISTRATEUR.'</a><br />'."\n";
670
 
671
				//on cherche les différentes rubriques d'annonces
11 ddelon 672
				$requete = 'SELECT bn_id_nature, bn_label_nature FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu .' or  bn_ce_id_menu=0';
5 florian 673
				$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
674
				if (DB::isError($resultat)) {
675
					die ($resultat->getMessage().$resultat->getDebugInfo()) ;
676
				}
677
				$res.='<br /><b>'.BAZ_DROITS_PAR_TYPE.'</b><br /><br />';
678
 
679
				$table = new HTML_Table(array ('width' => '100%', 'class' => 'table_bazar')) ;
680
				$table->addRow(array ('<b>'.BAZ_TYPE_ANNONCES.'</b>',
681
				                      '<b>'.BAZ_DROITS_ACTUELS.'</b>',
682
						      '<b>'.BAZ_PASSER_EN.'</b>',
683
						      '<b>'.BAZ_OU_PASSER_EN.'</b>')) ;
684
				$table->setRowType (0, 'th') ;
685
 
686
				while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
687
					$droits=niveau_droit($ligne['bn_id_nature'],$personne);
688
 
689
					$lien_aucun_droit=$GLOBALS['_BAZAR_']['url'];
690
					$lien_aucun_droit->addQueryString('action', BAZ_GERER_DROITS);
691
					$lien_aucun_droit->addQueryString('pers', $personne);
692
					$lien_aucun_droit->addQueryString('droits', 'aucun');
693
					$lien_aucun_droit->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
694
 
695
					$lien_passer_redacteur=$GLOBALS['_BAZAR_']['url'];
696
					$lien_passer_redacteur->addQueryString('action', BAZ_GERER_DROITS);
697
					$lien_passer_redacteur->addQueryString('pers', $personne);
698
					$lien_passer_redacteur->addQueryString('droits', 'redacteur');
699
					$lien_passer_redacteur->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
700
 
701
					$lien_passer_admin=$GLOBALS['_BAZAR_']['url'];
702
					$lien_passer_admin->addQueryString('action', BAZ_GERER_DROITS);
703
					$lien_passer_admin->addQueryString('pers', $personne);
704
					$lien_passer_admin->addQueryString('droits', 'admin');
705
					$lien_passer_admin->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
706
 
707
					if ($droits=='aucun') {
708
						$table->addRow(array('<b>'.$ligne['bn_label_nature'].'</b>',
709
						                     BAZ_AUCUN_DROIT,
710
						                     '<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_DROIT_REDACTEUR.'</a>',
711
								     '<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>'));
712
					}
713
					elseif ($droits=='redacteur') {
714
						$table->addRow(array('<b>'.$ligne['bn_label_nature'].'</b>',
715
						                     BAZ_DROIT_REDACTEUR,
716
						                     '<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>',
717
								     '<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>'));
718
					}
719
					else {
720
						$table->addRow(array('<b>'.$ligne['bn_label_nature'].'</b>',
721
								     BAZ_DROIT_ADMIN,
722
								     '<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>',
723
								     '<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_DROIT_REDACTEUR.'</a>'));
724
					}
725
				}
726
				$table->altRowAttributes(1, array('class' => 'ligne_impaire'), array('class' => 'ligne_paire'));
727
				$table->updateColAttributes(0, array('align' => 'left'));
728
				$table->updateColAttributes(1, array('align' => 'left'));
729
				$table->updateColAttributes(2, array('align' => 'left'));
730
				$table->updateColAttributes(3, array('align' => 'left'));
731
				$res.=$table->toHTML() ;
732
			}
733
		}
734
	}
24 florian 735
    }
736
	else $res=BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR;
5 florian 737
	return $res;
738
}
739
 
740
 
741
/** requete_bazar_fiche() - preparer la requete d'insertion ou de MAJ de la table bazar_fiche à partir du fichier de template
742
*
743
* @global   mixed L'objet contenant les valeurs issues de la saisie du formulaire
744
* @return   void
745
*/
746
function requete_bazar_fiche($valeur) {
747
	$requete=NULL;
748
	//l'annonce est directement publiée pour les admins
749
	if ((niveau_droit($GLOBALS['_BAZAR_']['id_typeannonce'],$GLOBALS['id_user'])=='administrateur') or
750
	    (niveau_droit($GLOBALS['_BAZAR_']['id_typeannonce'],$GLOBALS['id_user'])=='superadministrateur')) {
751
		$requete.='bf_statut_fiche=1,';
752
	}
753
	else {
754
		$requete.='bf_statut_fiche="'.BAZ_ETAT_VALIDATION.'",';
755
	}
756
 
757
	$tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['typeannonce'].'.tpl');
758
	for ($i=0; $i<count($tableau); $i++) {
759
		if ($tableau[$i]['type']!='labelhtml') {
760
			if (($tableau[$i]['type']=='listedatedeb')or($tableau[$i]['type']=='listedatefin')) {
761
				$val=$valeur[$tableau[$i]['nom_bdd']]['Y'].'-'.$valeur[$tableau[$i]['nom_bdd']]['m'].'-'.$valeur[$tableau[$i]['nom_bdd']]['d'];
762
			}
763
			else {
53 florian 764
				$val=addslashes($valeur[$tableau[$i]['nom_bdd']]);
5 florian 765
			}
766
			$requete.=$tableau[$i]['nom_bdd'].'="'.$val.'", ';
767
		}
768
	}
769
 
770
	$requete.=' bf_date_maj_fiche=NOW()';
771
 
772
	return $requete;
773
}
774
 
775
 
776
/** baz_insertion() - inserer une nouvelle fiche
777
*
778
* @array   Le tableau des valeurs à insérer
779
* @integer Valeur de l'identifiant de la fiche
780
* @return   void
781
*/
782
function baz_insertion($valeur) {
13 alexandre_ 783
 
44 florian 784
		// Recuperation de bn_appropriation
13 alexandre_ 785
		$requete_app = 'select bn_appropriation from bazar_nature where bn_id_nature='.$GLOBALS['_BAZAR_']['id_typeannonce'] ;
786
		$resultat_app = $GLOBALS['_BAZAR_']['db']->query($requete_app) ;
787
		$ligne = $resultat_app ->fetchRow(DB_FETCHMODE_ASSOC) ;
788
 
53 florian 789
        // ===========  Insertion d'une nouvelle fiche ===================
5 florian 790
        //requete d'insertion dans bazar_fiche
791
        $requete = 'INSERT INTO bazar_fiche SET bf_id_fiche='.baz_nextid('bazar_fiche', 'bf_id_fiche', $GLOBALS['_BAZAR_']['db']).','.
792
		   'bf_ce_utilisateur='.$GLOBALS['id_user'].', bf_ce_nature='.$GLOBALS['_BAZAR_']['id_typeannonce'].','.
13 alexandre_ 793
		   'bf_date_creation_fiche=NOW(),';
53 florian 794
		if ($ligne['bn_appropriation'] == 1) {
795
			$requete .= 'bf_date_debut_validite_fiche=now(), ' ;
796
		}
797
		$requete .=requete_bazar_fiche(&$valeur, $GLOBALS['_BAZAR_']['id_typeannonce']) ;
798
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
799
		if (DB::isError($resultat)) {
800
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
801
		}
802
		return;
5 florian 803
}
804
 
805
 
806
/** baz_insertion_url() - insérer un lien URL à une fiche
807
*
808
* @global   string L'url du lien
809
* @global   string Le texte du lien
810
* @global   integer L'identifiant de la fiche
811
* @return   void
812
*/
813
function baz_insertion_url($url_lien, $url_texte, $idfiche) {
814
	//requete d'insertion dans bazar_url
815
	$id_url = baz_nextId('bazar_url', 'bu_id_url', $GLOBALS['_BAZAR_']['db']) ;
816
	$requete = 'INSERT INTO bazar_url SET bu_id_url='.$id_url.', bu_ce_fiche='.$idfiche.', '.
817
		   'bu_url="'.$url_lien.'", bu_descriptif_url="'.addslashes($url_texte).'"';
818
 
819
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
820
        if (DB::isError($resultat)) {
821
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
822
        }
823
	return;
824
}
825
 
826
 
827
/** baz_insertion_fichier() - insérer un fichier à une fiche
828
*
829
* @global   string Le label du fichier
830
* @global   string La description du fichier
831
* @global   integer L'identifiant de la fiche
832
* @return   void
833
*/
834
function baz_insertion_fichier($fichier_description, $idfiche) {
835
	//vérification de la présence de ce fichier
836
	$requete = 'SELECT bfj_id_fichier FROM bazar_fichier_joint WHERE bfj_fichier="'.$_FILES['fichier_joint']['name'].'"';
837
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
838
        if (DB::isError($resultat)) {
839
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
840
        }
841
	if ($resultat->numRows()==0) {
842
		$chemin_destination=BAZ_CHEMIN_APPLI.'upload/'.$_FILES['fichier_joint']['name'];
843
		move_uploaded_file($_FILES['fichier_joint']['tmp_name'], $chemin_destination);
844
	}
845
	else echo BAZ_FICHIER_EXISTANT;
846
	$id_fichier_joint = baz_nextId('bazar_fichier_joint', 'bfj_id_fichier', $GLOBALS['_BAZAR_']['db']) ;
847
	$requete = 'INSERT INTO bazar_fichier_joint SET bfj_id_fichier='.$id_fichier_joint.', bfj_ce_fiche='.$idfiche.
848
	           ', bfj_description="'.addslashes($fichier_description).'", bfj_fichier="'.$_FILES['fichier_joint']['name'].'"';
849
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
850
        if (DB::isError($resultat)) {
851
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
852
        }
853
	return;
854
}
855
 
856
 
857
/** baz_insertion_image() - insérer une image à une fiche
858
*
859
* @global   integer L'identifiant de la fiche
860
* @return   void
861
*/
862
function baz_insertion_image($idfiche) {
863
	//vérification de la présence de ce fichier
864
	$requete = 'SELECT bf_id_fiche FROM bazar_fiche WHERE bf_url_image="'.$_FILES['image']['name'].'"';
865
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
866
        if (DB::isError($resultat)) {
867
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
868
        }
869
	if ($resultat->numRows()==0) {
870
		$chemin_destination=BAZ_CHEMIN_APPLI.'images/'.$_FILES['image']['name'];
871
		move_uploaded_file($_FILES['image']['tmp_name'], $chemin_destination);
872
	}
873
	else echo BAZ_FICHIER_EXISTANT;
874
	//vérification de l'existence de la fiche
875
	$requete = 'SELECT bf_id_fiche FROM bazar_fiche WHERE bf_id_fiche='.$idfiche;
876
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
877
        if (DB::isError($resultat)) {
878
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
879
        }
880
	if ($resultat->numRows()==0) {
881
		//création d'une fiche temporaire avec l'image
882
	$requete = 'INSERT INTO bazar_fiche SET bf_id_fiche='.$idfiche.', bf_ce_nature='.$GLOBALS['_BAZAR_']['id_typeannonce'].', bf_ce_utilisateur='.$GLOBALS['id_user'].', bf_date_creation_fiche=NOW(), bf_url_image="'.$_FILES['image']['name'].'", '.
883
		   'bf_titre="annonce temporaire"';
884
	}
885
	else {
886
		$requete='UPDATE bazar_fiche SET bf_url_image="'.$_FILES['image']['name'].'" WHERE bf_id_fiche='.$idfiche;
887
	}
888
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
889
        if (DB::isError($resultat)) {
890
            die ($resultat->getMessage().$resultat->getDebugInfo()) ;
891
        }
892
	return;
893
}
894
 
895
 
896
/** baz_mise_a_jour() - Mettre a jour une fiche
897
*
898
* @global   Le contenu du formulaire de saisie de l'annonce
899
* @return   void
900
*/
901
function baz_mise_a_jour($valeur) {
902
 
903
	//MAJ de bazar_fiche
904
	$requete = 'UPDATE bazar_fiche SET '.requete_bazar_fiche(&$valeur,$GLOBALS['_BAZAR_']['id_typeannonce']);
905
	$requete.= ' WHERE bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
906
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
907
	if (DB::isError($resultat)) {
908
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
909
	}
910
	return;
911
}
912
 
913
 
914
/** baz_suppression() - Supprime une fiche
915
*
916
* @global   L'identifiant de la fiche à supprimer
917
* @return   void
918
*/
919
function baz_suppression() {
920
	//suppression dans bazar_fiche
921
	$requete = "DELETE FROM bazar_fiche WHERE bf_id_fiche = ".$_GET['id_fiche'];
922
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
923
	if (DB::isError($resultat)) {
924
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
925
	}
926
	//suppression des urls associés
927
	$requete = "SELECT bu_id_url FROM bazar_url WHERE bu_ce_fiche = ".$_GET['id_fiche'];
928
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
929
	if (DB::isError($resultat)) {
930
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
931
	}
932
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
933
		baz_suppression_url($ligne['bu_id_url']);
934
	}
935
 
936
	//suppression des fichiers associés
937
	$requete = "SELECT bfj_id_fichier FROM bazar_fichier_joint WHERE bfj_ce_fiche = ".$_GET['id_fiche'];
938
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
939
	if (DB::isError($resultat)) {
940
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
941
	}
942
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
943
		baz_suppression_fichier($ligne['bfj_id_fichier']);
944
	}
945
 
946
	//suppression de l'image associée
947
	baz_suppression_image($_GET['id_fiche']);
948
 
949
	//======================CREATION DU FLUX RSS================================
950
	if (isset($_GET['typeannonce'])) $typeannonce=$_GET['typeannonce'];
951
	return ;
952
}
953
 
954
 
955
/** baz_suppression_url() - Supprimer un lien d'une fiche
956
*
957
* @global   integer L'identifiant du lien
958
* @return   void
959
*/
960
function baz_suppression_url($id_url) {
961
	//suppression dans bazar_url
962
	$requete = 'DELETE FROM bazar_url WHERE bu_id_url = '.$id_url;
963
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
964
	if (DB::isError($resultat)) {
965
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
966
	}
967
	return;
968
}
969
 
970
 
971
/** baz_suppression_fichier() - Supprimer un fichier d'une fiche
972
*
973
* @global   integer L'identifiant du fichier
974
* @return   void
975
*/
976
function baz_suppression_fichier($id_fichier) {
977
	//vérification de l'utilisation du fichier joint pour une autre annonce
978
	$requete = 'SELECT bfj_fichier FROM bazar_fichier_joint WHERE bfj_id_fichier='.$id_fichier;
979
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
980
	$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
981
	$requete = 'SELECT bfj_fichier FROM bazar_fichier_joint WHERE bfj_fichier="'.$ligne['bfj_fichier'].'"';
982
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
983
	//si le fichier n'est que utilisé dans cette fiche, on le supprime, on le laisse sinon
984
	if ($resultat->numRows()==1) {
985
		$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
986
		unlink($ligne['bfj_fichier']);
987
	}
988
 
989
	//suppression dans la table bazar_fichier
990
	$requete = 'DELETE FROM bazar_fichier_joint WHERE bfj_id_fichier = '.$id_fichier;
991
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
992
	if (DB::isError($resultat)) {
993
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
994
	}
995
	return;
996
}
997
 
998
 
999
/** baz_suppression_image() - Supprimer une image d'une fiche
1000
*
1001
* @global   integer L'identifiant de la fiche
1002
* @return   void
1003
*/
1004
function baz_suppression_image($id_fiche) {
1005
	//vérification de l'utilisation de l'image pour une autre annonce
1006
	$requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_id_fiche='.$id_fiche;
1007
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1008
	$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
1009
	$requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_url_image="'.$ligne['bf_url_image'].'"';
1010
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1011
	//si le fichier n'est que utilisé dans cette fiche, on le supprime, on le laisse sinon
1012
	if ($resultat->numRows()==1) {
1013
		$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
1014
		unlink(BAZ_CHEMIN_APPLI.'images/'.$ligne['bf_url_image']);
1015
	}
1016
 
1017
	//suppression dans la table bazar_fiche
1018
	$requete = 'UPDATE bazar_fiche SET bf_url_image=NULL WHERE bf_id_fiche = '.$id_fiche;
1019
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1020
	if (DB::isError($resultat)) {
1021
		die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
1022
	}
1023
	return;
1024
}
1025
 
1026
 
1027
/** publier_fiche () - Publie ou non dans les fichiers XML la fiche bazar d'un utilisateur
1028
*
1029
* @global boolean Valide: oui ou non
1030
* @return   void
1031
*/
1032
function publier_fiche($valid) {
1033
	if (isset($_GET['id_fiche'])) $GLOBALS['_BAZAR_']['id_fiche']=$_GET['id_fiche'];
1034
	if (isset($_GET['typeannonce'])) $typeannonce=$_GET['typeannonce'];
1035
	if ($valid==0) {
1036
		$requete = 'UPDATE bazar_fiche SET  bf_statut_fiche=2 WHERE bf_id_fiche="'.$GLOBALS['_BAZAR_']['id_fiche'].'"' ;
1037
	}
1038
	else {
1039
		$requete = 'UPDATE bazar_fiche SET  bf_statut_fiche=1 WHERE bf_id_fiche="'.$GLOBALS['_BAZAR_']['id_fiche'].'"' ;
1040
	}
1041
 
1042
	// ====================Mise à jour de la table bazar_fiche====================
1043
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1044
	if (DB::isError($resultat)) {
1045
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
1046
	}
1047
	unset ($resultat) ;
1048
	return;
1049
}
1050
 
1051
 
1052
/** baz_s_inscrire() affiche le formulaire qui permet de s'inscrire pour recevoir des annonces d'un type
1053
*
1054
*   @return  string    le code HTML
1055
*/
1056
function baz_s_inscrire() {
1057
	if (isset($_GET['inscrip'])) {
1058
		//cas d'une désinscription
1059
		if ($_GET['inscrip']==0) {
1060
			$requete='DELETE FROM bazar_abonnement WHERE ba_id_utilisateur='.$GLOBALS['id_user'].' AND ba_id_rubrique='.$_GET['idtypeannonce'];
1061
		}
1062
		//cas d'une inscription
1063
		else {
1064
			$requete='INSERT INTO bazar_abonnement VALUES ('.$GLOBALS['id_user'].', '.$_GET['idtypeannonce'].')';
1065
		}
1066
		$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1067
		if (DB::isError($resultat)) {
1068
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
1069
		}
1070
	}
1071
 
24 florian 1072
	if ($GLOBALS['AUTH']->getAuth()) {
1073
	$res= '<h2>'.BAZ_S_ABONNER.'</h2>'."\n";
1074
	$res= BAZ_LAIUS_S_ABONNER."\n";
5 florian 1075
	//requete pour obtenir l'id et le label des types d'annonces
1076
	$requete = 'SELECT bn_id_nature, bn_label_nature '.
11 ddelon 1077
	           'FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu .' or  bn_ce_id_menu=0';
5 florian 1078
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1079
	if (DB::isError($resultat)) {
1080
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
1081
	}
1082
 
1083
	$table = new HTML_Table(array ('width' => '100%', 'class' => 'table_bazar')) ;
1084
	$table->addRow(array ('<b>'.BAZ_TYPE_ANNONCES.'</b>',
1085
	                      '<b>'.BAZ_STATUT.'</b>',
1086
			      '<b>'.BAZ_PASSER_EN.'</b>',
1087
			      '<b>'.BAZ_RSS.'</b>',)) ;
1088
	$table->setRowType (0, 'th') ;
1089
 
1090
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
1091
		$lien_s_abonner=$GLOBALS['_BAZAR_']['url'];
1092
		$lien_s_abonner->addQueryString('action', BAZ_S_INSCRIRE);
1093
		$lien_s_abonner->addQueryString('idtypeannonce', $ligne['bn_id_nature']);
1094
		$lien_s_abonner->addQueryString('inscrip', 1);
1095
 
1096
		$lien_se_desabonner=$GLOBALS['_BAZAR_']['url'];
1097
		$lien_se_desabonner->addQueryString('action', BAZ_S_INSCRIRE);
1098
		$lien_se_desabonner->addQueryString('idtypeannonce', $ligne['bn_id_nature']);
1099
		$lien_se_desabonner->addQueryString('inscrip', 0);
1100
 
1101
		$lien_RSS=$GLOBALS['_BAZAR_']['url'];
1102
		$lien_RSS->addQueryString('action', BAZ_VOIR_FLUX_RSS);
1103
 
1104
		'http://'.$_SERVER['HTTP_HOST'].'/client/bazar/bazarRSS.php?annonce='.$ligne['bn_label_nature'];
1105
 
1106
		//requete pour savoir si la personne est inscrite à ce type d'annonce
1107
		$requete = 'SELECT ba_id_utilisateur '.
1108
		           'FROM bazar_abonnement '.
1109
			   'WHERE ba_id_utilisateur='.$GLOBALS['id_user'].' AND ba_id_rubrique='.$ligne['bn_id_nature'];
1110
	        $resultat2 = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1111
		if (DB::isError($resultat2)) {
1112
			die ($resultat2->getMessage().$resultat2->getDebugInfo()) ;
1113
		}
1114
		if ($resultat2->numRows()>0) {
1115
			$lien_RSS->addQueryString('annonce', $ligne['bn_label_nature']);
1116
			$table->addRow(array('<b>'.$ligne['bn_label_nature'].'</b>',
1117
					     BAZ_ABONNE,
1118
					     '<a href='.$lien_se_desabonner->getURL().'>'.BAZ_SE_DESABONNER.'</a>',
1119
					     '<a href='.$lien_RSS->getURL().'><img src="client/bazar/images/BAZ_rss.png" alt="'.BAZ_RSS.'"></a>'));
1120
			$lien_RSS->removeQueryString('annonce');
1121
		}
1122
		else {
1123
			$lien_RSS->addQueryString('annonce', $ligne['bn_label_nature']);
1124
			$table->addRow(array('<b>'.$ligne['bn_label_nature'].'</b>',
1125
			                     BAZ_PAS_ABONNE,
1126
			                     '<a href='.$lien_s_abonner->getURL().'>'.BAZ_S_ABONNER.'</a>',
1127
					     '<a href='.$lien_RSS->getURL().'><img src="client/bazar/images/BAZ_rss.png" alt="'.BAZ_RSS.'" /></a>'));
1128
			$lien_RSS->removeQueryString('annonce');
1129
		}
1130
	}
1131
	$table->altRowAttributes(1, array('class' => 'ligne_impaire'), array('class' => 'ligne_paire'));
24 florian 1132
	$table->updateColAttributes(0, array('style' => 'text-align:left;'));
5 florian 1133
	$table->updateColAttributes(1, array('align' => 'center'));
1134
	$table->updateColAttributes(2, array('align' => 'center'));
24 florian 1135
	$table->updateColAttributes(3, array('style' => 'text-align:center;'));
5 florian 1136
	$res.=$table->toHTML() ;
24 florian 1137
	}
1138
	else $res=BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR;
5 florian 1139
 
1140
	return $res;
1141
}
1142
 
1143
 
1144
/** baz_valeurs_fiche() - Renvoie un tableau avec les valeurs par défaut du formulaire d'inscription
1145
*
1146
* @param    integer Identifiant de la fiche
1147
*
1148
* @return   array   Valeurs enregistrées pour cette fiche
1149
*/
1150
function baz_valeurs_fiche($idfiche) {
1151
	$requete = 'SELECT * FROM bazar_fiche WHERE bf_id_fiche='.$idfiche;
1152
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1153
	if (DB::isError($resultat)) {
1154
		die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
1155
	}
1156
	$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
1157
	$valeurs_fiche = array() ;
1158
	$tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['typeannonce'].'.tpl');
1159
	for ($i=0; $i<count($tableau); $i++) {
1160
	     if ($tableau[$i]['type']!='labelhtml') {
1161
		 $valeurs_fiche[$tableau[$i]['nom_bdd']] = stripslashes($ligne[$tableau[$i]['nom_bdd']]);
1162
	     }
1163
	}
1164
	return $valeurs_fiche;
1165
}
1166
 
1167
 
1168
/** baz_rechercher() affiche le formulaire de recherche d'annonces
1169
*
1170
*   @return  string    le code HTML à afficher
1171
*/
1172
function baz_rechercher() {
1173
	$res= '<h2>'.BAZ_RECHERCHER_DES_ANNONCES.'</h2>'."\n";
1174
 
1175
	$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_RECHERCHER_ANNONCE);
1176
	$lien_formulaire=preg_replace ('/&amp;/', '&', $GLOBALS['_BAZAR_']['url']->getURL()) ;
1177
	$formtemplate = new HTML_QuickForm('formulaire', 'post', $lien_formulaire) ;
1178
 
1179
	//requete pour obtenir l'id et le label des types d'annonces
1180
	$requete = 'SELECT bn_label_nature '.
7 florian 1181
	           'FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu.
11 ddelon 1182
		   '  or  bn_ce_id_menu=0 ORDER BY bn_label_nature ASC';
5 florian 1183
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1184
	if (DB::isError($resultat)) {
1185
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
1186
	}
1187
	$type_annonce_select['toutes']=BAZ_TOUTES;
1188
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
1189
		$type_annonce_select[$ligne['bn_label_nature']] = $ligne['bn_label_nature'];
1190
	}
1191
	$option=array('style'=>'width: 195px;', 'onchange'=>'this.form.submit();');
1192
	$formtemplate->addElement ('select', 'type_annonce', BAZ_TYPEANNONCE, $type_annonce_select, $option) ;
1193
 
1194
	//requete pour obtenir l'id, le nom et prénom de toutes les personnes ayant une fiche publiée actuellement
1195
	$requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' '.
1196
	           'FROM bazar_fiche,'.BAZ_ANNUAIRE.' '.
1197
		   'WHERE bf_statut_fiche=1 AND bf_date_debut_validite_fiche<=NOW() AND bf_date_fin_validite_fiche>=NOW() AND bf_ce_utilisateur='.BAZ_CHAMPS_ID.' '.
1198
		   'ORDER BY '.BAZ_CHAMPS_NOM.' ASC';
1199
	$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
1200
	if (DB::isError($resultat)) {
1201
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
1202
	}
1203
	$personnes_select['tous']=BAZ_TOUS;
1204
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
1205
		$personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ;
1206
	}
1207
	$option=array('style'=>'width: 195px;', 'onchange'=>'this.form.submit();');
1208
	$formtemplate->addElement ('select', 'personnes', BAZ_EMETTEUR, $personnes_select, $option) ;
1209
 
1210
	//champs texte pour entrer les mots clés
1211
	$option=array('size'=>30,'maxlength'=>40);
1212
	$formtemplate->addElement('text', 'recherche_mots_cles', BAZ_MOT_CLE, $option) ;
1213
	//Bouton de validation du formulaire
1214
	$bouton[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER);
1215
	$formtemplate->addGroup($bouton, null, null, '');
1216
 
1217
	$requeteSQL='';
1218
	//affichage des résultats de la recherche si le formulaire a été envoyé
1219
	if (isset($_POST['type_annonce'])) {
1220
		//ajout des champs pour la recherche personnalisée
1221
		if ($_POST['type_annonce']!='toutes') {
1222
			$tableau=baz_valeurs_template($_POST['type_annonce'].'.tpl');
1223
			$nbvaleurs=count($tableau);
1224
			$html='<tr><td colspan="2" width="600px"><h3>'.BAZ_RECHERCHE_AVANCEE.'</h3></td></tr>'."\n";
1225
			$formtemplate->addElement('html', $html) ;
1226
			for ($i=0; $i<$nbvaleurs; $i++) {
1227
				if (($tableau[$i]['type']=='liste')or($tableau[$i]['type']=='listedatedeb')or($tableau[$i]['type']=='listedatefin')) {
1228
					$tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'],
1229
					$tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], 0) ;
1230
				}
1231
			}
1232
		}
1233
		$res.= $formtemplate->toHTML() ;
1234
 
24 florian 1235
		//préparation de la requête pour trouver les mots clés
5 florian 1236
		if ($_POST['recherche_mots_cles']!='') {
1237
			//découpage des mots clés
1238
			$recherche = split(' ', $_POST['recherche_mots_cles']) ;
1239
			$nbmots=count($recherche);
1240
			for ($i=0; $i<$nbmots; $i++) {
1241
				if ($i>0) $requeteSQL.=' OR ';
1242
				$requeteSQL.='bf_titre LIKE "%'.$recherche[$i].'%" OR bf_description LIKE "%'.$recherche[$i].'%" ';
1243
			}
1244
		}
1245
 
1246
		//génération de l'affichage
1247
		$res.=RSSversHTML(gen_RSS($_POST['type_annonce'], '', $_POST['personnes'], 1, $requeteSQL), 1, 'jm') ;
1248
	}
1249
	else {
1250
		//Bouton de validation du formulaire
1251
		$res.=$formtemplate->toHTML()."\n".BAZ_DESCRIPTION_RECHERCHE;
1252
	}
1253
 
1254
	return $res;
1255
}
1256
 
1257
 
1258
function baz_envoie_mail() {
1259
	$headers['From']    = $_SERVER['SERVER_ADMIN'] ;
1260
	$headers['To']      = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ;
1261
	$headers['Subject'] = INS_MAIL_ADMIN_APRES_INSCRIPTION_SUJET;
1262
 
1263
	$q = "select * from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."=\"".$_POST['mail']."\"" ;
1264
 
1265
	$r = $GLOBALS['_BAZAR_']['db']->query($q) ;
1266
	if (DB::isError ($r)) {
1267
		die ("echec de la requete") ;
1268
	}
1269
	$row  = $r->fetchRow(DB_FETCHMODE_ASSOC) ;
1270
 
1271
	$body_entete = "Un nouvel inscrit à tela : \n" ;
1272
	$body = "mail : ".$row[INS_CHAMPS_MAIL]."\n" ;
1273
	$body .= "------------------------------------------\n";
1274
	$body .= "nom: ".unhtmlentities($row[INS_CHAMPS_NOM])." \n" ;
1275
	$body .= "prénom : ".unhtmlentities($row[INS_CHAMPS_PRENOM])." \n" ;
1276
	$body .= "-------------------------------------------\n" ;
1277
 
1278
	// création du mail
1279
	$mail_object =& Mail::factory('mail');
1280
	if (!mail ($headers['To'], $headers['Subject'], $body)) {
1281
		return "<tr><td>Une erreur s'est produite:<br></td></tr>\n" ;
1282
	}
1283
	$body .= INS_MAIL_INSCRIPTION_2;
1284
 
1285
	$headers['To']      = $_POST['mail'] ;
1286
 
1287
	// création du mail
1288
	if (mail($headers['To'], $headers['Subject'], INS_MAIL_INSCRIPTION_1.$body)) {
1289
		return "<tr><td>Une erreur s'est produite<br></td></tr>\n" ;
1290
	}
1291
	return;
1292
}
1293
 
1294
 
1295
function baz_unhtmlentities($string) {
1296
	$trans_tbl = get_html_translation_table(HTML_ENTITIES);
1297
	$trans_tbl = array_flip($trans_tbl);
1298
	return strtr($string, $trans_tbl);
1299
}
1300
 
1301
 
1302
/** function baz_nextId () Renvoie le prochain identifiant numérique libre d'une table
1303
*
1304
*   @param  string  Nom de la table
1305
*   @param  string  Nom du champs identifiant
1306
*   @param  mixed   Objet DB de PEAR pour la connexion à la base de donnée
1307
*
1308
*   return  integer Le prochain numéro d'identifiant disponible
1309
*/
1310
function baz_nextId($table, $colonne_identifiant, $bdd) {
1311
	$requete = 'SELECT MAX('.$colonne_identifiant.') AS maxi FROM '.$table;
1312
	$resultat = $bdd->query($requete) ;
1313
	if (DB::isError($resultat)) {
1314
		die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
1315
		return $bdd->raiseError($resultat) ;
1316
	}
1317
 
1318
	if ($resultat->numRows() > 1) {
1319
		return $bdd->raiseError('<br />La table '.$table.' a un identifiant non unique<br />') ;
1320
	}
1321
	$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
1322
	return $ligne->maxi + 1 ;
1323
}
1324
 
1325
/* +--Fin du code ----------------------------------------------------------------------------------------+
1326
*
1327
* $Log: not supported by cvs2svn $
53 florian 1328
* Revision 1.17  2005/11/17 18:48:02  florian
1329
* corrections bugs + amélioration de l'application d'inscription
1330
*
52 florian 1331
* Revision 1.16  2005/11/07 17:30:36  florian
1332
* ajout controle sur les listes pour la saisie
1333
*
46 florian 1334
* Revision 1.15  2005/11/07 17:05:45  florian
1335
* amélioration validation conditions de saisie, ajout des règles spécifiques de saisie des formulaires
1336
*
45 florian 1337
* Revision 1.14  2005/11/07 08:48:02  florian
1338
* correction pb guillemets pour saisie et modif de fiche
1339
*
44 florian 1340
* Revision 1.13  2005/10/21 16:15:04  florian
1341
* mise a jour appropriation
1342
*
34 alexandre_ 1343
* Revision 1.11  2005/10/12 17:20:33  ddelon
1344
* Reorganisation calendrier + applette
1345
*
30 ddelon 1346
* Revision 1.10  2005/10/12 15:14:06  florian
1347
* amélioration de l'interface de bazar, de manière a simplifier les consultations, et à harmoniser par rapport aux Ressources
1348
*
24 florian 1349
* Revision 1.9  2005/10/10 16:22:52  alexandre_tb
1350
* Correction de bug. Lorsqu'on revient en arrière après avoir validé un formulaire.
1351
*
21 alexandre_ 1352
* Revision 1.8  2005/09/30 13:50:07  alexandre_tb
1353
* correction bug date parution ressource
1354
*
13 alexandre_ 1355
* Revision 1.7  2005/09/30 13:15:58  ddelon
1356
* compatibilité php5
1357
*
12 ddelon 1358
* Revision 1.6  2005/09/30 13:00:05  ddelon
1359
* Fiche bazar generique
1360
*
11 ddelon 1361
* Revision 1.5  2005/09/30 12:22:54  florian
1362
* Ajouts commentaires pour fiche, modifications graphiques, maj SQL
1363
*
7 florian 1364
* Revision 1.3  2005/07/21 19:03:12  florian
1365
* nouveautés bazar: templates fiches, correction de bugs, ...
1366
*
5 florian 1367
* Revision 1.1.1.1  2005/02/17 18:05:11  florian
1368
* Import initial de Bazar
1369
*
1370
* Revision 1.1.1.1  2005/02/17 11:09:50  florian
1371
* Import initial
1372
*
1373
* Revision 1.1.1.1  2005/02/16 18:06:35  florian
1374
* import de la nouvelle version
1375
*
1376
* Revision 1.10  2004/07/08 17:25:25  florian
1377
* ajout commentaires + petits debuggages
1378
*
1379
* Revision 1.8  2004/07/07 14:30:19  florian
24 florian 1380
* débogage RSS
5 florian 1381
*
1382
* Revision 1.7  2004/07/06 16:22:01  florian
24 florian 1383
* débogage modification + MAJ flux RSS
5 florian 1384
*
1385
* Revision 1.6  2004/07/06 09:28:26  florian
1386
* changement interface de modification
1387
*
1388
* Revision 1.5  2004/07/05 15:10:23  florian
1389
* changement interface de saisie
1390
*
1391
* Revision 1.4  2004/07/02 14:51:14  florian
1392
* ajouts divers pour faire fonctionner l'insertion de fiches
1393
*
1394
* Revision 1.3  2004/07/01 16:37:42  florian
1395
* ajout de fonctions pour les templates
1396
*
1397
* Revision 1.2  2004/07/01 13:00:13  florian
1398
* modif Florian
1399
*
1400
* Revision 1.1  2004/06/23 09:58:32  alex
1401
* version initiale
1402
*
1403
* Revision 1.1  2004/06/18 09:00:37  alex
1404
* version initiale
1405
*
1406
*
1407
* +-- Fin du code ----------------------------------------------------------------------------------------+
1408
*/
1409
 
1410
?>