Projet

Général

Profil

Evolution #2570 » bull_index.php

Martial LENZEN, 07/12/2010 19:07

 
1
<?php
2
/*
3
*
4
* $Id: bull_index.php 4991 2010-08-02 22:02:08Z jjacquard $
5
*
6
* Copyright 2001, 2007 Thomas Belliard, Laurent Delineau, Edouard Hue, Eric Lebrun, St?phane Boireau, Christian Chapel
7
*
8
* This file is part of GEPI.
9
*
10
* GEPI is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
14
*
15
* GEPI is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with GEPI; if not, write to the Free Software
22
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23
*/
24

    
25
// Initialisations files
26
require_once("../lib/initialisations.inc.php");
27

    
28
// Resume session
29
$resultat_session = $session_gepi->security_check();
30
if ($resultat_session == 'c') {
31
	header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
32
	die();
33
} else if ($resultat_session == '0') {
34
	header("Location: ../logout.php?auto=1");
35
	die();
36
}
37

    
38

    
39
$sql="SELECT 1=1 FROM droits WHERE id='/bulletin/bull_index.php';";
40
$res_test=mysql_query($sql);
41
if (mysql_num_rows($res_test)==0) {
42
	$sql="INSERT INTO droits VALUES ('/bulletin/bull_index.php', 'V', 'V', 'F', 'V', 'F', 'F', 'F', 'F', 'Edition des bulletins', '1');";
43
	$res_insert=mysql_query($sql);
44
}
45
if (!checkAccess()) {
46
	header("Location: ../logout.php?auto=1");
47
	die();
48
}
49

    
50
//================================
51

    
52
$intercaler_releve_notes=isset($_POST['intercaler_releve_notes']) ? $_POST['intercaler_releve_notes'] : NULL;
53

    
54
$mode_bulletin=isset($_POST['mode_bulletin']) ? $_POST['mode_bulletin'] : NULL;
55

    
56
// Variable non encore utilis?e:
57
$contexte_document_produit="bulletin";
58
// Pour sur le verso du bulletin n'avoir qu'un relev? de notes et pas deux... et surtout pas celui de l'?l?ve suivant dans la liste:
59
$nb_releve_par_page=1;
60

    
61
//====================================================
62
//=============== ENTETE STANDARD ====================
63
if (!isset($_POST['valide_select_eleves'])) {
64
	//**************** EN-TETE *********************
65
	$titre_page = "Edition des bulletins";
66
	require_once("../lib/header.inc");
67
	//**************** FIN EN-TETE *****************
68
}
69
//============== FIN ENTETE STANDARD =================
70
//====================================================
71
//============== ENTETE BULLETIN HTML ================
72
elseif ((isset($_POST['mode_bulletin']))&&($_POST['mode_bulletin']=='html')) {
73
	//=============================================
74
	// Faire les extractions pour le relev? de notes si jamais cela a ?t? demand?.
75
	//$intercaler_releve_notes="y";
76
	if(isset($intercaler_releve_notes)) {
77
		// On n'extrait les relev?s de notes que pour la/les p?riodes choisies pour les bulletins
78
		$choix_periode='periode';
79
		include("../cahier_notes/initialisations_header_releves_html.php");
80
	}
81
	//=============================================
82
	include("header_bulletin_html.php");
83
}
84
//============ FIN ENTETE BULLETIN HTML ==============
85
//====================================================
86
//============== ENTETE BULLETIN HTML ================
87
elseif ((isset($_POST['mode_bulletin']))&&($_POST['mode_bulletin']=='pdf')) {
88

    
89
	$mode_utf8_pdf=getSettingValue("mode_utf8_bulletins_pdf");
90
	if($mode_utf8_pdf=="") {$mode_utf8_pdf="n";}
91

    
92
	// DEBUG D?commenter la ligne ci-dessous pour d?bugger
93
	//echo "<p style='color:red;'>Insertion d'une ligne avant le Header pour provoquer l'affichage dans le navigateur et ainsi rep?rer des erreurs.</p>";
94

    
95
	include("header_bulletin_pdf.php");
96

    
97
	//=============================================
98
	// Faire les extractions pour le relev? de notes si jamais cela a ?t? demand?.
99
	//$intercaler_releve_notes="y";
100
	if(isset($intercaler_releve_notes)) {
101
		// On n'extrait les relev?s de notes que pour la/les p?riodes choisies pour les bulletins
102
		$choix_periode='periode';
103
		// REVOIR LE HEADER POUR PDF: QUE FAUT-IL EXTRAIRE COMME PARAMETRES SPECIFIQUES AU PDF
104
		//include("../cahier_notes/initialisations_header_releves_html.php");
105
		include("header_releve_pdf.php");
106
	}
107
	//=============================================
108

    
109
/*
110
	//=========================================
111
	//cr?ation du PDF en mode Portrait, unit?e de mesure en mm, de taille A4
112
	$pdf=new bul_PDF('p', 'mm', 'A4');
113
	$nb_eleve_aff = 1;
114
	$categorie_passe = '';
115
	$categorie_passe_count = 0;
116
	$pdf->SetCreator($gepiSchoolName);
117
	$pdf->SetAuthor($gepiSchoolName);
118
	$pdf->SetKeywords('');
119
	$pdf->SetSubject('Bulletin');
120
	$pdf->SetTitle('Bulletin');
121
	$pdf->SetDisplayMode('fullwidth', 'single');
122
	$pdf->SetCompression(TRUE);
123
	$pdf->SetAutoPageBreak(TRUE, 5);
124

    
125
	$pdf->AddPage(); //ajout d'une page au document
126
	$pdf->SetFont('Arial');
127

    
128
	if ( !isset($X_etab) or empty($X_etab) ) {
129
		$X_etab = '5';
130
		$Y_etab = '5';
131
	}
132
	$pdf->SetXY($X_etab,$Y_etab);
133
	$pdf->SetFont('Arial','',14);
134
	$gepiSchoolName=getSettingValue("gepiSchoolName") ? getSettingValue("gepiSchoolName") : "gepiSchoolName";
135
	$pdf->Cell(90,7, $gepiSchoolName,0,2,'');
136

    
137

    
138
	//fermeture du fichier pdf et lecture dans le navigateur 'nom', 'I/D'
139
	$nom_bulletin = 'bulletin_'.$nom_bulletin.'.pdf';
140
	$pdf->Output($nom_bulletin,'I');
141
	die();
142
	//=========================================
143
*/
144
}
145
//============ FIN ENTETE BULLETIN HTML ==============
146

    
147
//echo "microtime()=".microtime()."<br />";
148
//echo "time()=".time()."<br />";
149

    
150
$debug="n";
151
$tab_instant=array();
152
include("bull_func.lib.php");
153

    
154
if((!isset($_POST['mode_bulletin']))||($_POST['mode_bulletin']!='pdf')) {
155
	//==============================
156
	$motif="Duree_totale";
157
	//decompte_debug($motif,"T?moin de $motif initialisation");
158
	decompte_debug($motif,"");
159
	flush();
160
	//==============================
161
}
162

    
163
//$tab_id_classe=isset($_POST['tab_id_classe']) ? $_POST['tab_id_classe'] : NULL;
164
//$tab_periode_num=isset($_POST['tab_periode_num']) ? $_POST['tab_periode_num'] : NULL;
165
//$choix_periode_num=isset($_POST['choix_periode_num']) ? $_POST['choix_periode_num'] : NULL;
166
$tab_id_classe=isset($_POST['tab_id_classe']) ? $_POST['tab_id_classe'] : (isset($_GET['tab_id_classe']) ? $_GET['tab_id_classe'] : NULL);
167
$tab_periode_num=isset($_POST['tab_periode_num']) ? $_POST['tab_periode_num'] : (isset($_GET['tab_periode_num']) ? $_GET['tab_periode_num'] : NULL);
168
$choix_periode_num=isset($_POST['choix_periode_num']) ? $_POST['choix_periode_num'] : (isset($_GET['choix_periode_num']) ? $_GET['choix_periode_num'] : NULL);
169

    
170
//======================================================
171
//==================CHOIX DES CLASSES===================
172
if(!isset($tab_id_classe)) {
173
	//echo "<p class='bold'><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a>";
174
	echo "<p class='bold'><a href='../accueil.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a>";
175
	if((($_SESSION['statut']=='scolarite')&&(getSettingValue('GepiScolImprBulSettings')=='yes'))||
176
	(($_SESSION['statut']=='professeur')&&(getSettingValue('GepiProfImprBulSettings')=='yes'))||
177
	(($_SESSION['statut']=='administrateur')&&(getSettingValue('GepiAdminImprBulSettings')=='yes'))) {
178
		echo " | <a href='param_bull.php' target='_blank'>Param?tres d'impression des bulletins</a>";
179
	}
180
	echo " | <a href='index.php'>Ancien dispositif</a>";
181
	echo "</p>\n";
182

    
183
	echo "<p class='bold'>Choix des classes:</p>\n";
184

    
185
	if (($_SESSION['statut'] == 'professeur') and getSettingValue("GepiProfImprBul")!='yes') {
186
		echo "<p>Droits insuffisants pour effectuer cette op?ration</p>\n";
187
		require("../lib/footer.inc.php");
188
		die();
189
	}
190

    
191
	// Liste des classes avec ?l?ve:
192
	//$sql="SELECT DISTINCT c.* FROM j_eleves_classes jec, classes c WHERE c.id=jec.id_classe ORDER BY c.classe;";
193
	if ($_SESSION["statut"] == "scolarite") {
194
		// On s?lectionne les classes associ?es au compte scolarit?
195
		$sql="SELECT DISTINCT c.* FROM classes c, j_scol_classes jsc, j_eleves_classes jec WHERE (jec.id_classe=c.id AND jsc.id_classe=c.id AND jsc.login='".$_SESSION['login']."') ORDER BY c.classe;";
196

    
197
		$message_0="Aucune classe (<i>avec ?l?ve</i>) ne vous est affect?e.";
198
	}
199
	//elseif ($_SESSION["statut"] == "administrateur") {
200
	elseif (($_SESSION["statut"] == "administrateur")||($_SESSION["statut"] == "secours")) {
201
		// On selectionne toutes les classes
202
		//$sql="SELECT DISTINCT c.* FROM classes c WHERE 1";
203
		$sql="SELECT DISTINCT c.* FROM j_eleves_classes jec, classes c WHERE (c.id=jec.id_classe) ORDER BY c.classe;";
204

    
205
		$message_0="Aucune classe avec ?l?ve n'a ?t? trouv?e.";
206
	}
207
	elseif ($_SESSION["statut"] == "professeur") {
208
		$sql="SELECT DISTINCT c.* FROM classes c, j_eleves_professeurs jep, j_eleves_classes jec WHERE (jep.professeur='".$_SESSION['login']."' AND jep.login = jec.login AND jec.id_classe = c.id);";
209

    
210
			$message_0="Aucune classe (<i>avec ?l?ve</i>) ne vous est affect?e pour l'?dition des bulletins.";
211
	}
212
	else {
213
		// On ne devrait pas arriver jusque-l?...
214
		echo "<p>Droits insuffisants pour effectuer cette op?ration</p>\n";
215
		require("../lib/footer.inc.php");
216
		die();
217
	}
218

    
219
	$call_classes=mysql_query($sql);
220

    
221
	$nb_classes=mysql_num_rows($call_classes);
222
	if($nb_classes==0){
223
		//echo "<p>Aucune classe avec ?l?ve affect? n'a ?t? trouv?e.</p>\n";
224
		echo "<p>".$message_0."</p>\n";
225

    
226
		require("../lib/footer.inc.php");
227
		die();
228
	}
229

    
230
	echo "<form enctype='multipart/form-data' action='".$_SERVER['PHP_SELF']."' method='post' name='formulaire'>\n";
231
	// Affichage sur 3 colonnes
232
	$nb_classes_par_colonne=round($nb_classes/3);
233

    
234
	echo "<table width='100%' summary='Choix des classes'>\n";
235
	echo "<tr valign='top' align='center'>\n";
236

    
237
	$cpt = 0;
238

    
239
	echo "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
240
	echo "<td align='left'>\n";
241

    
242
	while($lig_clas=mysql_fetch_object($call_classes)) {
243

    
244
		//affichage 2 colonnes
245
		if(($cpt>0)&&(round($cpt/$nb_classes_par_colonne)==$cpt/$nb_classes_par_colonne)){
246
			echo "</td>\n";
247
			echo "<td align='left'>\n";
248
		}
249

    
250
		echo "<label id='label_tab_id_classe_$cpt' for='tab_id_classe_$cpt' style='cursor: pointer;'><input type='checkbox' name='tab_id_classe[]' id='tab_id_classe_$cpt' value='$lig_clas->id' onchange='change_style_classe($cpt)' /> $lig_clas->classe</label>";
251
		echo "<br />\n";
252
		$cpt++;
253
	}
254

    
255
	echo "</td>\n";
256
	echo "</tr>\n";
257
	echo "</table>\n";
258

    
259
	echo "<p><a href='#' onClick='ModifCase(true)'>Tout cocher</a> / <a href='#' onClick='ModifCase(false)'>Tout d?cocher</a></p>\n";
260

    
261
	echo "<p><input type='submit' value='Valider' /></p>\n";
262
	echo "</form>\n";
263

    
264
	echo "<script type='text/javascript'>
265
	function ModifCase(mode) {
266
		for (var k=0;k<$cpt;k++) {
267
			if(document.getElementById('tab_id_classe_'+k)){
268
				document.getElementById('tab_id_classe_'+k).checked = mode;
269
				change_style_classe(k);
270
			}
271
		}
272
	}
273

    
274
	function change_style_classe(num) {
275
		if(document.getElementById('tab_id_classe_'+num)) {
276
			if(document.getElementById('tab_id_classe_'+num).checked) {
277
				document.getElementById('label_tab_id_classe_'+num).style.fontWeight='bold';
278
			}
279
			else {
280
				document.getElementById('label_tab_id_classe_'+num).style.fontWeight='normal';
281
			}
282
		}
283
	}
284

    
285
</script>\n";
286

    
287

    
288
}
289
//======================================================
290
//=================CHOIX DES PERIODES===================
291
//elseif(!isset($tab_periode_num)) {
292
//elseif(!isset($choix_periode_num)) {
293
elseif((!isset($choix_periode_num))||(!isset($tab_periode_num))) {
294
	//debug_var();
295

    
296
	echo "<p class='bold'>";
297
	//echo "<a href='".$_SERVER['PHP_SELF']."'>Choisir d'autres classes</a>\n";
298
	echo "<a href='bull_index.php'>Choisir d'autres classes</a>\n";
299
	if((($_SESSION['statut']=='scolarite')&&(getSettingValue('GepiScolImprBulSettings')=='yes'))||
300
	(($_SESSION['statut']=='professeur')&&(getSettingValue('GepiProfImprBulSettings')=='yes'))||
301
	(($_SESSION['statut']=='administrateur')&&(getSettingValue('GepiAdminImprBulSettings')=='yes'))) {
302
		echo " | <a href='param_bull.php' target='_blank'>Param?tres d'impression des bulletins</a>";
303
	}
304
	echo "</p>\n";
305

    
306
	// Choisir les p?riodes permettant l'?dition de bulletin
307

    
308
	echo "<p class='bold'>Choix des p?riodes:</p>\n";
309

    
310
	/*
311
	$sql="SELECT MAX(num_periode) max_per FROM periodes;";
312
	$res_max_per=mysql_query($sql);
313
	$lig_max_per=mysql_fetch_object($res_max_per);
314
	$max_per=$lig_max_per->max_per;
315
	*/
316

    
317
	$tab_periode_num_excluses=array();
318

    
319
	//$tab_periode_num=array();
320

    
321
	echo "<form enctype='multipart/form-data' action='".$_SERVER['PHP_SELF']."' method='post' name='formulaire'>\n";
322

    
323
	$max_per=0;
324
	for($i=0;$i<count($tab_id_classe);$i++) {
325
		// Est-ce bien un entier?
326
		if((strlen(my_ereg_replace("[0-9]","",$tab_id_classe[$i])))||($tab_id_classe[$i]=="")) {
327
			echo "<p>Identifiant de classe erron?: <span style='color:red'>".$tab_id_classe[$i]."</span></p>\n";
328
			require("../lib/footer.inc.php");
329
			die();
330
		}
331

    
332
		echo "<input type='hidden' name='tab_id_classe[$i]' value='".$tab_id_classe[$i]."' />\n";
333

    
334
		$sql="SELECT p.* FROM periodes p WHERE p.id_classe='".$tab_id_classe[$i]."' ORDER BY num_periode;";
335
		$res_per=mysql_query($sql);
336

    
337
		if(mysql_num_rows($res_per)>0) {
338
			$ligne_debug[$i]="<tr><td>".get_class_from_id($tab_id_classe[$i])."</td>\n";
339
			while($lig_per=mysql_fetch_object($res_per)) {
340
				if($lig_per->verouiller=="O") {
341
					$ligne_debug[$i].="<td style='background-color:lightgreen; text-align:center;'>Close</td>\n";
342
				}
343
				elseif($lig_per->verouiller=="N") {
344
					$ligne_debug[$i].="<td style='background-color:red; text-align:center;'>Non close</td>\n";
345
					if(!in_array($lig_per->num_periode,$tab_periode_num_excluses)) {$tab_periode_num_excluses[]=$lig_per->num_periode;}
346
					/*
347
					if($_SESSION['statut']=='scolarite') {
348
						$ligne_debug[$i].=" <a href='verrouillage.php' target='_blank'><img src='../images/icons/configure.png' width='16' height='16' title='Verrouillage/d?verrouillage'/></a>\n";
349
					}
350
					*/
351
				}
352
				else {
353
					$ligne_debug[$i].="<td style='background-color:orange; text-align:center;'>Partiellement close</td>\n";
354
				}
355

    
356
				if($lig_per->num_periode>$max_per) {$max_per=$lig_per->num_periode;}
357
			}
358
			$ligne_debug[$i].="</tr>\n";
359
		}
360
	}
361

    
362

    
363

    
364
	echo "<table class='boireaus' summary='Choix des p?riodes'>\n";
365
	echo "<tr>\n";
366
	echo "<th>Classe</th>\n";
367
	for($i=1;$i<=$max_per;$i++) {
368
		echo "<th>P?riode $i</th>\n";
369
	}
370
	echo "</tr>\n";
371

    
372
	for($i=0;$i<count($tab_id_classe);$i++) {
373
		echo $ligne_debug[$i];
374
	}
375

    
376
	echo "<tr>\n";
377
	echo "<th>Choix</th>\n";
378
	for($i=1;$i<=$max_per;$i++) {
379
		if(!in_array($i,$tab_periode_num_excluses)) {
380
			echo "<td style='background-color:lightgreen; text-align:center;'><input type='checkbox' name='tab_periode_num[]' value='$i' /></td>\n";
381
		}
382
		else {
383
			echo "<td style='background-color:red; text-align:center;'>P?riode non close<br />pour une classe au moins";
384
			if($_SESSION['statut']=='scolarite') {
385
				echo " <a href='verrouillage.php' target='_blank'><img src='../images/icons/configure.png' width='16' height='16' title='Verrouillage/d?verrouillage'/></a>\n";
386
			}
387
			echo "</td>\n";
388
		}
389
	}
390
	echo "</tr>\n";
391

    
392
	echo "</table>\n";
393

    
394
	echo "<input type='hidden' name='choix_periode_num' value='fait' />\n";
395

    
396
	echo "<p><input type='submit' value='Valider' /></p>\n";
397
	echo "</form>\n";
398

    
399
}
400
//======================================================
401
//==============CHOIX DE LA SELECTION D'ELEVES==========
402
elseif(!isset($_POST['valide_select_eleves'])) {
403

    
404
	//debug_var();
405

    
406
	$preselection_eleves=isset($_POST['preselection_eleves']) ? $_POST['preselection_eleves'] : (isset($_GET['preselection_eleves']) ? $_GET['preselection_eleves'] : NULL);
407

    
408
	echo "<p class='bold'>";
409
	echo "<a href='".$_SERVER['PHP_SELF']."'>Choisir d'autres classes</a>\n";
410
	//echo " | <a href='".$_SERVER['PHP_SELF']."'>Choisir d'autres p?riodes</a>\n";
411
	//echo " | <a href='#' onClick='history.go(-1);'>Choisir d'autres p?riodes</a>\n";
412
	echo " | <a href='".$_SERVER['PHP_SELF']."' onClick=\"document.forms['form_retour'].submit();return false;\">Choisir d'autres p?riodes</a>\n";
413
	if((($_SESSION['statut']=='scolarite')&&(getSettingValue('GepiScolImprBulSettings')=='yes'))||
414
	(($_SESSION['statut']=='professeur')&&(getSettingValue('GepiProfImprBulSettings')=='yes'))||
415
	(($_SESSION['statut']=='administrateur')&&(getSettingValue('GepiAdminImprBulSettings')=='yes'))) {
416
		echo " | <a href='param_bull.php' target='_blank'>Param?tres d'impression des bulletins</a>";
417
	}
418
	echo "</p>\n";
419

    
420
	//===========================
421
	// FORMULAIRE POUR LE RETOUR AU CHOIX DES PERIODES
422
	echo "\n<!-- Formulaire de retour au choix des p?riodes -->\n";
423
	echo "<form enctype='multipart/form-data' action='".$_SERVER['PHP_SELF']."' method='post' name='form_retour'>\n";
424
	for($i=0;$i<count($tab_id_classe);$i++) {
425
		echo "<input type='hidden' name='tab_id_classe[$i]' value='".$tab_id_classe[$i]."' />\n";
426
	}
427
	for($j=0;$j<count($tab_periode_num);$j++) {
428
		echo "<input type='hidden' name='tab_periode_num[$j]' value='".$tab_periode_num[$j]."' />\n";
429
	}
430
	echo "</form>\n";
431
	//===========================
432

    
433

    
434
	//echo "<p class='bold'>S?lection des ?l?ves:</p>\n";
435
	echo "<p class='bold'>S?lection des ?l?ves et param?tres:</p>\n";
436

    
437
	echo "\n<!-- Formulaire de s?lection des ?l?ves et de param?trage -->\n";
438
	echo "<form enctype='multipart/form-data' action='".$_SERVER['PHP_SELF']."' method='post' name='formulaire' target='_blank'>\n";
439

    
440
	//=======================================
441

    
442
	// HTML ou PDF
443
	$type_bulletin_par_defaut=getSettingValue('type_bulletin_par_defaut');
444
	if(($type_bulletin_par_defaut!='html')&&($type_bulletin_par_defaut!='pdf')) {$type_bulletin_par_defaut='html';}
445

    
446
	// A remplacer par la suite par un choix:
447
	//echo "<input type='hidden' name='mode_bulletin' value='html' />\n";
448
	echo "<table border='0' summary='Choix du type de bulletin'>\n";
449
	echo "<tr>\n";
450
	echo "<td valign='top'>\n";
451
	echo "<input type='radio' name='mode_bulletin' id='mode_bulletin_html' value='html' onchange='display_div_modele_bulletin_pdf();display_param_b_adr_pg()' ";
452
	if($type_bulletin_par_defaut=='html') {echo "checked ";}
453
	echo "/> ";
454
	echo "</td>\n";
455
	echo "<td>\n";
456
	echo "<label for='mode_bulletin_html' style='cursor:pointer;'>Bulletin HTML</label>\n";
457
	echo "</td>\n";
458
	echo "</tr>\n";
459

    
460
	echo "<tr>\n";
461
	echo "<td valign='top'>\n";
462
	$test = sql_query1("SHOW TABLES LIKE 'modele_bulletin';");
463
	if ($test == -1) {
464
		echo "&nbsp;</td>\n";
465
		echo "<td valign='top'>\n";
466
		echo "Les mod?les PDF utilisent une table 'modele_bulletin' qui semble absente.<br />\n";
467
		if($_SESSION['statut']=='administrateur') {
468
			echo "Visitez la page de <a href='test_modele_bull.php'>cr?ation de cette table</a> d'apr?s l'ancienne table 'model_bulletin' pour permettre l'impression de bulletins PDF.";
469
		}
470
		else {
471
			echo "Le remplissage de la table doit ?tre effectu? en admin.";
472
		}
473
	}
474
	else {
475
		$sql="SELECT 1=1 FROM modele_bulletin LIMIT 1;";
476
		//echo "$sql<br />";
477
		$test=mysql_query($sql);
478
		if(mysql_num_rows($test)==0) {
479
			echo "&nbsp;</td>\n";
480
			echo "<td valign='top'>\n";
481
			echo "Les mod?les PDF utilisent une table 'modele_bulletin' qui semble absente.<br />\n";
482
			if($_SESSION['statut']=='administrateur') {
483
				echo "Visitez la page de <a href='test_modele_bull.php'>cr?ation de cette table</a> d'apr?s l'ancienne table 'model_bulletin' pour permettre l'impression de bulletins PDF.";
484
			}
485
			else {
486
				echo "Le remplissage de la table doit ?tre effectu? en admin.";
487
			}
488
		}
489
		else {
490
			echo "<input type='radio' name='mode_bulletin' id='mode_bulletin_pdf' value='pdf' onchange='display_div_modele_bulletin_pdf();display_param_b_adr_pg()' ";
491
			if($type_bulletin_par_defaut=='pdf') {echo "checked ";}
492
			echo "/> ";
493
			echo "</td>\n";
494
			echo "<td>\n";
495
			echo "<label for='mode_bulletin_pdf' style='cursor:pointer;'>Bulletin PDF</label>\n";
496

    
497
			echo "<br />\n";
498
			//echo "<span id='div_modele_bulletin_pdf'>\n";
499
			echo "<div id='div_modele_bulletin_pdf'>\n";
500

    
501
				$option_modele_bulletin=getSettingValue("option_modele_bulletin");
502
				if (($option_modele_bulletin==2)||($option_modele_bulletin==3)) { //Par d?faut  le mod?le d?fini pour les classes
503
					echo "Choisir le mod?le de bulletin<br />\n";
504
					// s?lection des mod?les des bulletins PDF
505
					//$sql='SELECT id_model_bulletin, nom_model_bulletin FROM modele_bulletin ORDER BY modele_bulletin.nom_model_bulletin ASC';
506
					$sql="SELECT DISTINCT id_model_bulletin,valeur FROM modele_bulletin WHERE nom='nom_model_bulletin' ORDER BY id_model_bulletin ASC";
507
					//echo "$sql<br />";
508
					$requete_modele = mysql_query($sql);
509
					echo "<select tabindex=\"5\" name=\"type_bulletin\">";
510
					$option_modele_bulletin=getSettingValue("option_modele_bulletin");
511
					if ($option_modele_bulletin==2) { //Par d?faut  le mod?le d?fini pour les classes
512
						echo "<option value=\"-1\">Utiliser les mod?les pr?-s?lectionn?s par classe</option>\n";
513
					}
514
	
515
					while($donner_modele = mysql_fetch_array($requete_modele)) {
516
						echo "<option value=\"".$donner_modele['id_model_bulletin']."\"";
517
						echo ">".ucfirst($donner_modele['valeur'])."</option>\n";
518
					}
519
					echo "</select>\n";
520
					echo "<br />\n";
521
				}
522
				else {
523
					echo "<input type='hidden' name='type_bulletin' value='-1' />\n";
524
				}
525
			//echo "</span>\n";
526

    
527
			echo "<label for='use_cell_ajustee' style='cursor: pointer;'><input type='checkbox' name='use_cell_ajustee' id='use_cell_ajustee' value='n' /> Ne pas utiliser la nouvelle fonction use_cell_ajustee() pour l'?criture des appr?ciations.</label>";
528

    
529
			$titre_infobulle="Fonction cell_ajustee()\n";
530
			$texte_infobulle="Pour les appr?ciations sur les bulletins, relev?s,... on utilisait auparavant la fonction DraxTextBox() de FPDF.<br />Cette fonction avait parfois un comportement curieux avec des textes tronqu?s ou beaucoup plus petits dans la cellule que ce qui semblait pouvoir tenir dans la case.<br />La fonction cell_ajustee() est une fonction que mise au point pour tenter de faire mieux que DraxTextBox().<br />Comme elle n'a pas ?t? exp?riment?e par suffisamment de monde sur trunk, nous avons mis une case ? cocher qui permet d'utiliser l'ancienne fonction DrawTextBox() si cell_ajustee() ne se r?v?lait pas aussi bien fichue que nous l'esp?rons;o).<br />\n";
531
			//$texte_infobulle.="\n";
532
			$tabdiv_infobulle[]=creer_div_infobulle('a_propos_cell_ajustee',$titre_infobulle,"",$texte_infobulle,"",35,0,'y','y','n','n');
533
	
534
			echo "<a href=\"#\" onclick='return false;' onmouseover=\"afficher_div('a_propos_cell_ajustee','y',100,100);\"  onmouseout=\"cacher_div('a_propos_cell_ajustee');\"><img src='../images/icons/ico_ampoule.png' width='15' height='25' /></a>";
535

    
536
			echo "<br />\n";
537

    
538
			echo "</div>\n";
539
		}
540
	}
541
	echo "</td>\n";
542
	echo "</tr>\n";
543
	echo "</table>\n";
544

    
545
	echo "<script type='text/javascript'>
546
	function display_div_modele_bulletin_pdf() {
547
		if(document.getElementById('div_modele_bulletin_pdf')) {
548
			if(document.getElementById('mode_bulletin_pdf').checked==true) {
549
				document.getElementById('div_modele_bulletin_pdf').style.display='';
550
			}
551
			else {
552
				document.getElementById('div_modele_bulletin_pdf').style.display='none';
553
			}
554
		}
555
	}
556

    
557
	display_div_modele_bulletin_pdf();
558
</script>\n";
559

    
560

    
561
	//echo "<input type='hidden' name='un_seul_bull_par_famille' value='non' />\n";
562
	//=======================================
563
	echo "<input type='hidden' name='choix_periode_num' value='fait' />\n";
564

    
565
	//=======================================
566
	//echo "<div style='float:right; width:40%'>\n";
567
	echo "<div id='div_parametres'>\n";
568
	echo "<table border='0' summary='Tableau des param?tres'>\n";
569
	echo "<tr><td valign='top'><input type='checkbox' name='un_seul_bull_par_famille' id='un_seul_bull_par_famille' value='oui' /></td><td><label for='un_seul_bull_par_famille' style='cursor: pointer;'>Ne pas imprimer de bulletin pour le deuxi?me parent<br />(<i>m?me dans le cas de parents s?par?s</i>).</label></td></tr>\n";
570

    
571
	// A FAIRE:
572
	// Tester et ne pas afficher:
573
	// - si tous les coeff sont ? 1
574
	//$test_coef=mysql_num_rows(mysql_query("SELECT coef FROM j_groupes_classes WHERE (id_classe='".$id_classe."' and coef!='1.0')"));
575
	//if($test_coef>0){
576
		/*
577
		echo "<tr>\n";
578
		echo "<td colspan=\"2\"><b>Calcul des moyennes g?n?rales";
579
		// Ne pas afficher la mention de cat?gorie, si on n'affiche pas les cat?gories dans cette classe.
580
		//$affiche_categories = sql_query1("SELECT display_mat_cat FROM classes WHERE id='".$id_classe."'");
581
		//if ($affiche_categories == "y") {
582
			echo " (<i>et par cat?gorie</i>)";
583
		//}
584
		echo ".</b></td>\n";
585
		echo "</tr>\n";
586
		echo "<tr><td valign='top'><input type='checkbox' name='coefficients_a_1' id='coefficients_a_1' value='oui' /></td><td><label for='coefficients_a_1' style='cursor: pointer;'>Forcer les coefficients des mati?res ? 1, ind?pendamment des coefficients saisis dans les param?tres de la classe.</label></td></tr>\n";
587
		*/
588
		echo "<tr><td valign='top'><input type='checkbox' name='coefficients_a_1' id='coefficients_a_1' value='oui'  /></td><td><label for='coefficients_a_1' style='cursor: pointer;'>Forcer, dans le calcul des moyennes g?n?rales, les coefficients des mati?res ? 1, ind?pendamment des coefficients saisis dans les param?tres de la classe.</label></td></tr>\n";
589

    
590
		echo "<tr><td valign='top'><input type='checkbox' name='moyennes_periodes_precedentes' id='moyennes_periodes_precedentes' value='y'  /></td><td><label for='moyennes_periodes_precedentes' style='cursor: pointer;'>Afficher les moyennes de l'?l?ve pour les p?riodes pr?c?dentes (<i>incompatible avec l'affichage des moyennes min/max/classe dans la m?me cellule que la moyenne de l'?l?ve</i>).</label></td></tr>\n";
591

    
592
		echo "<tr><td valign='top'><input type='checkbox' name='tri_par_etab_orig' id='tri_par_etab_orig' value='y' /></td><td><label for='tri_par_etab_orig' style='cursor: pointer;'>Trier les bulletins par ?tablissement d'origine.</label></td></tr>\n";
593
	//}
594
	echo "</table>\n";
595

    
596
	//===========================================
597
	$b_adr_pg_defaut=isset($_SESSION['b_adr_pg']) ? $_SESSION['b_adr_pg'] : "xx";
598

    
599
	echo "<div id='div_param_b_adr_pg'>\n";
600
	echo "<br />\n";
601
	echo "<p><b>Bloc adresse responsable et page de garde&nbsp;:</b></p>\n";
602
	echo "<blockquote>\n";
603
	echo "<input type='radio' name='b_adr_pg' id='b_adr_pg_xx' value='xx' ";
604
	if($b_adr_pg_defaut=="xx") {
605
		echo "checked='checked' ";
606
	}
607
	echo "/><label for='b_adr_pg_xx' style='cursor:pointer'> D'apr?s les param?tres du bulletin HTML</label><br />\n";
608

    
609
	echo "<input type='radio' name='b_adr_pg' id='b_adr_pg_nn' value='nn' ";
610
	if($b_adr_pg_defaut=="nn") {
611
		echo "checked='checked' ";
612
	}
613
	echo "/><label for='b_adr_pg_nn' style='cursor:pointer'> sans bloc adresse ni page de garde</label><br />\n";
614

    
615
	echo "<input type='radio' name='b_adr_pg' id='b_adr_pg_yn' value='yn' ";
616
	if($b_adr_pg_defaut=="yn") {
617
		echo "checked='checked' ";
618
	}
619
	echo "/><label for='b_adr_pg_yn' style='cursor:pointer'> avec bloc adresse sans page de garde</label><br />\n";
620

    
621
	echo "<input type='radio' name='b_adr_pg' id='b_adr_pg_ny' value='ny' ";
622
	if($b_adr_pg_defaut=="ny") {
623
		echo "checked='checked' ";
624
	}
625
	echo "/><label for='b_adr_pg_ny' style='cursor:pointer'> sans bloc adresse avec page de garde</label><br />\n";
626

    
627
	echo "<input type='radio' name='b_adr_pg' id='b_adr_pg_yy' value='yy' ";
628
	if($b_adr_pg_defaut=="yy") {
629
		echo "checked='checked' ";
630
	}
631
	echo "/><label for='b_adr_pg_yy' style='cursor:pointer'> avec bloc adresse et page de garde</label><br />\n";
632
	echo "</blockquote>\n";
633
	echo "</div>\n";
634
	//===========================================
635

    
636

    
637

    
638
	// L'admin peut avoir acc?s aux bulletins, mais il n'a de toute fa?on pas acc?s au relev?s de notes.
639
	$sql="SELECT 1=1 FROM droits WHERE id='/cahier_notes/visu_releve_notes_bis.php' AND ".$_SESSION['statut']."='V';";
640
	$res_verif_droit=mysql_query($sql);
641
	if (mysql_num_rows($res_verif_droit)>0) {
642
		echo "<p><input type='checkbox' name='intercaler_releve_notes' id='intercaler_releve_notes' value='y' onchange='display_param_releve();' /> <label for='intercaler_releve_notes' style='cursor: pointer;'>Intercaler les relev?s de notes</label>\n";
643

    
644
		echo "<span id='pliage_param_releve'>\n";
645
		echo "(<i>";
646
		echo "<a href='#' onclick=\"document.getElementById('div_param_releve').style.display='';return false;\">Afficher</a>";
647
		echo " / \n";
648
		echo "<a href='#' onclick=\"document.getElementById('div_param_releve').style.display='none';return false;\">Masquer</a>";
649
		echo " les param?tres du relev? de notes</i>).";
650
		echo "</span>\n";
651

    
652
		echo "<br />\n";
653
		echo "(<i>pour permettre par exemple une impression recto/verso</i>).";
654
		echo "</p>\n";
655

    
656

    
657
		echo "<div id='div_param_releve'>\n";
658
		include("../cahier_notes/tableau_choix_parametres_releves_notes.php");
659
		echo "</div>\n";
660

    
661
		echo "<script type='text/javascript'>
662
function CocheLigne(item) {
663
	for (var i=0;i<".count($tab_id_classe).";i++) {
664
		if(document.getElementById(item+'_'+i)){
665
			document.getElementById(item+'_'+i).checked = true;
666
		}
667
	}
668
}
669

    
670
function DecocheLigne(item) {
671
	for (var i=0;i<".count($tab_id_classe).";i++) {
672
		if(document.getElementById(item+'_'+i)){
673
			document.getElementById(item+'_'+i).checked = false;
674
		}
675
	}
676
}
677

    
678
function ToutCocher() {
679
";
680
		for($k=0;$k<count($tab_item);$k++) {
681
			echo "	CocheLigne('".$tab_item[$k]."');\n";
682
		}
683
		echo "	CocheLigne('rn_app');
684
	CocheLigne('rn_adr_resp');
685
}
686

    
687
function ToutDeCocher() {
688
";
689
		for($k=0;$k<count($tab_item);$k++) {
690
			echo "	DecocheLigne('".$tab_item[$k]."');\n";
691
		}
692
		echo "	DecocheLigne('rn_app');
693
	DecocheLigne('rn_adr_resp');
694
}
695

    
696
</script>\n";
697

    
698
	}
699

    
700

    
701
	echo "<p align='center'><input type='submit' name='bouton_valide_select_eleves1' value='Valider' /></p>\n";
702
	echo "</div>\n";
703

    
704

    
705
	//=======================================
706
	/*
707
	echo "<div style='float:right; width:5em;'>\n";
708
	echo "<input type='submit' name='bouton_valide_select_eleves1' value='Valider' />\n";
709
	echo "</div>\n";
710
	*/
711
	//=======================================
712

    
713

    
714

    
715
	if(count($tab_id_classe)>1) {
716
		echo "<p>Pour toutes les classes";
717
		if(count($tab_periode_num)>1) {
718
			echo " et toutes les p?riodes";
719
		}
720
		echo " <a href='#' onClick='cocher_tous_eleves();return false;'>Cocher tous les ?l?ves</a> / <a href='#' onClick='decocher_tous_eleves();return false;'>D?cocher tous les ?l?ves</a></p>\n";
721
	}
722

    
723
	$max_eff_classe=0;
724
	for($i=0;$i<count($tab_id_classe);$i++) {
725
		// Est-ce bien un entier?
726
		if((strlen(my_ereg_replace("[0-9]","",$tab_id_classe[$i])))||($tab_id_classe[$i]=="")) {
727
			echo "<p>Identifiant de classe erron?: <span style='color:red'>".$tab_id_classe[$i]."</span></p></form>\n";
728
			require("../lib/footer.inc.php");
729
			die();
730
		}
731

    
732
		echo "<input type='hidden' name='tab_id_classe[$i]' value='".$tab_id_classe[$i]."' />\n";
733

    
734
		echo "<p class='bold'>Classe de ".get_class_from_id($tab_id_classe[$i])."</p>\n";
735

    
736
		echo "<table class='boireaus' summary='Choix des ?l?ves'>\n";
737
		echo "<tr>\n";
738
		echo "<th>El?ves</th>\n";
739
		for($j=0;$j<count($tab_periode_num);$j++) {
740
			// Est-ce bien un entier?
741
			if((strlen(my_ereg_replace("[0-9]","",$tab_periode_num[$j])))||($tab_periode_num[$j]=="")) {
742
				echo "<td>Identifiant de p?riode erron?: <span style='color:red'>".$tab_periode_num[$j]."</span></td></tr></table></form>\n";
743
				require("../lib/footer.inc.php");
744
				die();
745
			}
746

    
747
			//echo "<th>P?riode $j</th>\n";
748
			$sql="SELECT nom_periode FROM periodes WHERE id_classe='".$tab_id_classe[$i]."' AND num_periode='".$tab_periode_num[$j]."';";
749
			$res_per=mysql_query($sql);
750
			$lig_per=mysql_fetch_object($res_per);
751
			echo "<th>\n";
752

    
753
			echo "<input type='hidden' name='tab_periode_num[$j]' value='".$tab_periode_num[$j]."' />\n";
754

    
755
			echo $lig_per->nom_periode;
756

    
757
			echo "<br />\n";
758

    
759
			echo "<a href=\"javascript:CocheColonneSelectEleves(".$i.",".$j.");changement();\"><img src='../images/enabled.png' width='15' height='15' alt='Tout cocher' /></a> / <a href=\"javascript:DecocheColonneSelectEleves(".$i.",".$j.");changement();\"><img src='../images/disabled.png' width='15' height='15' alt='Tout d?cocher' /></a>\n";
760

    
761
			echo "</th>\n";
762
		}
763
		echo "</tr>\n";
764

    
765
		/*
766
		$sql="SELECT e.* FROM eleves e,
767
						j_eleves_classes jec
768
			WHERE jec.login=e.login AND
769
						jec.id_classe='".$tab_id_classe[$i]."' AND
770
						jec.periode='".$tab_periode_num[$j]."';";
771
		*/
772
		$sql="SELECT DISTINCT e.* FROM eleves e,
773
						j_eleves_classes jec
774
			WHERE jec.login=e.login AND
775
						jec.id_classe='".$tab_id_classe[$i]."'
776
			ORDER BY e.nom,e.prenom;";
777
		$res_ele=mysql_query($sql);
778
		$alt=1;
779
		$cpt=0;
780
		while($lig_ele=mysql_fetch_object($res_ele)) {
781
			$alt=$alt*(-1);
782
			echo "<tr class='lig$alt'>\n";
783
			echo "<td style='text-align:left;'>".$lig_ele->nom." ".$lig_ele->prenom."</td>\n";
784
			for($j=0;$j<count($tab_periode_num);$j++) {
785

    
786
				$sql="SELECT 1=1 FROM j_eleves_classes jec
787
					WHERE jec.id_classe='".$tab_id_classe[$i]."' AND
788
							jec.periode='".$tab_periode_num[$j]."';";
789
				$test=mysql_query($sql);
790
				if(mysql_num_rows($test)>0) {
791
					echo "<td><input type='checkbox' name='tab_selection_ele_".$i."_".$j."[]' id='tab_selection_ele_".$i."_".$j."_".$cpt."' value=\"".$lig_ele->login."\" ";
792
					if(!isset($preselection_eleves)) {echo "checked ";}
793
					//elseif((isset($preselection_eleves[$tab_periode_num[$j]]))&&(in_array($lig_ele->login,$preselection_eleves[$tab_periode_num[$j]]))) {echo "checked ";}
794
					elseif((isset($preselection_eleves[$tab_periode_num[$j]]))&&(strstr($preselection_eleves[$tab_periode_num[$j]],"|".$lig_ele->login."|"))) {echo "checked ";}
795
					echo "/></td>\n";
796
				}
797
				else {
798
					echo "<td>-</td>\n";
799
				}
800
			}
801
			echo "</tr>\n";
802
			$cpt++;
803
		}
804
		echo "</table>\n";
805

    
806
		if($max_eff_classe<$cpt) {$max_eff_classe=$cpt;}
807

    
808
	}
809

    
810
//count($tab_periode_num)
811

    
812
	echo "<script type='text/javascript'>
813

    
814
function CocheColonneSelectEleves(i,j) {
815
	for (var k=0;k<$max_eff_classe;k++) {
816
		if(document.getElementById('tab_selection_ele_'+i+'_'+j+'_'+k)){
817
			document.getElementById('tab_selection_ele_'+i+'_'+j+'_'+k).checked = true;
818
		}
819
	}
820
}
821

    
822
function DecocheColonneSelectEleves(i,j) {
823
	for (var k=0;k<$max_eff_classe;k++) {
824
		if(document.getElementById('tab_selection_ele_'+i+'_'+j+'_'+k)){
825
			document.getElementById('tab_selection_ele_'+i+'_'+j+'_'+k).checked = false;
826
		}
827
	}
828
}
829

    
830
function cocher_tous_eleves() {
831
";
832

    
833
	for($i=0;$i<count($tab_id_classe);$i++) {
834
		for($j=0;$j<count($tab_periode_num);$j++) {
835
			echo "CocheColonneSelectEleves($i,$j);\n";
836
		}
837
	}
838

    
839
	echo "}
840
function decocher_tous_eleves() {
841
";
842

    
843
	for($i=0;$i<count($tab_id_classe);$i++) {
844
		for($j=0;$j<count($tab_periode_num);$j++) {
845
			echo "DecocheColonneSelectEleves($i,$j);\n";
846
		}
847
	}
848

    
849
	echo "}
850

    
851
function display_param_releve() {
852
	if(document.getElementById('div_param_releve')) {
853
		if(document.getElementById('intercaler_releve_notes')) {
854
			if(document.getElementById('intercaler_releve_notes').checked==true) {
855
				document.getElementById('div_param_releve').style.display='';
856
			}
857
			else {
858
				document.getElementById('div_param_releve').style.display='none';
859
			}
860
		}
861
	}
862
	// On donne l'acc?s aux liens de pliage/d?pliage des param?tres du relev? de notes
863
	if(document.getElementById('pliage_param_releve'))?{document.getElementById('pliage_param_releve').style.display='';}
864
}
865
display_param_releve();
866

    
867
// On cache l'acc?s aux liens de pliage/d?pliage des param?tres du relev? de notes
868
// jusqu'? ce que la case d'insertion des relev?s de notes entre les bulletins ait ?t? coch?e (au moins une fois)
869
if(document.getElementById('pliage_param_releve')) {document.getElementById('pliage_param_releve').style.display='none';}
870

    
871

    
872

    
873
function display_param_b_adr_pg() {
874
	if(document.getElementById('div_param_b_adr_pg')) {
875
		if(document.getElementById('mode_bulletin_html')) {
876
			if(document.getElementById('mode_bulletin_html').checked==true) {
877
				document.getElementById('div_param_b_adr_pg').style.display='';
878
			}
879
			else {
880
				document.getElementById('div_param_b_adr_pg').style.display='none';
881
			}
882
		}
883
	}
884
}
885
display_param_b_adr_pg();
886

    
887
</script>\n";
888

    
889
	echo "<input type='hidden' name='valide_select_eleves' value='y' />\n";
890
	echo "<p><input type='submit' name='bouton_valide_select_eleves2' value='Valider' /></p>\n";
891
	echo "</form>\n";
892
}
893
//=======================================================
894
//==EXTRACTION DES DONNEES PUIS AFFICHAGE DES BULLETINS==
895
else {
896
	/*
897
	echo "<p class='bold'>";
898
	echo "<a href='".$_SERVER['PHP_SELF']."'>Choisir d'autres classes</a>\n";
899
	echo " | <a href='#' onClick='history.go(-1);'>Choisir d'autres p?riodes</a>\n";
900
	echo " | <a href='#' onClick='history.go(-2);'>Choisir d'autres ?l?ves</a>\n";
901
	echo "</p>\n";
902
	*/
903

    
904
	//debug_var();
905

    
906
	$mode_bulletin=isset($_POST['mode_bulletin']) ? $_POST['mode_bulletin'] : "html";
907
	$un_seul_bull_par_famille=isset($_POST['un_seul_bull_par_famille']) ? $_POST['un_seul_bull_par_famille'] : "non";
908
	$coefficients_a_1=isset($_POST['coefficients_a_1']) ? $_POST['coefficients_a_1'] : "non";
909

    
910
	$use_cell_ajustee=isset($_POST['use_cell_ajustee']) ? $_POST['use_cell_ajustee'] : "y";
911

    
912
	$tri_par_etab_orig=isset($_POST['tri_par_etab_orig']) ? $_POST['tri_par_etab_orig'] : "n";
913

    
914
	// 20100615
915
	$moyennes_periodes_precedentes=isset($_POST['moyennes_periodes_precedentes']) ? $_POST['moyennes_periodes_precedentes'] : "n";
916

    
917
	//========================================
918
	/*
919
	echo "<style type='text/css'>
920
	@media screen{
921
		#infodiv {
922
			float: right;
923
			width: 20em;
924
			background-color: white;
925
		}
926
	}
927
	@media print{
928
		#infodiv {
929
			display:none;
930
		}
931
	}
932
</style>\n";
933
	*/
934

    
935

    
936
	if($mode_bulletin=="html") {
937
		echo "<div id='infodiv'>
938
<p id='titre_infodiv' style='font-weight:bold; text-align:center; border:1px solid black;'></p>
939
<table class='boireaus' width='100%' summary='Tableau de progression'>
940
<tr>
941
<th colspan='3' id='td_info'></th>
942
</tr>
943
<tr>
944
<th width='33%'>Classe</th>
945
<th width='33%'>P?riode</th>
946
<th>El?ve</th>
947
</tr>
948
<tr>
949
<td id='td_classe'></td>
950
<td id='td_periode'></td>
951
<td id='td_ele'></td>
952
</tr>
953
</table>
954
</div>\n";
955
	}
956

    
957
	//=============================================
958
	// Faire les extractions pour le relev? de notes si jamais cela a ?t? demand?.
959
	if(isset($intercaler_releve_notes)) {
960
		include("../cahier_notes/extraction_donnees_releves_notes.php");
961
	}
962
	else {
963
		// On initialise un tableau qui restera vide...
964
		$tab_releve=array();
965
	}
966
	//=============================================
967

    
968

    
969
	if($mode_bulletin=="html") {
970
		echo "<script type='text/javascript'>
971
	document.getElementById('titre_infodiv').innerHTML='Bulletins';
972
	document.getElementById('td_info').innerHTML='Pr?paratifs';
973
	document.getElementById('td_classe').innerHTML='';
974
	document.getElementById('td_periode').innerHTML='';
975
	document.getElementById('td_ele').innerHTML='';
976
</script>\n";
977
	}
978

    
979
	//========================================
980

    
981

    
982
	//========================================
983
	// RECUPERER LES INFOS ETABLISSEMENT
984

    
985
	//==============================
986
	$motif="Temoin_1";
987
	decompte_debug($motif,"Initialisation $motif");
988
	//==============================
989

    
990
	// Peut-?tre d?placer ?a vers un fichier externe d'initialisation de variables
991
	// Et appeler les variables en 'global' dans les fonctions g?n?rant les bulletins
992

    
993
	/*
994
	// R?cup?r?s plus haut
995
	$RneEtablissement=getSettingValue("gepiSchoolRne");
996
	$gepiSchoolName=getSettingValue("gepiSchoolName");
997
	$gepiSchoolAdress1=getSettingValue("gepiSchoolAdress1");
998
	$gepiSchoolAdress2=getSettingValue("gepiSchoolAdress2");
999
	$gepiSchoolZipCode=getSettingValue("gepiSchoolZipCode");
1000
	$gepiSchoolCity=getSettingValue("gepiSchoolCity");
1001
	$gepiSchoolPays=getSettingValue("gepiSchoolPays");
1002

    
1003
	$logo_etab=getSettingValue("logo_etab");
1004

    
1005
	if(!getSettingValue("bull_intitule_app")){
1006
		$bull_intitule_app="Appr?ciations/Conseils";
1007
	}
1008
	else{
1009
		$bull_intitule_app=getSettingValue("bull_intitule_app");
1010
	}
1011

    
1012
	if(!getSettingValue("bull_affiche_tel")){
1013
		$bull_affiche_tel="n";
1014
	}
1015
	else{
1016
		$bull_affiche_tel=getSettingValue("bull_affiche_tel");
1017
	}
1018

    
1019
	if(!getSettingValue("bull_affiche_fax")){
1020
		$bull_affiche_fax="n";
1021
	}
1022
	else{
1023
		$bull_affiche_fax=getSettingValue("bull_affiche_fax");
1024
	}
1025

    
1026
	if($bull_affiche_fax=="y"){
1027
		$gepiSchoolFax=getSettingValue("gepiSchoolFax");
1028
	}
1029

    
1030
	if($bull_affiche_tel=="y"){
1031
		$gepiSchoolTel=getSettingValue("gepiSchoolTel");
1032
	}
1033

    
1034
	//========================================
1035

    
1036
	if(getSettingValue("genre_periode")){
1037
		$genre_periode=getSettingValue("genre_periode");
1038
	}
1039
	else{
1040
		$genre_periode="M";
1041
	}
1042
	*/
1043

    
1044
	//========================================
1045

    
1046
	// Absences
1047
	$bull_affiche_absences=getSettingValue("bull_affiche_absences");
1048

    
1049
	// Prof principal
1050
	$gepi_prof_suivi=getSettingValue("gepi_prof_suivi");
1051

    
1052
	//=========================================
1053
	// AID
1054
	$bull_affiche_aid=getSettingValue("bull_affiche_aid");
1055

    
1056
	if ($bull_affiche_aid == 'y') {
1057
		// Initialisations diverses
1058
		unset($call_data_aid_b);
1059
		unset($call_data_aid_e);
1060

    
1061
		// On pr?pare l'affichage des appr?ciations des Activit?s Interdisciplinaires devant appara?tre en t?te des bulletins :
1062
		if (!isset($call_data_aid_b)){
1063
			$sql="SELECT * FROM aid_config WHERE (order_display1 ='b' and display_bulletin!='n') ORDER BY order_display2;";
1064
			//echo "$sql<br />";
1065
			$call_data_aid_b = mysql_query($sql);
1066
			$nb_aid_b = mysql_num_rows($call_data_aid_b);
1067
			//echo "\$nb_aid_b=$nb_aid_b<br />";
1068
		}
1069

    
1070
		// On pr?pare l'affichage des appr?ciations des Activit?s Interdisciplinaires devant appara?tre en fin des bulletins :
1071
		if (!isset($call_data_aid_e)){
1072
			$sql="SELECT * FROM aid_config WHERE (order_display1 ='e' and display_bulletin!='n') ORDER BY order_display2;";
1073
			//echo "$sql<br />";
1074
			$call_data_aid_e = mysql_query($sql);
1075
			$nb_aid_e = mysql_num_rows($call_data_aid_e);
1076
			//echo "\$nb_aid_e=$nb_aid_e<br />";
1077
		}
1078
	}
1079
	//=========================================
1080

    
1081

    
1082
	// Tableau destin? ? stocker toutes les infos
1083
	$tab_bulletin=array();
1084

    
1085
	//==============================
1086
	$motif="Temoin_1";
1087
	decompte_debug($motif,"$motif avant la boucle classes");
1088
	//==============================
1089

    
1090
	// Boucle sur les classes
1091
	for($loop_classe=0;$loop_classe<count($tab_id_classe);$loop_classe++) {
1092

    
1093
		//==============================
1094
		if($mode_bulletin=="html") {
1095
			$motif="Temoin_classe";
1096
			decompte_debug($motif,"$motif classe $loop_classe");
1097
			flush();
1098
			echo "<script type='text/javascript'>
1099
	document.getElementById('td_classe').innerHTML='".get_class_from_id($tab_id_classe[$loop_classe])."';
1100
</script>\n";
1101
		}
1102
		//==============================
1103

    
1104

    
1105
		// Remplissage des param?tres du mod?le de bulletin PDF:
1106
		if($mode_bulletin=="pdf") {
1107

    
1108
			// information d'activation des diff?rentes parties du bulletin
1109
			$tab_modele_pdf["affiche_filigrame"][$tab_id_classe[$loop_classe]]='1'; // affiche un filigramme
1110
			$tab_modele_pdf["texte_filigrame"][$tab_id_classe[$loop_classe]]='DUPLICATA INTERNET'; // texte du filigrame
1111
			$tab_modele_pdf["affiche_logo_etab"][$tab_id_classe[$loop_classe]]='1';
1112
			$tab_modele_pdf["nom_etab_gras"][$tab_id_classe[$loop_classe]]='0';
1113
			$tab_modele_pdf["entente_mel"][$tab_id_classe[$loop_classe]]='1'; // afficher l'adresse mel dans l'ent?te
1114
			$tab_modele_pdf["entente_tel"][$tab_id_classe[$loop_classe]]='1'; // afficher le num?ro de t?l?phone dans l'ent?te
1115
			$tab_modele_pdf["entente_fax"][$tab_id_classe[$loop_classe]]='1'; // afficher le num?ro de fax dans l'ent?te
1116
			$tab_modele_pdf["L_max_logo"][$tab_id_classe[$loop_classe]]=75; $tab_modele_pdf["H_max_logo"][$tab_id_classe[$loop_classe]]=75; //dimension du logo
1117
			$tab_modele_pdf["active_bloc_datation"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les informations de datation du bulletin
1118
			$tab_modele_pdf["taille_texte_date_edition"][$tab_id_classe[$loop_classe]] = '8'; // d?finit la taille de la date d'?dition du bulletin
1119
			$tab_modele_pdf["active_bloc_eleve"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les informations sur l'?l?ve
1120
			$tab_modele_pdf["active_bloc_adresse_parent"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher l'adresse des parents
1121
			$tab_modele_pdf["active_bloc_absence"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les absences de l'?l?ve
1122
			$tab_modele_pdf["active_bloc_note_appreciation"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les notes et appr?ciations
1123
			$tab_modele_pdf["active_bloc_avis_conseil"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les avis du conseil de classe
1124
			$tab_modele_pdf["active_bloc_chef"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher la signature du chef
1125
			$tab_modele_pdf["active_photo"][$tab_id_classe[$loop_classe]] = '0'; // fait - afficher la photo de l'?l?ve
1126
			$tab_modele_pdf["active_coef_moyenne"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le co?ficient des moyenne par mati?re
1127
			$active_coef_sousmoyene = '1'; // fait - afficher le co?ficient des moyenne par mati?re
1128
			$tab_modele_pdf["active_nombre_note"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le nombre de note par mati?re sous la moyenne de l'?l?ve
1129
			$tab_modele_pdf["active_nombre_note_case"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le nombre de note par mati?re
1130
			$tab_modele_pdf["active_moyenne"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les moyennes
1131
			$tab_modele_pdf["active_moyenne_eleve"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher la moyenne de l'?l?ve
1132
			$tab_modele_pdf["active_moyenne_classe"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les moyennes de la classe
1133
			$tab_modele_pdf["active_moyenne_min"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les moyennes minimum
1134
			$tab_modele_pdf["active_moyenne_max"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les moyennes maximum
1135
			$tab_modele_pdf["active_regroupement_cote"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le nom des regroupement sur le cot?
1136
			$tab_modele_pdf["active_entete_regroupement"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les ent?te des regroupement
1137
			$tab_modele_pdf["active_moyenne_regroupement"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les moyennes des regroupement
1138
			$tab_modele_pdf["active_moyenne_general"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher la moyenne g?n?ral sur le bulletin
1139
			$tab_modele_pdf["active_rang"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le rang de l'?l?ve
1140
			$tab_modele_pdf["active_graphique_niveau"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher le graphique des niveaux
1141
			$tab_modele_pdf["active_appreciation"][$tab_id_classe[$loop_classe]] = '1'; // fait - afficher les appr?ciations des professeurs
1142

    
1143
			$tab_modele_pdf["affiche_doublement"][$tab_id_classe[$loop_classe]] = '1'; // affiche si l'?l?ve ? doubler
1144
			$tab_modele_pdf["affiche_date_naissance"][$tab_id_classe[$loop_classe]] = '1'; // affiche la date de naissance de l'?l?ve
1145
			$tab_modele_pdf["affiche_lieu_naissance"][$tab_id_classe[$loop_classe]] = '0'; // affiche le lieu de naissance de l'?l?ve
1146
			$tab_modele_pdf["affiche_dp"][$tab_id_classe[$loop_classe]] = '1'; // affiche l'?tat de demi pension ou extern
1147
			$tab_modele_pdf["affiche_nom_court"][$tab_id_classe[$loop_classe]] = '1'; // affiche le nom court de la classe
1148
			$tab_modele_pdf["affiche_effectif_classe"][$tab_id_classe[$loop_classe]] = '1'; // affiche l'effectif de la classe
1149
			$tab_modele_pdf["affiche_numero_impression"][$tab_id_classe[$loop_classe]] = '1'; // affiche le num?ro d'impression des bulletins
1150
			$tab_modele_pdf["affiche_etab_origine"][$tab_id_classe[$loop_classe]] = '0'; // affiche l'?tablissement d'origine
1151

    
1152
			$tab_modele_pdf["toute_moyenne_meme_col"][$tab_id_classe[$loop_classe]]='0'; // afficher les information moyenne classe/min/max sous la moyenne g?n?ral de l'?l?ve
1153
			$active_coef_sousmoyene = '1'; //afficher le coeficent en dessous de la moyenne de l'?l?ve
1154

    
1155
			$tab_modele_pdf["entete_model_bulletin"][$tab_id_classe[$loop_classe]] = '1'; //choix du type d'entete des moyennes
1156
			$tab_modele_pdf["ordre_entete_model_bulletin"][$tab_id_classe[$loop_classe]] = '1'; // ordre des ent?tes tableau du bulletin
1157

    
1158
			// information param?trage
1159
			$tab_modele_pdf["caractere_utilse"][$tab_id_classe[$loop_classe]] = 'Arial';
1160
			// cadre identit?e parents
1161
			$tab_modele_pdf["X_parent"][$tab_id_classe[$loop_classe]]=110; $tab_modele_pdf["Y_parent"][$tab_id_classe[$loop_classe]]=40;
1162
			$tab_modele_pdf["imprime_pour"][$tab_id_classe[$loop_classe]] = 1;
1163
			// cadre identit?e eleve
1164
			$tab_modele_pdf["X_eleve"][$tab_id_classe[$loop_classe]]=5; $tab_modele_pdf["Y_eleve"][$tab_id_classe[$loop_classe]]=40;
1165
			$tab_modele_pdf["cadre_eleve"][$tab_id_classe[$loop_classe]]=1;
1166
			// cadre de datation du bulletin
1167
			$tab_modele_pdf["X_datation_bul"][$tab_id_classe[$loop_classe]]=110; $tab_modele_pdf["Y_datation_bul"][$tab_id_classe[$loop_classe]]=5;
1168
			$tab_modele_pdf["cadre_datation_bul"][$tab_id_classe[$loop_classe]]=1;
1169
			// si les cat?gorie son affich? avec moyenne
1170
			$tab_modele_pdf["hauteur_info_categorie"][$tab_id_classe[$loop_classe]]=5;
1171
			// cadre des notes et app
1172
			$tab_modele_pdf["X_note_app"][$tab_id_classe[$loop_classe]]=5;
1173
			$tab_modele_pdf["Y_note_app"][$tab_id_classe[$loop_classe]]=72;
1174
			$tab_modele_pdf["longeur_note_app"][$tab_id_classe[$loop_classe]]=200;
1175
			$tab_modele_pdf["hauteur_note_app"][$tab_id_classe[$loop_classe]]=175;
1176
			/*
1177
			if($tab_modele_pdf["active_regroupement_cote"][$tab_id_classe[$loop_classe]]==='1') {
1178
				$tab_modele_pdf["X_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["X_note_app"][$tab_id_classe[$loop_classe]]+5;
1179
				$tab_modele_pdf["Y_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["Y_note_app"][$tab_id_classe[$loop_classe]];
1180
				$tab_modele_pdf["longeur_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["longeur_note_app"][$tab_id_classe[$loop_classe]]-5;
1181
				$tab_modele_pdf["hauteur_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["hauteur_note_app"][$tab_id_classe[$loop_classe]];
1182
			}
1183
			*/
1184
			//coef des matiere
1185
			$tab_modele_pdf["largeur_coef_moyenne"][$tab_id_classe[$loop_classe]] = 8;
1186
			//nombre de note par mati?re
1187
			$tab_modele_pdf["largeur_nombre_note"][$tab_id_classe[$loop_classe]] = 8;
1188
			//champ des moyennes
1189
			$tab_modele_pdf["largeur_d_une_moyenne"][$tab_id_classe[$loop_classe]] = 10;
1190
			//graphique de niveau
1191
			$tab_modele_pdf["largeur_niveau"][$tab_id_classe[$loop_classe]] = 18;
1192
			//rang de l'?l?ve
1193
			$tab_modele_pdf["largeur_rang"][$tab_id_classe[$loop_classe]] = 8;
1194
			//autres infos
1195
			$tab_modele_pdf["active_reperage_eleve"][$tab_id_classe[$loop_classe]] = '1';
1196
			$tab_modele_pdf["couleur_reperage_eleve1"][$tab_id_classe[$loop_classe]] = '255';
1197
			$tab_modele_pdf["couleur_reperage_eleve2"][$tab_id_classe[$loop_classe]] = '255';
1198
			$tab_modele_pdf["couleur_reperage_eleve3"][$tab_id_classe[$loop_classe]] = '207';
1199
			$tab_modele_pdf["couleur_categorie_cote"][$tab_id_classe[$loop_classe]] = '1';
1200
			$tab_modele_pdf["couleur_categorie_cote1"][$tab_id_classe[$loop_classe]]='239';
1201
			$tab_modele_pdf["couleur_categorie_cote2"][$tab_id_classe[$loop_classe]]='239';
1202
			$tab_modele_pdf["couleur_categorie_cote3"][$tab_id_classe[$loop_classe]]='239';
1203
			$tab_modele_pdf["couleur_categorie_entete"][$tab_id_classe[$loop_classe]] = '1';
1204
			$tab_modele_pdf["couleur_categorie_entete1"][$tab_id_classe[$loop_classe]]='239';
1205
			$tab_modele_pdf["couleur_categorie_entete2"][$tab_id_classe[$loop_classe]]='239';
1206
			$tab_modele_pdf["couleur_categorie_entete3"][$tab_id_classe[$loop_classe]]='239';
1207
			$tab_modele_pdf["couleur_moy_general"][$tab_id_classe[$loop_classe]] = '1';
1208
			$tab_modele_pdf["couleur_moy_general1"][$tab_id_classe[$loop_classe]]='239';
1209
			$tab_modele_pdf["couleur_moy_general2"][$tab_id_classe[$loop_classe]]='239';
1210
			$tab_modele_pdf["couleur_moy_general3"][$tab_id_classe[$loop_classe]]='239';
1211
			$tab_modele_pdf["titre_entete_matiere"][$tab_id_classe[$loop_classe]]='Mati?re';
1212
			$active_coef_sousmoyene = '1'; $tab_modele_pdf["titre_entete_coef"][$tab_id_classe[$loop_classe]]='coef.';
1213
			$tab_modele_pdf["titre_entete_nbnote"][$tab_id_classe[$loop_classe]]='nb. n.';
1214
			$tab_modele_pdf["titre_entete_rang"][$tab_id_classe[$loop_classe]]='rang';
1215
			$titre_entete_appreciation='Appr?ciation/Conseils';
1216
			// cadre absence
1217
			$tab_modele_pdf["X_absence"][$tab_id_classe[$loop_classe]]=5; $tab_modele_pdf["Y_absence"][$tab_id_classe[$loop_classe]]=246.3;
1218
			// entete du bas contient les moyennes g?rn?ral
1219
			$tab_modele_pdf["hauteur_entete_moyenne_general"][$tab_id_classe[$loop_classe]] = 5;
1220
			// cadre des Avis du conseil de classe
1221
			$tab_modele_pdf["X_avis_cons"][$tab_id_classe[$loop_classe]]=5; $tab_modele_pdf["Y_avis_cons"][$tab_id_classe[$loop_classe]]=250; $tab_modele_pdf["longeur_avis_cons"][$tab_id_classe[$loop_classe]]=130; $tab_modele_pdf["hauteur_avis_cons"][$tab_id_classe[$loop_classe]]=37;
1222
			$tab_modele_pdf["cadre_avis_cons"][$tab_id_classe[$loop_classe]]=1;
1223
			// cadre signature du chef
1224
			$tab_modele_pdf["X_sign_chef"][$tab_id_classe[$loop_classe]]=138; $tab_modele_pdf["Y_sign_chef"][$tab_id_classe[$loop_classe]]=250; $tab_modele_pdf["longeur_sign_chef"][$tab_id_classe[$loop_classe]]=67; $tab_modele_pdf["hauteur_sign_chef"][$tab_id_classe[$loop_classe]]=37;
1225
			$tab_modele_pdf["cadre_sign_chef"][$tab_id_classe[$loop_classe]]=0;
1226
			//les moyennes
1227
			$tab_modele_pdf["arrondie_choix"][$tab_id_classe[$loop_classe]]='0.01'; //arrondie de la moyenne
1228
			$tab_modele_pdf["nb_chiffre_virgule"][$tab_id_classe[$loop_classe]]='1'; //nombre de chiffre apr?s la virgule
1229
			$tab_modele_pdf["chiffre_avec_zero"][$tab_id_classe[$loop_classe]]='1'; // si une moyenne se termine par ,00 alors on supprimer les zero
1230

    
1231
			$tab_modele_pdf["autorise_sous_matiere"][$tab_id_classe[$loop_classe]] = '1'; //autorise l'affichage des sous mati?re
1232
			$tab_modele_pdf["affichage_haut_responsable"][$tab_id_classe[$loop_classe]] = '1'; //affiche le nom du haut responsable de la classe
1233

    
1234
			$tab_modele_pdf["largeur_matiere"][$tab_id_classe[$loop_classe]] = '40'; // largeur de la colonne matiere
1235

    
1236
			$tab_modele_pdf["taille_texte_matiere"][$tab_id_classe[$loop_classe]] = '10'; //taille du texte des mati?res
1237

    
1238
			$tab_modele_pdf["titre_bloc_avis_conseil"][$tab_id_classe[$loop_classe]] = 'Avis du Conseil de classe:'; // titre du bloc avis du conseil de classe
1239
			$tab_modele_pdf["taille_titre_bloc_avis_conseil"][$tab_id_classe[$loop_classe]] = '10'; // taille du titre du bloc avis du conseil
1240
			$tab_modele_pdf["taille_profprincipal_bloc_avis_conseil"][$tab_id_classe[$loop_classe]] = '10'; // taille du texte prof principal du bloc avis conseil de classe
1241
			$tab_modele_pdf["affiche_fonction_chef"][$tab_id_classe[$loop_classe]] = '1'; // affiche la fonction du chef
1242
			$tab_modele_pdf["taille_texte_fonction_chef"][$tab_id_classe[$loop_classe]] = '10'; // taille du texte de la fonction du chef
1243
			$tab_modele_pdf["taille_texte_identitee_chef"][$tab_id_classe[$loop_classe]] = '10'; // taille du texte du nom du chef
1244

    
1245
			$tab_modele_pdf["cadre_adresse"][$tab_id_classe[$loop_classe]] = ''; // cadre sur l'adresse
1246

    
1247
			$tab_modele_pdf["centrage_logo"][$tab_id_classe[$loop_classe]] = '0'; // centrer le logo de l'?tablissement
1248
			$tab_modele_pdf["Y_centre_logo"][$tab_id_classe[$loop_classe]] = '18'; // centre du logo sur la page
1249
			$tab_modele_pdf["ajout_cadre_blanc_photo"][$tab_id_classe[$loop_classe]] = '0'; // ajouter un cadre blanc pour la photo de l'?l?ve.
1250

    
1251
			$tab_modele_pdf["affiche_moyenne_mini_general"][$tab_id_classe[$loop_classe]] = '1'; // permet l'affichage de la moyenne g?n?ral mini
1252
			$tab_modele_pdf["affiche_moyenne_maxi_general"][$tab_id_classe[$loop_classe]] = '1'; // permet l'affichage de la moyenne g?n?ral maxi
1253

    
1254
			$tab_modele_pdf["affiche_date_edition"][$tab_id_classe[$loop_classe]] = '1'; // affiche la date d'?dition
1255
			$tab_modele_pdf["affiche_ine"][$tab_id_classe[$loop_classe]] = '0'; // affiche l'INE de l'?l?ve
1256

    
1257
			$tab_modele_pdf["affiche_moyenne_general_coef_1"][$tab_id_classe[$loop_classe]] = '0'; // affichage des moyennes g?n?rales avec coef 1 en plus des autres coeff saisis dans Gestion des classes/<Classe> Enseignements
1258

    
1259
			//================================
1260
			//================================
1261
			//================================
1262

    
1263
			// Mod?le de bulletin PDF
1264
			$type_bulletin=isset($_POST['type_bulletin']) ? $_POST['type_bulletin'] : 1;
1265
			// CONTROLER SI type_bulletin EST BIEN UN ENTIER ?ventuellement -1
1266
			if(isset($type_bulletin)) {
1267

    
1268
				$option_modele_bulletin=getSettingValue("option_modele_bulletin");
1269
				if($option_modele_bulletin==1) {$type_bulletin=-1;}
1270

    
1271
				//echo "\$type_bulletin=$type_bulletin<br />";
1272
				if ($type_bulletin == -1) {
1273
					// cas mod?le par classe
1274
					$sql="SELECT modele_bulletin_pdf FROM classes WHERE id='".$tab_id_classe[$loop_classe]."';";
1275
					//echo "$sql<br />";
1276
					$res_model=mysql_query($sql);
1277
					if(mysql_num_rows($res_model)==0) {
1278
						$sql="SELECT * FROM modele_bulletin WHERE id_model_bulletin='1';";
1279
					}
1280
					else {
1281
						$lig_mb=mysql_fetch_object($res_model);
1282

    
1283
						//echo "\$lig_mb->modele_bulletin_pdf=$lig_mb->modele_bulletin_pdf<br />";
1284
						if(($lig_mb->modele_bulletin_pdf=='NULL')||($lig_mb->modele_bulletin_pdf=='')) {
1285
							$sql="SELECT * FROM modele_bulletin WHERE id_model_bulletin='1';";
1286
						}
1287
						else {
1288
							$sql="SELECT * FROM modele_bulletin WHERE id_model_bulletin='".$lig_mb->modele_bulletin_pdf."';";
1289
						}
1290
					}
1291
				} else {
1292
					$sql="SELECT * FROM modele_bulletin WHERE id_model_bulletin='".$type_bulletin."';";
1293
				}
1294
				//echo "$sql<br />";
1295
			}
1296

    
1297
			//$type_bulletin=3;
1298
			//$sql='SELECT * FROM modele_bulletin WHERE id_model_bulletin="'.$type_bulletin.'"';
1299
			//echo "$sql<br />";
1300
			$requete_model = mysql_query($sql);
1301
			if(mysql_num_rows($requete_model)>0) {
1302
				$cpt=0;
1303
				while($lig_model=mysql_fetch_object($requete_model)) {
1304
					$tab_modele_pdf["$lig_model->nom"][$tab_id_classe[$loop_classe]]=$lig_model->valeur;
1305
				}
1306
			}
1307

    
1308
			// Il faudrait appliquer d'autres correctifs:
1309
			//echo "\$tab_modele_pdf[\"largeur_nombre_note\"][$tab_id_classe[$loop_classe]]='".$tab_modele_pdf["largeur_nombre_note"][$tab_id_classe[$loop_classe]]."'<br />";
1310
			if($tab_modele_pdf["largeur_nombre_note"][$tab_id_classe[$loop_classe]]=="0") {$tab_modele_pdf["largeur_nombre_note"][$tab_id_classe[$loop_classe]] = 8;}
1311

    
1312
			if($tab_modele_pdf["active_regroupement_cote"][$tab_id_classe[$loop_classe]]==='1') {
1313
				$tab_modele_pdf["X_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["X_note_app"][$tab_id_classe[$loop_classe]]+5;
1314
				$tab_modele_pdf["Y_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["Y_note_app"][$tab_id_classe[$loop_classe]];
1315
				$tab_modele_pdf["longeur_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["longeur_note_app"][$tab_id_classe[$loop_classe]]-5;
1316
				$tab_modele_pdf["hauteur_note_app"][$tab_id_classe[$loop_classe]]=$tab_modele_pdf["hauteur_note_app"][$tab_id_classe[$loop_classe]];
1317
			}
1318

    
1319
			//================================
1320
			//================================
1321
			//================================
1322
		}
1323

    
1324

    
1325
		//$id_classe=2;
1326
		$id_classe=$tab_id_classe[$loop_classe];
1327
		// Est-ce bien un entier?
1328
		if((strlen(my_ereg_replace("[0-9]","",$id_classe)))||($id_classe=="")) {
1329
			echo "<p>Identifiant de classe erron?: <span style='color:red'>$id_classe</span></p>\n";
1330
			require("../lib/footer.inc.php");
1331
			die();
1332
		}
1333

    
1334

    
1335
		// ++++++++++++++++++++++++++++++++++++++
1336
		// ++++++++++++++++++++++++++++++++++++++
1337
		// AJOUTER UN TEST: Le visiteur a-t-il le droit d'acc?der ? cette page pour cette classe
1338
		if ($_SESSION["statut"] == "scolarite") {
1339
			$sql="SELECT 1=1 FROM classes c, j_scol_classes jsc, j_eleves_classes jec WHERE (jec.id_classe=c.id AND jsc.id_classe=c.id AND jsc.login='".$_SESSION['login']."' AND c.id='$id_classe');";
1340
		}
1341
		//elseif ($_SESSION["statut"] == "administrateur") {
1342
		elseif (($_SESSION["statut"] == "administrateur")||($_SESSION["statut"] == "secours")) {
1343
			// On selectionne toutes les classes
1344
			//$sql="SELECT DISTINCT c.* FROM classes c WHERE 1";
1345
			$sql="SELECT 1=1 FROM j_eleves_classes jec, classes c WHERE (c.id=jec.id_classe) LIMIT 1;";
1346
		}
1347
		elseif ($_SESSION["statut"] == "professeur") {
1348
			$sql="SELECT DISTINCT c.* FROM classes c, j_eleves_professeurs jep, j_eleves_classes jec WHERE (jep.professeur='".$_SESSION['login']."' AND jep.login = jec.login AND jec.id_classe = c.id AND c.id='$id_classe');";
1349
		}
1350
		else {
1351
			// On ne devrait pas arriver jusque-l?...
1352
			echo "<p>Droits insuffisants pour effectuer cette op?ration</p>\n";
1353
			require("../lib/footer.inc.php");
1354
			die();
1355
		}
1356

    
1357
		$test_acces_classe=mysql_query($sql);
1358
		if(mysql_num_rows($test_acces_classe)==0) {
1359
            tentative_intrusion(2, "Tentative d'un ".$_SESSION["statut"]." (".$_SESSION["login"].") ? une classe (".get_class_from_id($id_classe).") sans y ?tre autoris?.");
1360
            echo "<p>Vous n'?tes pas autoris?s ? ?tre ici.</p>\n";
1361
			require("../lib/footer.inc.php");
1362
			die();
1363
		}
1364
		// ++++++++++++++++++++++++++++++++++++++
1365
		// ++++++++++++++++++++++++++++++++++++++
1366

    
1367

    
1368
		// Tableau destin? ? stocker toutes les infos
1369
		$tab_bulletin[$id_classe]=array();
1370
		if(!isset($intercaler_releve_notes)) {
1371
			// On initialise un tableau qui va rester vide
1372
			$tab_releve[$id_classe]=array();
1373
		}
1374

    
1375
		$affiche_adresse = sql_query1("SELECT display_address FROM classes WHERE id='".$id_classe."'");
1376
		//echo "\$affiche_adresse=$affiche_adresse<br />";
1377

    
1378
		//===========================================
1379
		$b_adr_pg=isset($_POST['b_adr_pg']) ? $_POST['b_adr_pg'] : 'xx';
1380
		if($b_adr_pg=='nn') {
1381
			$affiche_adresse="n";
1382
			$page_garde_imprime="n";
1383
		}
1384
		elseif($b_adr_pg=='yn') {
1385
			$affiche_adresse="y";
1386
			$page_garde_imprime="n";
1387
		}
1388
		elseif($b_adr_pg=='ny') {
1389
			$affiche_adresse="n";
1390
			$page_garde_imprime="yes";
1391
		}
1392
		elseif($b_adr_pg=='yy') {
1393
			$affiche_adresse="y";
1394
			$page_garde_imprime="yes";
1395
		}
1396
		$affiche_page_garde=$page_garde_imprime;
1397
		$_SESSION['b_adr_pg']=$b_adr_pg;
1398
		//===========================================
1399

    
1400
		$sql="SELECT 1=1 FROM j_eleves_classes WHERE id_classe='$id_classe' GROUP BY login;";
1401
		$res_eff_total_classe=mysql_query($sql);
1402
		$eff_total_classe=mysql_num_rows($res_eff_total_classe);
1403

    
1404

    
1405
		// Boucle sur les p?riodes
1406
		for($loop_periode_num=0;$loop_periode_num<count($tab_periode_num);$loop_periode_num++) {
1407

    
1408
			//$periode_num=1;
1409
			$periode_num=$tab_periode_num[$loop_periode_num];
1410

    
1411
			// Est-ce bien un entier?
1412
			if((strlen(my_ereg_replace("[0-9]","",$periode_num)))||($periode_num=="")) {
1413
				echo "<p>Identifiant de p?riode erron?: <span style='color:red'>".$periode_num."</span></p>\n";
1414
				require("../lib/footer.inc.php");
1415
				die();
1416
			}
1417

    
1418
			//==============================
1419
			if($mode_bulletin=="html") {
1420
				$motif="Temoin_periode";
1421
				decompte_debug($motif,"$motif classe $loop_classe p?riode $periode_num");
1422
				flush();
1423
				echo "<script type='text/javascript'>
1424
	document.getElementById('td_periode').innerHTML='".$periode_num."';
1425
</script>\n";
1426
			}
1427
			//==============================
1428

    
1429
			//============================
1430
			// On vide les variables de la boucle pr?c?dente avant le calcul dans calcul_moy_gen.inc.php
1431
			unset($moy_gen_eleve);
1432
			unset($moy_gen_classe);
1433
			unset($moy_generale_classe);
1434
			unset($moy_max_classe);
1435
			unset($moy_min_classe);
1436

    
1437
			unset($moy_cat_classe);
1438
			unset($moy_cat_eleve);
1439

    
1440
			unset($quartile1_classe_gen);
1441
			unset($quartile2_classe_gen);
1442
			unset($quartile3_classe_gen);
1443
			unset($quartile4_classe_gen);
1444
			unset($quartile5_classe_gen);
1445
			unset($quartile6_classe_gen);
1446
			unset($place_eleve_classe);
1447

    
1448
			unset($current_eleve_login);
1449
			unset($current_group);
1450
			unset($current_eleve_note);
1451
			unset($current_eleve_statut);
1452
			unset($current_coef);
1453
			unset($categories);
1454
			unset($current_classe_matiere_moyenne);
1455

    
1456
			unset($current_coef_eleve);
1457
			unset($moy_min_classe_grp);
1458
			unset($moy_max_classe_grp);
1459
			unset($current_eleve_rang);
1460

    
1461
			unset($current_group_effectif_avec_note);
1462

    
1463
			unset($current_eleve_app);
1464
			//============================
1465

    
1466

    
1467
			// Tableau destin? ? stocker toutes les infos
1468
			$tab_bulletin[$id_classe][$periode_num]=array();
1469
			if(!isset($intercaler_releve_notes)) {
1470
				// On initialise un tableau qui va rester vide
1471
				$tab_releve[$id_classe][$periode_num]=array();
1472
			}
1473

    
1474

    
1475
			$tab_bulletin[$id_classe][$periode_num]['affiche_adresse']=$affiche_adresse;
1476
			//echo "\$tab_bulletin[$id_classe][$periode_num]['affiche_adresse']=".$tab_bulletin[$id_classe][$periode_num]['affiche_adresse']."<br />";
1477

    
1478
			// Informations sur la p?riode
1479
			$sql="SELECT * FROM periodes WHERE id_classe='$id_classe' AND num_periode='$periode_num';";
1480
			$res_per=mysql_query($sql);
1481
			$lig_per=mysql_fetch_object($res_per);
1482
			$tab_bulletin[$id_classe][$periode_num]['num_periode']=$lig_per->num_periode;
1483
			//$tab_bulletin[$id_classe][$periode_num]['nom_periode']=$lig_per->nom_periode;
1484
			$tab_bulletin[$id_classe][$periode_num]['nom_periode']=my_ereg_replace("&#039;","'",$lig_per->nom_periode);
1485
			$tab_bulletin[$id_classe][$periode_num]['verouiller']=$lig_per->verouiller;
1486

    
1487

    
1488
			// Liste des ?l?ves ? ?diter/afficher/imprimer (s?lection):
1489
			// tab_ele_".$i."_".$j.
1490
			//$tab_bulletin[$id_classe][$periode_num]['selection_eleves']=array();
1491
			$tab_selection_eleves=isset($_POST['tab_selection_ele_'.$loop_classe.'_'.$loop_periode_num]) ? $_POST['tab_selection_ele_'.$loop_classe.'_'.$loop_periode_num] : array();
1492
			$tab_bulletin[$id_classe][$periode_num]['selection_eleves']=$tab_selection_eleves;
1493

    
1494

    
1495
			$affiche_rang = sql_query1("SELECT display_rang FROM classes WHERE id='".$id_classe."'");
1496
			if($mode_bulletin=="pdf") {
1497
				if($tab_modele_pdf["active_rang"][$id_classe]==1) {
1498
					$affiche_rang="y";
1499
				}
1500
				else {
1501
					$affiche_rang="n";
1502
				}
1503
			}
1504

    
1505

    
1506
			$affiche_nbdev=sql_query1("SELECT display_nbdev FROM classes WHERE id='".$id_classe."'");
1507
			if($mode_bulletin=="pdf") {
1508
				if(($tab_modele_pdf["active_nombre_note"][$id_classe]==1)||($tab_modele_pdf["active_nombre_note_case"][$id_classe]==1)) {
1509
					$affiche_nbdev="y";
1510
				}
1511
				else {
1512
					$affiche_nbdev="n";
1513
				}
1514
			}
1515

    
1516

    
1517

    
1518
			// On teste si on affiche les graphiques
1519
			if (getSettingValue("bull_affiche_graphiques") == 'yes'){$affiche_graph = 'y';}else{$affiche_graph = 'n';}
1520

    
1521
			//========================================
1522
			// Afficher la moyenne g?n?rale? (?galement conditionn? par la pr?sence d'un coef non nul au moins)
1523
			$display_moy_gen = sql_query1("SELECT display_moy_gen FROM classes WHERE id='".$id_classe."'");
1524
			//========================================
1525

    
1526

    
1527
			//========================================
1528
			// On teste la pr?sence d'au moins un coeff pour afficher la colonne des coef
1529
			$test_coef = mysql_num_rows(mysql_query("SELECT coef FROM j_groupes_classes WHERE (id_classe='".$id_classe."' and coef > 0)"));
1530
			//echo "\$test_coef=$test_coef<br />\n";
1531
			//Afficher les coefficients des mati?res (uniquement si au moins un coef diff?rent de 0)
1532
			if($test_coef>0){
1533
				$affiche_coef = sql_query1("SELECT display_coef FROM classes WHERE id='".$id_classe."'");
1534
			}
1535
			else{
1536
				$affiche_coef = "n";
1537
			}
1538
			//========================================
1539

    
1540

    
1541
			//========================================
1542
			$affiche_categories = sql_query1("SELECT display_mat_cat FROM classes WHERE id='".$id_classe."'");
1543
			if ($affiche_categories == "y") {
1544
				$affiche_categories = true;
1545
			} else {
1546
				$affiche_categories = false;
1547
			}
1548

    
1549
			if($mode_bulletin=="pdf") {
1550
				if(($tab_modele_pdf["active_entete_regroupement"][$id_classe]==1)||($tab_modele_pdf["active_regroupement_cote"][$id_classe]==1)) {
1551
					$affiche_categories = true;
1552
				}
1553
				else {
1554
					$affiche_categories = false;
1555
				}
1556
			}
1557

    
1558
			// V?rifier si il n'y a pas de b?tise sur les cat?gories.
1559
			if($affiche_categories) {
1560
				$sql="SELECT DISTINCT jmcc.priority ".
1561
				"FROM j_groupes_classes jgc, j_groupes_matieres jgm, j_matieres_categories_classes jmcc, matieres m " .
1562
				"WHERE ( " .
1563
				"jgc.categorie_id = jmcc.categorie_id AND " .
1564
				"jgc.id_classe=jmcc.classe_id AND " .
1565
				"jgc.id_classe='".$id_classe."' AND " .
1566
				"jgm.id_groupe=jgc.id_groupe AND " .
1567
				"m.matiere = jgm.id_matiere" .
1568
				");";
1569
				$res_nb_cat_priorites=mysql_query($sql);
1570
				$nb_cat_priorites=mysql_num_rows($res_nb_cat_priorites);
1571
				//echo "\$nb_cat_priorites=$nb_cat_priorites<br />\n";
1572

    
1573
				$sql="SELECT DISTINCT jgc.categorie_id ".
1574
				"FROM j_groupes_classes jgc, j_groupes_matieres jgm, j_matieres_categories_classes jmcc, matieres m " .
1575
				"WHERE ( " .
1576
				"jgc.categorie_id = jmcc.categorie_id AND " .
1577
				"jgc.id_classe=jmcc.classe_id AND " .
1578
				"jgc.id_classe='".$id_classe."' AND " .
1579
				"jgm.id_groupe=jgc.id_groupe AND " .
1580
				"m.matiere = jgm.id_matiere" .
1581
				");";
1582
				$res_nb_cat=mysql_query($sql);
1583
				$nb_cat=mysql_num_rows($res_nb_cat);
1584
				//echo "\$nb_cat=$nb_cat<br />\n";
1585

    
1586
				if($nb_cat_priorites!=$nb_cat) {
1587
					// Tester si les cat?gories de mati?res ont bien des priorit?s diff?rentes au niveau Gestion des mati?res
1588
					// Si ce n'est pas le cas, produire une alerte et sortir
1589

    
1590
					$sql="SELECT DISTINCT mc.priority ".
1591
					"FROM j_groupes_classes jgc, j_groupes_matieres jgm, j_matieres_categories_classes jmcc, matieres m, matieres_categories mc " .
1592
					"WHERE ( " .
1593
					"mc.id=jmcc.categorie_id AND ".
1594
					"jgc.categorie_id = jmcc.categorie_id AND " .
1595
					"jgc.id_classe=jmcc.classe_id AND " .
1596
					"jgc.id_classe='".$id_classe."' AND " .
1597
					"jgm.id_groupe=jgc.id_groupe AND " .
1598
					"m.matiere = jgm.id_matiere" .
1599
					");";
1600
					$res_nb_cat_priorites_glob=mysql_query($sql);
1601
					$nb_cat_priorites_glob=mysql_num_rows($res_nb_cat_priorites_glob);
1602
					//echo "\$nb_cat_priorites=$nb_cat_priorites<br />\n";
1603

    
1604
					if($nb_cat_priorites_glob!=$nb_cat) {
1605
						if($mode_bulletin!="pdf") {
1606
							echo "<h1 align='center'>Erreur</h1>";
1607
							echo "<p>Vous avez demand? ? afficher les cat?gories de mati?res, mais les priorit?s d'affichage des cat?gories ne sont pas correctement d?finies, ni au niveau global dans Gestion des mati?res, ni au niveau particulier dans Gestion des classes/&lt;Classe&gt; Param?tres<br />Il ne faut pas que deux cat?gories aient la m?me priorit? sans quoi il peut survenir des anomalies d'ordre des mati?res sur le bulletin.</p>\n";
1608
							require("../lib/footer.inc.php");
1609
							die();
1610
						}
1611
						else {
1612

    
1613
							$pdf=new bul_PDF('p', 'mm', 'A4');
1614
							$pdf->SetCreator($gepiSchoolName);
1615
							$pdf->SetAuthor($gepiSchoolName);
1616
							$pdf->SetKeywords('');
1617
							$pdf->SetSubject('Bulletin');
1618
							$pdf->SetTitle('Bulletin');
1619
							$pdf->SetDisplayMode('fullwidth', 'single');
1620
							$pdf->SetCompression(TRUE);
1621
							$pdf->SetAutoPageBreak(TRUE, 5);
1622

    
1623
							$pdf->AddPage(); //ajout d'une page au document
1624
							$pdf->SetFont('Arial');
1625
							$pdf->SetXY(20,20);
1626
							$pdf->SetFontSize(14);
1627
							$pdf->Cell(90,7, "ERREUR",0,2,'');
1628

    
1629
							$pdf->SetXY(20,40);
1630
							$pdf->SetFontSize(10);
1631
							$pdf->Cell(150,7, "Vous avez demand? ? afficher les cat?gories de mati?res,",0,2,'');
1632
							$pdf->SetXY(20,45);
1633
							$pdf->Cell(150,7, "mais les priorit?s d'affichage des cat?gories ne sont pas correctement d?finies,",0,2,'');
1634
							$pdf->SetXY(20,50);
1635
							$pdf->Cell(150,7, "ni au niveau global dans Gestion des mati?res,",0,2,'');
1636
							$pdf->SetXY(20,55);
1637
							$pdf->Cell(150,7, "ni au niveau particulier dans Gestion des classes/<Classe> Enseignements",0,2,'');
1638
							$pdf->SetXY(20,65);
1639
							$pdf->Cell(150,7, "Il ne faut pas que deux cat?gories aient la m?me priorit?",0,2,'');
1640
							$pdf->SetXY(20,70);
1641
							$pdf->Cell(150,7, "sans quoi il peut survenir des anomalies d'ordre des mati?res sur le bulletin.",0,2,'');
1642

    
1643
							$nom_bulletin = 'Erreur_bulletin.pdf';
1644
							$pdf->Output($nom_bulletin,'I');
1645
							die();
1646
						}
1647
					}
1648
				}
1649
			}
1650

    
1651
			//========================================
1652

    
1653

    
1654
			if ($affiche_rang == 'y'){
1655
				// On teste la pr?sence d'au moins un coeff pour afficher la colonne des coef
1656
				$test_coef = mysql_num_rows(mysql_query("SELECT coef FROM j_groupes_classes WHERE (id_classe='".$id_classe."' and coef > 0)"));
1657
				include("../lib/calcul_rang.inc.php");
1658
			}
1659

    
1660

    
1661
			$tab_bulletin[$id_classe][$periode_num]['test_coef']=$test_coef;
1662
			if($coefficients_a_1=="oui") {
1663
				// On force la valeur de test_coef si on impose des coef 1 pour le calcul des moyennes g?n?rales dans /lib/calcul_moy_gen.inc.php
1664
				$tab_bulletin[$id_classe][$periode_num]['test_coef']=1;
1665
			}
1666

    
1667

    
1668
			// Informations sur la classe
1669
			$sql="SELECT * FROM classes WHERE id='".$id_classe."';";
1670
			$res_classe=mysql_query($sql);
1671
			$lig_classe=mysql_fetch_object($res_classe);
1672

    
1673
			$tab_bulletin[$id_classe][$periode_num]['id_classe']=$lig_classe->id;
1674
			$tab_bulletin[$id_classe][$periode_num]['classe']=$lig_classe->classe;
1675
			$tab_bulletin[$id_classe][$periode_num]['classe_nom_complet']=$lig_classe->nom_complet;
1676
			$tab_bulletin[$id_classe][$periode_num]['formule']=$lig_classe->formule;
1677
			$tab_bulletin[$id_classe][$periode_num]['suivi_par']=$lig_classe->suivi_par;
1678

    
1679
			$classe=$lig_classe->classe;
1680
			$classe_nom_complet=$lig_classe->nom_complet;
1681

    
1682

    
1683

    
1684
			// R?cup?rer l'effectif de la classe,...
1685
			$sql="SELECT 1=1 FROM j_eleves_classes WHERE id_classe='$id_classe' AND periode='$periode_num';";
1686
			$res_eff_classe=mysql_query($sql);
1687
			//$lig_eff_classe=mysql_fetch_object($res_eff_classe);
1688
			$eff_classe=mysql_num_rows($res_eff_classe);
1689
			//echo "<p>Effectif de la classe: $eff_classe</p>\n";
1690

    
1691
			if($eff_classe==0) {
1692
				echo "<p>La classe '$classe' est vide sur la p?riode '$periode_num'.<br />Il n'est pas possible de poursuivre.</p>\n";
1693
				require("../lib/footer.inc.php");
1694
				die();
1695
			}
1696

    
1697
			//==============================
1698
			if($mode_bulletin=="html") {
1699
				$motif="Temoin_calcul_moy_gen".$id_classe."_".$periode_num;
1700
				decompte_debug($motif,"$motif avant");
1701
				flush();
1702
			}
1703
			//==============================
1704

    
1705
			//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1706
			// 20100615
1707
			//$moyennes_periodes_precedentes="y";
1708
			if((isset($moyennes_periodes_precedentes))&&($periode_num>1)&&(!isset($tab_bulletin[$id_classe][$periode_num]['note_prec']))) {
1709
				$reserve_periode_num=$periode_num;
1710
				for($periode_num=1;$periode_num<$reserve_periode_num;$periode_num++) {
1711
					//echo "\$periode_num=$periode_num<br />";
1712
					include("../lib/calcul_moy_gen.inc.php");
1713

    
1714
					$tab_bulletin[$id_classe][$reserve_periode_num]['login_prec'][$periode_num]=$current_eleve_login;
1715
					$tab_bulletin[$id_classe][$reserve_periode_num]['group_prec'][$periode_num]=$current_group;
1716
					$tab_bulletin[$id_classe][$reserve_periode_num]['note_prec'][$periode_num]=$current_eleve_note;
1717
					$tab_bulletin[$id_classe][$reserve_periode_num]['statut_prec'][$periode_num]=$current_eleve_statut;
1718
					$tab_bulletin[$id_classe][$reserve_periode_num]['moy_gen_eleve_prec'][$periode_num]=$moy_gen_eleve;
1719

    
1720
					//============================
1721
					// On vide les variables de la boucle avant le calcul dans calcul_moy_gen.inc.php hors du dispositif p?riodes pr?c?dentes
1722
					unset($moy_gen_eleve);
1723
					unset($moy_gen_classe);
1724
					unset($moy_generale_classe);
1725
					unset($moy_max_classe);
1726
					unset($moy_min_classe);
1727
		
1728
					unset($moy_cat_classe);
1729
					unset($moy_cat_eleve);
1730
		
1731
					unset($quartile1_classe_gen);
1732
					unset($quartile2_classe_gen);
1733
					unset($quartile3_classe_gen);
1734
					unset($quartile4_classe_gen);
1735
					unset($quartile5_classe_gen);
1736
					unset($quartile6_classe_gen);
1737
					unset($place_eleve_classe);
1738
		
1739
					unset($current_eleve_login);
1740
					unset($current_group);
1741
					unset($current_eleve_note);
1742
					unset($current_eleve_statut);
1743
					unset($current_coef);
1744
					unset($categories);
1745
					unset($current_classe_matiere_moyenne);
1746
		
1747
					unset($current_coef_eleve);
1748
					unset($moy_min_classe_grp);
1749
					unset($moy_max_classe_grp);
1750
					unset($current_eleve_rang);
1751
		
1752
					unset($current_group_effectif_avec_note);
1753
		
1754
					unset($current_eleve_app);
1755
					//============================
1756
				}
1757
				$periode_num=$reserve_periode_num;
1758
			}
1759
			//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1760

    
1761

    
1762
			//========================================
1763
			//if($eff_classe>0) {
1764
				include("../lib/calcul_moy_gen.inc.php");
1765
			//}
1766
			// On r?cup?re la plus grande partie des infos via calcul_moy_gen.inc.php
1767
			// Voir en fin du fichier calcul_moy_gen.inc.php la liste des infos r?cup?r?es
1768
			//========================================
1769
			//==============================
1770
			if($mode_bulletin=="html") {
1771
				$motif="Temoin_calcul_moy_gen".$id_classe."_".$periode_num;
1772
				decompte_debug($motif,"$motif apr?s");
1773
				flush();
1774
			}
1775
			//==============================
1776

    
1777
			//echo "\$affiche_categories=$affiche_categories<br />";
1778
			// $affiche_categories=1
1779

    
1780
			/*
1781
			$classe=get_class_from_id($id_classe);
1782

    
1783
			$tab_bulletin[$id_classe][$periode_num]['classe']=$classe;
1784
			$tab_bulletin[$id_classe][$periode_num]['id_classe']=$id_classe;
1785

    
1786
			// Informations sur la p?riode
1787
			$sql="SELECT nom_periode FROM periodes WHERE id_classe='$id_classe' AND num_periode='$periode_num';";
1788
			$res_per=mysql_query($sql);
1789
			$lig_per=mysql_fetch_object($res_per);
1790

    
1791
			$tab_bulletin[$id_classe][$periode_num]['nom_periode']=$lig_per->nom_periode;
1792
			*/
1793

    
1794
			/*
1795
			// R?cup?rer l'effectif de la classe,...
1796
			$sql="SELECT 1=1 FROM j_eleves_classes WHERE id_classe='$id_classe' AND periode='$periode_num';";
1797
			$res_eff_classe=mysql_query($sql);
1798
			//$lig_eff_classe=mysql_fetch_object($res_eff_classe);
1799
			$eff_classe=mysql_num_rows($res_eff_classe);
1800
			//echo "<p>Effectif de la classe: $eff_classe</p>\n";
1801
			*/
1802

    
1803
			// Variables simples
1804
			$tab_bulletin[$id_classe][$periode_num]['eff_classe']=$eff_classe;
1805

    
1806
			// Effectif total sur l'ann?e pour pouvoir parcourir tout $tab_rel pour intercaler bulletin/relev?
1807
			$tab_bulletin[$id_classe][$periode_num]['eff_total_classe']=$eff_total_classe;
1808

    
1809
			// Variables simples
1810
			$tab_bulletin[$id_classe][$periode_num]['affiche_categories']=$affiche_categories;
1811
			$tab_bulletin[$id_classe][$periode_num]['affiche_coef']=$affiche_coef;
1812
			$tab_bulletin[$id_classe][$periode_num]['affiche_rang']=$affiche_rang;
1813
			$tab_bulletin[$id_classe][$periode_num]['affiche_graph']=$affiche_graph;
1814
			$tab_bulletin[$id_classe][$periode_num]['affiche_nbdev']=$affiche_nbdev;
1815

    
1816
			$tab_bulletin[$id_classe][$periode_num]['display_moy_gen']=$display_moy_gen;
1817

    
1818
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1819
			// $current_group est un tableau obtenu par get_group()
1820
			$tab_bulletin[$id_classe][$periode_num]['groupe']=$current_group;
1821

    
1822
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1823
			// Tableaux d'indices [$j][$i] (groupe, ?l?ve)
1824
			// A V?RIFIER: Tableaux d'indices [$i][$j] (?l?ve, groupe)
1825
			$tab_bulletin[$id_classe][$periode_num]['note']=$current_eleve_note;
1826
			$tab_bulletin[$id_classe][$periode_num]['statut']=$current_eleve_statut;
1827
			/*
1828
			for($j=0;$j<count($current_eleve_statut);$j++) {
1829
				for($i=0;$i<count($current_eleve_statut[$j]);$i++) {
1830
					echo "\$current_eleve_statut[$j][$i]=".$current_eleve_statut[$j][$i]."<br />";
1831
				}
1832
			}
1833
			*/
1834
			if(isset($current_eleve_rang)) {$tab_bulletin[$id_classe][$periode_num]['rang']=$current_eleve_rang;}
1835
			$tab_bulletin[$id_classe][$periode_num]['coef_eleve']=$current_coef_eleve;
1836

    
1837
			// Tableaux d'indice $i (correspondant ? l'?l?ve)
1838
			$tab_bulletin[$id_classe][$periode_num]['tot_points_eleve']=$tot_points_eleve;
1839
			$tab_bulletin[$id_classe][$periode_num]['total_coef_eleve']=$total_coef_eleve;
1840
			$tab_bulletin[$id_classe][$periode_num]['tot_points_eleve1']=$tot_points_eleve1;
1841
			$tab_bulletin[$id_classe][$periode_num]['total_coef_eleve1']=$total_coef_eleve1;
1842

    
1843
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1844
			// Tableau d'indice [$i] ?l?ve.. mais cette moyenne g?n?rale ne prend en compte que les options suivies par l'?l?ve si bien que les moyennes g?n?rales de classe diff?rent selon les ?l?ves
1845
			$tab_bulletin[$id_classe][$periode_num]['moy_gen_classe']=$moy_gen_classe;
1846
			$tab_bulletin[$id_classe][$periode_num]['moy_gen_eleve']=$moy_gen_eleve;
1847
			//===============
1848
			// Ajout J.Etheve
1849
			$tab_bulletin[$id_classe][$periode_num]['moy_gen_classe_noncoef']=$moy_gen_classe1;
1850
			$tab_bulletin[$id_classe][$periode_num]['moy_gen_eleve_noncoef']=$moy_gen_eleve1;
1851
			//===============
1852

    
1853
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1854
			// Variables simples
1855
			$tab_bulletin[$id_classe][$periode_num]['moy_min_classe']=$moy_min_classe;
1856
			$tab_bulletin[$id_classe][$periode_num]['moy_generale_classe']=$moy_generale_classe;
1857
			$tab_bulletin[$id_classe][$periode_num]['moy_max_classe']=$moy_max_classe;
1858
			//===============
1859
			// Ajout J.Etheve
1860
			$tab_bulletin[$id_classe][$periode_num]['moy_min_classe_noncoef']=$moy_min_classe1;
1861
			$tab_bulletin[$id_classe][$periode_num]['moy_generale_classe_noncoef']=$moy_generale_classe1;
1862
			$tab_bulletin[$id_classe][$periode_num]['moy_max_classe_noncoef']=$moy_max_classe1;
1863
			//===============
1864
			$tab_bulletin[$id_classe][$periode_num]['moy_min_classe_grp']=$moy_min_classe_grp;
1865
			$tab_bulletin[$id_classe][$periode_num]['moy_classe_grp']=$current_classe_matiere_moyenne;
1866
			/*
1867
			for($kl=0;$kl<count($current_classe_matiere_moyenne);$kl++) {
1868
				echo "\$current_group[$kl]['name']=".$current_group[$kl]['name']." ";
1869
				echo "\$current_classe_matiere_moyenne[$kl]='".$current_classe_matiere_moyenne[$kl]."'<br />";
1870
			}
1871
			*/
1872
			$tab_bulletin[$id_classe][$periode_num]['moy_max_classe_grp']=$moy_max_classe_grp;
1873

    
1874

    
1875
			if($mode_bulletin=="pdf") {
1876
				$tab_bulletin[$id_classe][$periode_num]['affiche_moyenne_general_coef_1']=$tab_modele_pdf["affiche_moyenne_general_coef_1"][$tab_id_classe[$loop_classe]];
1877
				if(($temoin_tous_coef_a_1=='y')||($coefficients_a_1=="oui")) {
1878
					// Si tous les coeff sont ? 1, on n'imprime pas deux lignes de moyenne g?n?rale (moy.gen.coefficient?e d'apr?s Gestion des classes/<Classe> Enseignements et moy.gen avec coef ? 1) m?me si la case est coch?e dans le mod?le PDF.
1879
					// Si on force les coef ? 1, on n'affiche pas non plus deux lignes de moyenne g?n?rale
1880
					$tab_bulletin[$id_classe][$periode_num]['affiche_moyenne_general_coef_1']=0;
1881
				}
1882
			}
1883
			else {
1884
				// Pour l'instant en mode HTML, on ne propose pas les deux moyennes
1885
				// Il faut d?cider o? on fait le param?trage.
1886
				// Les param?tres HTML sont g?n?raux ? toutes les classes sauf ceux d?cid?s directement dans bull_index.php alors que les param?tres PDF sont essentiellement li?s aux mod?les.
1887
				$tab_bulletin[$id_classe][$periode_num]['affiche_moyenne_general_coef_1']=0;
1888
			}
1889

    
1890
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1891
			// Quartiles au niveau moyenne g?n?rale:
1892
			// $place_eleve_classe est un tableau d'indice [$i] le num?ro de l'?l?ve
1893
			if(isset($place_eleve_classe)) {$tab_bulletin[$id_classe][$periode_num]['place_eleve_classe']=$place_eleve_classe;}
1894
			// Variables simples
1895
			$tab_bulletin[$id_classe][$periode_num]['quartile1_classe_gen']=$quartile1_classe_gen;
1896
			$tab_bulletin[$id_classe][$periode_num]['quartile2_classe_gen']=$quartile2_classe_gen;
1897
			$tab_bulletin[$id_classe][$periode_num]['quartile3_classe_gen']=$quartile3_classe_gen;
1898
			$tab_bulletin[$id_classe][$periode_num]['quartile4_classe_gen']=$quartile4_classe_gen;
1899
			$tab_bulletin[$id_classe][$periode_num]['quartile5_classe_gen']=$quartile5_classe_gen;
1900
			$tab_bulletin[$id_classe][$periode_num]['quartile6_classe_gen']=$quartile6_classe_gen;
1901

    
1902
			// Initialisation des quartiles par groupe:
1903
			for($j=0;$j<count($current_group);$j++) {
1904
				$tab_bulletin[$id_classe][$periode_num]['quartile1_grp'][$j]=0;
1905
				$tab_bulletin[$id_classe][$periode_num]['quartile2_grp'][$j]=0;
1906
				$tab_bulletin[$id_classe][$periode_num]['quartile3_grp'][$j]=0;
1907
				$tab_bulletin[$id_classe][$periode_num]['quartile4_grp'][$j]=0;
1908
				$tab_bulletin[$id_classe][$periode_num]['quartile5_grp'][$j]=0;
1909
				$tab_bulletin[$id_classe][$periode_num]['quartile6_grp'][$j]=0;
1910
			}
1911

    
1912
			$tab_bulletin[$id_classe][$periode_num]['place_eleve']=$place_eleve_grp;
1913
			$tab_bulletin[$id_classe][$periode_num]['quartile1_grp']=$quartile1_grp;
1914
			$tab_bulletin[$id_classe][$periode_num]['quartile2_grp']=$quartile2_grp;
1915
			$tab_bulletin[$id_classe][$periode_num]['quartile3_grp']=$quartile3_grp;
1916
			$tab_bulletin[$id_classe][$periode_num]['quartile4_grp']=$quartile4_grp;
1917
			$tab_bulletin[$id_classe][$periode_num]['quartile5_grp']=$quartile5_grp;
1918
			$tab_bulletin[$id_classe][$periode_num]['quartile6_grp']=$quartile6_grp;
1919
			//for($kl=0;$kl<count($quartile1_grp);$kl++) {echo "\$quartile1_grp[$kl]=".$quartile1_grp[$kl]."<br />";}
1920

    
1921
			// Variables r?cup?r?es de calcul_moy_gen.inc.php
1922
			// Tableaux d'indices [$i][$cat] (o? $i: eleve et $cat: $categorie_id)
1923
			$tab_bulletin[$id_classe][$periode_num]['moy_cat_classe']=$moy_cat_classe;
1924
			$tab_bulletin[$id_classe][$periode_num]['moy_cat_min']=$moy_cat_min;
1925
			$tab_bulletin[$id_classe][$periode_num]['moy_cat_max']=$moy_cat_max;
1926

    
1927
			$tab_bulletin[$id_classe][$periode_num]['moy_cat_eleve']=$moy_cat_eleve;
1928

    
1929
			// matieres_categories(id,nom_court,nom_complet,priority)
1930
			// j_matieres_categories_classes(categorie_id,classe_id,priority,affiche_moyenne)
1931
			// matieres(matiere,nom_complet,priority,categorie_id,matiere_aid,matiere_atelier)
1932
			for($j=0;$j<count($current_group);$j++) {
1933
				//echo "\$current_group[$j]['id']=".$current_group[$j]['id']."<br />";
1934
				//echo "\$current_group[$j]['name']=".$current_group[$j]['name']."<br />";
1935
				//echo "\$current_group[$j]['matiere']['matiere']=".$current_group[$j]['matiere']['matiere']."<br />";
1936
				if(isset($current_group[$j]['matiere']['matiere'])) {
1937
                    /*
1938
					$sql="SELECT mc.id,
1939
								mc.nom_court,
1940
								mc.nom_complet,
1941
								jmcc.priority,
1942
								jmcc.affiche_moyenne
1943
							FROM j_matieres_categories_classes jmcc,
1944
								matieres_categories mc,
1945
								matieres m
1946
							WHERE jmcc.classe_id='$id_classe' AND
1947
								jmcc.categorie_id=m.categorie_id AND
1948
								jmcc.categorie_id=mc.id AND
1949
								m.matiere='".$current_group[$j]['matiere']['matiere']."'
1950
							ORDER BY mc.priority, jmcc.priority, jmcc.categorie_id;";
1951
                    */
1952
							//ORDER BY jmcc.categorie_id, jmcc.priority, mc.priority;";
1953
					$sql="SELECT mc.id,
1954
								mc.nom_court,
1955
								mc.nom_complet,
1956
								jmcc.priority,
1957
								jmcc.affiche_moyenne
1958
							FROM j_matieres_categories_classes jmcc,
1959
								matieres_categories mc,
1960
                                j_groupes_classes jgc
1961
							WHERE jmcc.classe_id='$id_classe' AND
1962
                                  jgc.id_classe=jmcc.classe_id AND
1963
                                  jgc.categorie_id=jmcc.categorie_id AND
1964
								jmcc.categorie_id=mc.id AND
1965
								jgc.id_groupe='".$current_group[$j]['id']."'
1966
							ORDER BY mc.priority, jmcc.priority, jmcc.categorie_id;";
1967
                    //echo "\$current_group[$j]['matiere']['matiere']=".$current_group[$j]['matiere']['matiere']."<br />";
1968
                    //echo "$sql<br />";
1969
					$res_cat=mysql_query($sql);
1970

    
1971
					if(mysql_num_rows($res_cat)>0) {
1972
						$lig_cat=mysql_fetch_object($res_cat);
1973

    
1974
						$tab_bulletin[$id_classe][$periode_num]['cat_id'][$j]=$lig_cat->id;
1975
						$tab_bulletin[$id_classe][$periode_num]['nom_cat_court'][$j]=$lig_cat->nom_court;
1976
						$tab_bulletin[$id_classe][$periode_num]['nom_cat_complet'][$j]=$lig_cat->nom_complet;
1977
						$tab_bulletin[$id_classe][$periode_num]['priority'][$j]=$lig_cat->priority;
1978
						$tab_bulletin[$id_classe][$periode_num]['affiche_moyenne'][$j]=$lig_cat->affiche_moyenne;
1979
					}
1980
				}
1981
			}
1982

    
1983

    
1984

    
1985
			if ($affiche_rang == 'y'){
1986
				for($j=0;$j<count($current_group);$j++) {
1987
					/*
1988
					$sql="SELECT 1=1
1989
							FROM j_eleves_groupe jeg
1990
							WHERE jeg.id_groupe='".$current_group[$j]['id']."' AND
1991
								jeg.periode='$periode_num';";
1992
					$res_eff_grp=mysql_query($sql);
1993

    
1994
					$tab_bulletin[$id_classe][$periode_num]['groupe'][$j]['effectif']=mysql_num_rows($res_cat);
1995
					*/
1996
					// On pourrait utiliser count($tab_bulletin[$id_classe][$periode_num]['groupe'][$j]["eleves"][$key]["list"])
1997
					// avec $key=$periode_num
1998
					$tab_bulletin[$id_classe][$periode_num]['groupe'][$j]['effectif']=count($tab_bulletin[$id_classe][$periode_num]['groupe'][$j]["eleves"][$periode_num]["list"]);
1999

    
2000
					$tab_bulletin[$id_classe][$periode_num]['groupe'][$j]['effectif_avec_note']=$current_group_effectif_avec_note[$j];
2001
				}
2002
			}
2003

    
2004

    
2005
			// L'ordre des mati?res est obtenu via calcul_moy_gen.inc.php dans lequel le $affiche_categorie fixe l'ordre par cat?gories ou non.
2006

    
2007

    
2008

    
2009
			// Boucle ?l?ves de la classe $id_classe pour la p?riode $periode_num
2010
			for($i=0;$i<count($current_eleve_login);$i++) {
2011
				// R?initialisation pour ne pas r?cup?rer des infos de l'?l?ve pr?c?dent
2012
				unset($tab_ele);
2013
				$tab_ele=array();
2014

    
2015
				if (in_array($current_eleve_login[$i],$tab_bulletin[$id_classe][$periode_num]['selection_eleves'])) {
2016

    
2017
					// ++++++++++++++++++++++++++++++++++++++
2018
					// ++++++++++++++++++++++++++++++++++++++
2019
					// AJOUTER UN TEST: L'?l?ve fait-il bien partie de la classe?
2020
					//                  Inutile: la liste $current_eleve_login est obtenue de calcul_moy_gen.inc.php
2021
					//                  Pas d'injection/intervention possible.
2022
					//                  Le test sur l'acc?s ? la classe plus haut (*) doit suffire.
2023
					//                  On pourrait injecter un login dans la s?lection d'?l?ve, mais pas dans $current_eleve_login
2024
					//                  Et on test seulement si $current_eleve_login[$i] est bien dans la s?lection (pas le contraire)
2025
					//                  (*) dans cette section tout de m?me.
2026
					// ++++++++++++++++++++++++++++++++++++++
2027
					// ++++++++++++++++++++++++++++++++++++++
2028

    
2029
					//==============================
2030

    
2031
					if($mode_bulletin=="html") {
2032
						$motif="Temoin_eleve".$id_classe."_".$periode_num;
2033
						decompte_debug($motif,"$motif ?l?ve $i: ".$current_eleve_login[$i]);
2034
						flush();
2035
						echo "<script type='text/javascript'>
2036
	document.getElementById('td_ele').innerHTML='".$current_eleve_login[$i]."';
2037
</script>\n";
2038
					}
2039
					//==============================
2040

    
2041
					// R?cup des infos sur l'?l?ve, les responsables, le PP, le CPE,...
2042
					$sql="SELECT * FROM eleves e WHERE e.login='".$current_eleve_login[$i]."';";
2043
					$res_ele=mysql_query($sql);
2044
					$lig_ele=mysql_fetch_object($res_ele);
2045

    
2046
					$tab_ele['login']=$current_eleve_login[$i];
2047
					$tab_ele['nom']=$lig_ele->nom;
2048
					$tab_ele['prenom']=$lig_ele->prenom;
2049
					$tab_ele['sexe']=$lig_ele->sexe;
2050
					$tab_ele['naissance']=formate_date($lig_ele->naissance);
2051
					$tab_ele['lieu_naissance']=get_commune($lig_ele->lieu_naissance,2);
2052
					$tab_ele['elenoet']=$lig_ele->elenoet;
2053
					$tab_ele['ele_id']=$lig_ele->ele_id;
2054
					$tab_ele['no_gep']=$lig_ele->no_gep;
2055

    
2056
					$tab_ele['classe']=$classe;
2057
					$tab_ele['id_classe']=$id_classe;
2058
					$tab_ele['classe_nom_complet']=$classe_nom_complet;
2059

    
2060
					// R?gime et redoublement
2061
					$sql="SELECT * FROM j_eleves_regime WHERE login='".$current_eleve_login[$i]."';";
2062
					$res_ele_reg=mysql_query($sql);
2063
					if(mysql_num_rows($res_ele_reg)>0) {
2064
						$lig_ele_reg=mysql_fetch_object($res_ele_reg);
2065

    
2066
						$tab_ele['regime']=$lig_ele_reg->regime;
2067
						$tab_ele['doublant']=$lig_ele_reg->doublant;
2068
					}
2069

    
2070
					//$sql="SELECT e.* FROM etablissements e, j_eleves_etablissements j WHERE (j.id_eleve ='".$current_eleve_login[$i]."' AND e.id = j.id_etablissement);";
2071
					$sql="SELECT e.* FROM etablissements e, j_eleves_etablissements j WHERE (j.id_eleve ='".$tab_ele['elenoet']."' AND e.id = j.id_etablissement);";
2072
					//echo "$sql<br />";
2073
					$data_etab = mysql_query($sql);
2074
					if(mysql_num_rows($data_etab)>0) {
2075
						$tab_ele['etab_id'] = @mysql_result($data_etab, 0, "id");
2076
						$tab_ele['etab_nom'] = @mysql_result($data_etab, 0, "nom");
2077
						$tab_ele['etab_niveau'] = @mysql_result($data_etab, 0, "niveau");
2078
						$tab_ele['etab_type'] = @mysql_result($data_etab, 0, "type");
2079
						$tab_ele['etab_cp'] = @mysql_result($data_etab, 0, "cp");
2080
						$tab_ele['etab_ville'] = @mysql_result($data_etab, 0, "ville");
2081

    
2082
						if ($tab_ele['etab_niveau']!='') {
2083
							foreach ($type_etablissement as $type_etab => $nom_etablissement) {
2084
								if ($tab_ele['etab_niveau'] == $type_etab) {
2085
									$tab_ele['etab_niveau_nom']=$nom_etablissement;
2086
								}
2087
							}
2088
							if ($tab_ele['etab_cp']==0) {
2089
								$tab_ele['etab_cp']='';
2090
							}
2091

    
2092
							if (($tab_ele['etab_type']=='aucun')||($tab_ele['etab_type']=='')||($tab_ele['etab_niveau']=='')) {
2093
								$tab_ele['etab_type']='';
2094
							}
2095
							else {
2096
								$tab_ele['etab_type']= $type_etablissement2[remplace_accents($tab_ele['etab_type'],'')][remplace_accents($tab_ele['etab_niveau'],'')];
2097
								//echo "\$type_etablissement2[".$tab_ele['etab_type']."][".$tab_ele['etab_niveau']."]=".$type_etablissement2[remplace_accents($tab_ele['etab_type'],'')][remplace_accents($tab_ele['etab_niveau'],'')]."<br />\n";
2098
							}
2099
						}
2100
					}
2101

    
2102
					// R?cup infos CPE
2103
					$sql="SELECT u.* FROM j_eleves_cpe jec, utilisateurs u WHERE e_login='".$current_eleve_login[$i]."' AND jec.cpe_login=u.login;";
2104
					$res_cpe=mysql_query($sql);
2105
					if(mysql_num_rows($res_cpe)>0) {
2106
						$lig_cpe=mysql_fetch_object($res_cpe);
2107
						$tab_ele['cpe']=array();
2108

    
2109
						$tab_ele['cpe']['login']=$lig_cpe->login;
2110
						$tab_ele['cpe']['nom']=$lig_cpe->nom;
2111
						$tab_ele['cpe']['prenom']=$lig_cpe->prenom;
2112
						$tab_ele['cpe']['civilite']=$lig_cpe->civilite;
2113
					}
2114

    
2115
					// R?cup infos Prof Principal (prof_suivi)
2116
					$sql="SELECT u.* FROM j_eleves_professeurs jep, utilisateurs u WHERE jep.login='".$current_eleve_login[$i]."' AND id_classe='$id_classe' AND jep.professeur=u.login;";
2117
					$res_pp=mysql_query($sql);
2118
					//echo "$sql<br />";
2119
					if(mysql_num_rows($res_pp)>0) {
2120
						$tab_ele['pp']=array();
2121

    
2122
						$cpt_pp=0;
2123
						while($lig_pp=mysql_fetch_object($res_pp)) {
2124
							$tab_ele['pp'][$cpt_pp]=array();
2125
							$tab_ele['pp'][$cpt_pp]['login']=$lig_pp->login;
2126
							$tab_ele['pp'][$cpt_pp]['nom']=$lig_pp->nom;
2127
							$tab_ele['pp'][$cpt_pp]['prenom']=$lig_pp->prenom;
2128
							$tab_ele['pp'][$cpt_pp]['civilite']=$lig_pp->civilite;
2129
							$cpt_pp++;
2130
						}
2131
					}
2132

    
2133
					// R?cup infos responsables
2134
					$sql="SELECT rp.*,ra.adr1,ra.adr2,ra.adr3,ra.adr3,ra.adr4,ra.cp,ra.pays,ra.commune,r.resp_legal FROM resp_pers rp,
2135
													resp_adr ra,
2136
													responsables2 r
2137
								WHERE r.ele_id='".$tab_ele['ele_id']."' AND
2138
										r.resp_legal!='0' AND
2139
										r.pers_id=rp.pers_id AND
2140
										rp.adr_id=ra.adr_id
2141
								ORDER BY resp_legal;";
2142
					$res_resp=mysql_query($sql);
2143
					//echo "$sql<br />";
2144
					if(mysql_num_rows($res_resp)>0) {
2145
						$cpt=0;
2146
						while($lig_resp=mysql_fetch_object($res_resp)) {
2147
							$tab_ele['resp'][$cpt]=array();
2148

    
2149
							$tab_ele['resp'][$cpt]['pers_id']=$lig_resp->pers_id;
2150

    
2151
							$tab_ele['resp'][$cpt]['login']=$lig_resp->login;
2152
							$tab_ele['resp'][$cpt]['nom']=$lig_resp->nom;
2153
							$tab_ele['resp'][$cpt]['prenom']=$lig_resp->prenom;
2154
							$tab_ele['resp'][$cpt]['civilite']=$lig_resp->civilite;
2155
							$tab_ele['resp'][$cpt]['tel_pers']=$lig_resp->tel_pers;
2156
							$tab_ele['resp'][$cpt]['tel_port']=$lig_resp->tel_port;
2157
							$tab_ele['resp'][$cpt]['tel_prof']=$lig_resp->tel_prof;
2158

    
2159
							$tab_ele['resp'][$cpt]['adr1']=$lig_resp->adr1;
2160
							$tab_ele['resp'][$cpt]['adr2']=$lig_resp->adr2;
2161
							$tab_ele['resp'][$cpt]['adr3']=$lig_resp->adr3;
2162
							$tab_ele['resp'][$cpt]['adr4']=$lig_resp->adr4;
2163
							$tab_ele['resp'][$cpt]['cp']=$lig_resp->cp;
2164
							$tab_ele['resp'][$cpt]['pays']=$lig_resp->pays;
2165
							$tab_ele['resp'][$cpt]['commune']=$lig_resp->commune;
2166

    
2167
							$tab_ele['resp'][$cpt]['adr_id']=$lig_resp->adr_id;
2168

    
2169
							$tab_ele['resp'][$cpt]['resp_legal']=$lig_resp->resp_legal;
2170

    
2171
							$cpt++;
2172
						}
2173
					}
2174

    
2175
					// V?rification
2176
					if(mysql_num_rows($res_resp)>2) {
2177
						if($mode_bulletin=="html") {
2178
							echo "<div class='alerte_erreur'><b style='color:red;'>Erreur:</b>";
2179
							echo $tab_ele['nom']." ".$tab_ele['prenom']." a plus de deux responsables l?gaux 1 et 2.<br />C'est une anomalie.<br />";
2180
							for ($z=0;$z<count($tab_ele['resp']);$z++) {
2181
								echo $tab_ele['resp'][$z]['nom']." ".$tab_ele['resp'][$z]['prenom']." (<i>responsable l?gal ".$tab_ele['resp'][$z]['resp_legal']."</i>)<br />";
2182
							}
2183
							echo "Seuls les deux premiers apparaitront sur des bulletins.";
2184
							echo "</div>\n";
2185
						}
2186
					}
2187

    
2188

    
2189
					// Rang
2190
					if ($affiche_rang == 'y'){
2191
						$rang = sql_query1("select rang from j_eleves_classes where (
2192
						periode = '".$periode_num."' and
2193
						id_classe = '".$id_classe."' and
2194
						login = '".$current_eleve_login[$i]."' )
2195
						");
2196
						if (($rang == 0)||($rang == -1)) {
2197
							$rang = "-";
2198
						}
2199

    
2200
						// Rang de l'?l?ve dans la classe (par rapport ? la moyenne g?n?rale)
2201
						$tab_bulletin[$id_classe][$periode_num]['rang_classe'][$i]=$rang;
2202
					}
2203

    
2204
					//========================
2205
					// R?cup?rer les infos AID
2206

    
2207
					// Pas d'affichage dans le cas d'un bulletin d'une p?riode "examen blanc"
2208
					if ($bull_affiche_aid == 'y') {
2209
						//==============================
2210
						if($mode_bulletin=="html") {
2211
							$motif="Temoin_eleve".$id_classe."_".$periode_num."_".$i;
2212
							decompte_debug($motif,"$motif ?l?ve $i (".$current_eleve_login[$i].") avant AID");
2213
							flush();
2214
						}
2215
						//==============================
2216

    
2217
						// On attaque maintenant l'affichage des appr?ciations des Activit?s Interdisciplinaires devant appara?tre en t?te des bulletins :
2218
						//------------------------------
2219
						// $z est l'indice de $call_data_aid_b
2220
						$z=0;
2221
						// $zz est l'indice des AID effectivement utiles pour l'?l?ve et la p?riode
2222
						$zz=0;
2223
						while ($z < $nb_aid_b) {
2224
							$display_begin = @mysql_result($call_data_aid_b, $z, "display_begin");
2225
							$display_end = @mysql_result($call_data_aid_b, $z, "display_end");
2226
							$type_note = @mysql_result($call_data_aid_b, $z, "type_note");
2227
							$note_max = @mysql_result($call_data_aid_b, $z, "note_max");
2228
							/*
2229
							echo "\$z=$z<br />";
2230
							echo "\$display_begin=$display_begin<br />";
2231
							echo "\$display_end=$display_end<br />";
2232
							echo "\$type_note=$type_note<br />";
2233
							echo "\$note_max=$note_max<br />";
2234
							*/
2235
							if (($periode_num >= $display_begin) and ($periode_num <= $display_end)) {
2236
								$indice_aid = @mysql_result($call_data_aid_b, $z, "indice_aid");
2237
								//$aid_query = mysql_query("SELECT id_aid FROM j_aid_eleves WHERE (login='".$current_eleve_login[$i]."' and indice_aid='$indice_aid')");
2238
								$sql="SELECT id_aid FROM j_aid_eleves WHERE (login='".$current_eleve_login[$i]."' and indice_aid='$indice_aid');";
2239
								//echo "$sql<br />";
2240
								$aid_query = mysql_query($sql);
2241
								$aid_id = @mysql_result($aid_query, 0, "id_aid");
2242
								if ($aid_id != '') {
2243

    
2244
									$tab_ele['aid_b'][$zz]['display_begin']=$display_begin;
2245
									$tab_ele['aid_b'][$zz]['display_end']=$display_end;
2246

    
2247
									$tab_ele['aid_b'][$zz]['nom']=@mysql_result($call_data_aid_b, $z, "nom");
2248
									$tab_ele['aid_b'][$zz]['nom_complet']=@mysql_result($call_data_aid_b, $z, "nom_complet");
2249
									$tab_ele['aid_b'][$zz]['message']=@mysql_result($call_data_aid_b, $z, "message");
2250

    
2251
									$tab_ele['aid_b'][$zz]['display_nom']=@mysql_result($call_data_aid_b, $z, "display_nom");
2252

    
2253
									//echo "\$tab_ele['aid_b'][$zz]['nom_complet']=".$tab_ele['aid_b'][$zz]['nom_complet']."<br />";
2254
									//echo "\$type_note=".$type_note."<br />";
2255

    
2256
									$aid_nom_query = mysql_query("SELECT nom FROM aid WHERE (id='$aid_id' and indice_aid='$indice_aid');");
2257
									$tab_ele['aid_b'][$zz]['aid_nom']=@mysql_result($aid_nom_query, 0, "nom");
2258

    
2259
									//echo "\$tab_ele['aid_b'][$zz]['aid_nom']=".$tab_ele['aid_b'][$z]['aid_nom']."<br />";
2260

    
2261
									// On regarde maintenant quelle sont les profs responsables de cette AID
2262
									$aid_prof_resp_query = mysql_query("SELECT id_utilisateur FROM j_aid_utilisateurs WHERE (id_aid='$aid_id'  and indice_aid='$indice_aid')");
2263
									$nb_lig = mysql_num_rows($aid_prof_resp_query);
2264
									$n = '0';
2265
									while ($n < $nb_lig) {
2266
										//$aid_prof_resp_login[$n] = mysql_result($aid_prof_resp_query, $n, "id_utilisateur");
2267
										$tab_ele['aid_b'][$zz]['aid_prof_resp_login'][$n]=mysql_result($aid_prof_resp_query, $n, "id_utilisateur");
2268

    
2269
										//echo "\$tab_ele['aid_b'][$zz]['aid_prof_resp_login'][$n]=".$tab_ele['aid_b'][$zz]['aid_prof_resp_login'][$n]."<br />";
2270

    
2271
										$n++;
2272
									}
2273
									//------
2274
									// On appelle l'appr?ciation de l'?l?ve, et sa note
2275
									//------
2276
									$current_eleve_aid_appreciation_query = mysql_query("SELECT * FROM aid_appreciations WHERE (login='".$current_eleve_login[$i]."' AND periode='$periode_num' and id_aid='$aid_id' and indice_aid='$indice_aid')");
2277
									$current_eleve_aid_appreciation = @mysql_result($current_eleve_aid_appreciation_query, 0, "appreciation");
2278
									$periode_query = mysql_query("SELECT * FROM periodes WHERE id_classe = '$id_classe'");
2279
									$periode_max = mysql_num_rows($periode_query);
2280
									if ($type_note == 'last') {$last_periode_aid = min($periode_max,$display_end);}
2281
									if (($type_note == 'every') or (($type_note == 'last') and ($periode_num == $last_periode_aid))) {
2282
										$place_eleve = "";
2283
										$current_eleve_aid_note = @mysql_result($current_eleve_aid_appreciation_query, 0, "note");
2284
										$current_eleve_aid_statut = @mysql_result($current_eleve_aid_appreciation_query, 0, "statut");
2285
										if (($current_eleve_aid_statut == '') and ($note_max != 20) ) {
2286
											$current_eleve_aid_appreciation = "(note sur ".$note_max.") ".$current_eleve_aid_appreciation;
2287
										}
2288
										if ($current_eleve_aid_note == '') {
2289
											$current_eleve_aid_note = '-';
2290
										} else {
2291
											if ($affiche_graph == 'y')  {
2292
												if ($current_eleve_aid_note<5) { $place_eleve=6;}
2293
												if (($current_eleve_aid_note>=5) and ($current_eleve_aid_note<8))  { $place_eleve=5;}
2294
												if (($current_eleve_aid_note>=8) and ($current_eleve_aid_note<10)) { $place_eleve=4;}
2295
												if (($current_eleve_aid_note>=10) and ($current_eleve_aid_note<12)) {$place_eleve=3;}
2296
												if (($current_eleve_aid_note>=12) and ($current_eleve_aid_note<15)) { $place_eleve=2;}
2297
												if ($current_eleve_aid_note>=15) { $place_eleve=1;}
2298

    
2299
												// Pas id?al: on fait ces requ?tes autant de fois qu'il y a d'?l?ve...
2300
												$quartile1_classe = sql_query1("SELECT COUNT( a.note ) as quartile1 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=15)");
2301
												$quartile2_classe = sql_query1("SELECT COUNT( a.note ) as quartile2 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=12 AND a.note<15)");
2302
												$quartile3_classe = sql_query1("SELECT COUNT( a.note ) as quartile3 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=10 AND a.note<12)");
2303
												$quartile4_classe = sql_query1("SELECT COUNT( a.note ) as quartile4 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=8 AND a.note<10)");
2304
												$quartile5_classe = sql_query1("SELECT COUNT( a.note ) as quartile5 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=5 AND a.note<8)");
2305
												$quartile6_classe = sql_query1("SELECT COUNT( a.note ) as quartile6 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note<5)");
2306

    
2307
												$tab_ele['aid_b'][$zz]['quartile1_classe']=$quartile1_classe;
2308
												$tab_ele['aid_b'][$zz]['quartile2_classe']=$quartile2_classe;
2309
												$tab_ele['aid_b'][$zz]['quartile3_classe']=$quartile3_classe;
2310
												$tab_ele['aid_b'][$zz]['quartile4_classe']=$quartile4_classe;
2311
												$tab_ele['aid_b'][$zz]['quartile5_classe']=$quartile5_classe;
2312
												$tab_ele['aid_b'][$zz]['quartile6_classe']=$quartile6_classe;
2313

    
2314
											}
2315
											$current_eleve_aid_note=number_format($current_eleve_aid_note,1, ',', ' ');
2316
										}
2317
										$aid_note_min_query = mysql_query("SELECT MIN(note) note_min FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2318

    
2319
										$aid_note_min = @mysql_result($aid_note_min_query, 0, "note_min");
2320
										if ($aid_note_min == '') {
2321
											$aid_note_min = '-';
2322
										} else {
2323
											$aid_note_min=number_format($aid_note_min,1, ',', ' ');
2324
										}
2325
										$aid_note_max_query = mysql_query("SELECT MAX(note) note_max FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2326
										$aid_note_max = @mysql_result($aid_note_max_query, 0, "note_max");
2327

    
2328
										if ($aid_note_max == '') {
2329
											$aid_note_max = '-';
2330
										} else {
2331
											$aid_note_max=number_format($aid_note_max,1, ',', ' ');
2332
										}
2333

    
2334
										$aid_note_moyenne_query = mysql_query("SELECT round(avg(note),1) moyenne FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2335
										$aid_note_moyenne = @mysql_result($aid_note_moyenne_query, 0, "moyenne");
2336
										if ($aid_note_moyenne == '') {
2337
											$aid_note_moyenne = '-';
2338
										} else {
2339
											$aid_note_moyenne=number_format($aid_note_moyenne,1, ',', ' ');
2340
										}
2341

    
2342
										$tab_ele['aid_b'][$zz]['aid_note']=$current_eleve_aid_note;
2343
										$tab_ele['aid_b'][$zz]['aid_statut']=$current_eleve_aid_statut;
2344
										$tab_ele['aid_b'][$zz]['aid_note_moyenne']=$aid_note_moyenne;
2345
										$tab_ele['aid_b'][$zz]['aid_note_max']=$aid_note_max;
2346
										$tab_ele['aid_b'][$zz]['aid_note_min']=$aid_note_min;
2347
										$tab_ele['aid_b'][$zz]['place_eleve']=$place_eleve;
2348
									}
2349

    
2350
									if ($type_note == 'no') {
2351
										$tab_ele['aid_b'][$zz]['aid_note']='-';
2352
										$tab_ele['aid_b'][$zz]['aid_statut']='';
2353
										$tab_ele['aid_b'][$zz]['aid_note_moyenne']='-';
2354
										$tab_ele['aid_b'][$zz]['aid_note_max']='-';
2355
										$tab_ele['aid_b'][$zz]['aid_note_min']='-';
2356
										//$tab_ele['aid_b'][$zz]['place_eleve']=$place_eleve;
2357
									}
2358

    
2359
									$tab_ele['aid_b'][$zz]['aid_appreciation']=$current_eleve_aid_appreciation;
2360

    
2361
									//echo "\$tab_ele['aid_b'][$z]['aid_appreciation']=".$tab_ele['aid_b'][$z]['aid_appreciation']."<br />";
2362

    
2363
									// Vaut-il mieux un tableau $tab_ele['aid_b']
2364
									// ou calquer sur $tab_bulletin[$id_classe][$periode_num]['groupe']
2365
									// La deuxi?me solution r?duirait sans doute le nombre de requ?tes
2366

    
2367
									$zz++;
2368
								}
2369
							}
2370
							$z++;
2371
						}
2372

    
2373

    
2374
						//echo "<p>".$tab_ele['login']."<br />";
2375
						// On attaque maintenant l'affichage des appr?ciations des Activit?s Interdisciplinaires devant appara?tre en fin des bulletins :
2376
						//------------------------------
2377
						// $z est l'indice de $call_data_aid_e
2378
						$z=0;
2379
						// $zz est l'indice des AID effectivement utiles pour l'?l?ve et la p?riode
2380
						$zz=0;
2381
						while ($z < $nb_aid_e) {
2382
							$display_begin = @mysql_result($call_data_aid_e, $z, "display_begin");
2383
							$display_end = @mysql_result($call_data_aid_e, $z, "display_end");
2384
							$type_note = @mysql_result($call_data_aid_e, $z, "type_note");
2385
							$note_max = @mysql_result($call_data_aid_e, $z, "note_max");
2386

    
2387
							/*
2388
							echo "\$z=$z<br />";
2389
							echo "\$display_begin=$display_begin<br />";
2390
							echo "\$display_end=$display_end<br />";
2391
							echo "\$type_note=$type_note<br />";
2392
							echo "\$note_max=$note_max<br />";
2393
							*/
2394

    
2395
							if (($periode_num >= $display_begin) and ($periode_num <= $display_end)) {
2396
								$indice_aid = @mysql_result($call_data_aid_e, $z, "indice_aid");
2397
								$aid_query = mysql_query("SELECT id_aid FROM j_aid_eleves WHERE (login='".$current_eleve_login[$i]."' and indice_aid='$indice_aid')");
2398
								$aid_id = @mysql_result($aid_query, 0, "id_aid");
2399
								if ($aid_id != '') {
2400

    
2401
									$tab_ele['aid_e'][$zz]['display_begin']=$display_begin;
2402
									$tab_ele['aid_e'][$zz]['display_end']=$display_end;
2403

    
2404
									$tab_ele['aid_e'][$zz]['nom']=@mysql_result($call_data_aid_e, $z, "nom");
2405
									$tab_ele['aid_e'][$zz]['nom_complet']=@mysql_result($call_data_aid_e, $z, "nom_complet");
2406
									$tab_ele['aid_e'][$zz]['message']=@mysql_result($call_data_aid_e, $z, "message");
2407

    
2408
									$tab_ele['aid_e'][$zz]['display_nom']=@mysql_result($call_data_aid_e, $z, "display_nom");
2409

    
2410
									//echo "\$tab_ele['aid_e'][$zz]['nom_complet']=".$tab_ele['aid_e'][$zz]['nom_complet']."<br />";
2411
									//echo "\$type_note=".$type_note."<br />";
2412

    
2413
									$aid_nom_query = mysql_query("SELECT nom FROM aid WHERE (id='$aid_id' and indice_aid='$indice_aid');");
2414
									$tab_ele['aid_e'][$zz]['aid_nom']=@mysql_result($aid_nom_query, 0, "nom");
2415

    
2416
									//echo "\$tab_ele['aid_e'][$zz]['aid_nom']=".$tab_ele['aid_e'][$zz]['aid_nom']."<br />";
2417

    
2418
									// On regarde maintenant quelle sont les profs responsables de cette AID
2419
									$aid_prof_resp_query = mysql_query("SELECT id_utilisateur FROM j_aid_utilisateurs WHERE (id_aid='$aid_id'  and indice_aid='$indice_aid')");
2420
									$nb_lig = mysql_num_rows($aid_prof_resp_query);
2421
									$n = '0';
2422
									while ($n < $nb_lig) {
2423
										//$aid_prof_resp_login[$n] = mysql_result($aid_prof_resp_query, $n, "id_utilisateur");
2424
										$tab_ele['aid_e'][$zz]['aid_prof_resp_login'][$n]=mysql_result($aid_prof_resp_query, $n, "id_utilisateur");
2425

    
2426
										//echo "\$tab_ele['aid_e'][$zz]['aid_prof_resp_login'][$n]=".$tab_ele['aid_e'][$zz]['aid_prof_resp_login'][$n]."<br />";
2427

    
2428
										$n++;
2429
									}
2430
									//------
2431
									// On appelle l'appr?ciation de l'?l?ve, et sa note
2432
									//------
2433
									$current_eleve_aid_appreciation_query = mysql_query("SELECT * FROM aid_appreciations WHERE (login='".$current_eleve_login[$i]."' AND periode='$periode_num' and id_aid='$aid_id' and indice_aid='$indice_aid')");
2434
									$current_eleve_aid_appreciation = @mysql_result($current_eleve_aid_appreciation_query, 0, "appreciation");
2435
									$periode_query = mysql_query("SELECT * FROM periodes WHERE id_classe = '$id_classe'");
2436
									$periode_max = mysql_num_rows($periode_query);
2437
									if ($type_note == 'last') {$last_periode_aid = min($periode_max,$display_end);}
2438
									if (($type_note == 'every') or (($type_note == 'last') and ($periode_num == $last_periode_aid))) {
2439
										$place_eleve = "";
2440
										$current_eleve_aid_note = @mysql_result($current_eleve_aid_appreciation_query, 0, "note");
2441
										$current_eleve_aid_statut = @mysql_result($current_eleve_aid_appreciation_query, 0, "statut");
2442
										if (($current_eleve_aid_statut == '') and ($note_max != 20) ) {
2443
											$current_eleve_aid_appreciation = "(note sur ".$note_max.") ".$current_eleve_aid_appreciation;
2444
										}
2445
										if ($current_eleve_aid_note == '') {
2446
											$current_eleve_aid_note = '-';
2447
										} else {
2448
											if ($affiche_graph == 'y')  {
2449
												if ($current_eleve_aid_note<5) { $place_eleve=6;}
2450
												if (($current_eleve_aid_note>=5) and ($current_eleve_aid_note<8))  { $place_eleve=5;}
2451
												if (($current_eleve_aid_note>=8) and ($current_eleve_aid_note<10)) { $place_eleve=4;}
2452
												if (($current_eleve_aid_note>=10) and ($current_eleve_aid_note<12)) {$place_eleve=3;}
2453
												if (($current_eleve_aid_note>=12) and ($current_eleve_aid_note<15)) { $place_eleve=2;}
2454
												if ($current_eleve_aid_note>=15) { $place_eleve=1;}
2455

    
2456
												// Pas id?al: on fait ces requ?tes autant de fois qu'il y a d'?l?ve...
2457
												$quartile1_classe = sql_query1("SELECT COUNT( a.note ) as quartile1 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=15)");
2458
												$quartile2_classe = sql_query1("SELECT COUNT( a.note ) as quartile2 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=12 AND a.note<15)");
2459
												$quartile3_classe = sql_query1("SELECT COUNT( a.note ) as quartile3 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=10 AND a.note<12)");
2460
												$quartile4_classe = sql_query1("SELECT COUNT( a.note ) as quartile4 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=8 AND a.note<10)");
2461
												$quartile5_classe = sql_query1("SELECT COUNT( a.note ) as quartile5 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note>=5 AND a.note<8)");
2462
												$quartile6_classe = sql_query1("SELECT COUNT( a.note ) as quartile6 FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid' AND a.note<5)");
2463

    
2464
												$tab_ele['aid_e'][$zz]['quartile1_classe']=$quartile1_classe;
2465
												$tab_ele['aid_e'][$zz]['quartile2_classe']=$quartile2_classe;
2466
												$tab_ele['aid_e'][$zz]['quartile3_classe']=$quartile3_classe;
2467
												$tab_ele['aid_e'][$zz]['quartile4_classe']=$quartile4_classe;
2468
												$tab_ele['aid_e'][$zz]['quartile5_classe']=$quartile5_classe;
2469
												$tab_ele['aid_e'][$zz]['quartile6_classe']=$quartile6_classe;
2470

    
2471
											}
2472
											$current_eleve_aid_note=number_format($current_eleve_aid_note,1, ',', ' ');
2473
										}
2474
										$aid_note_min_query = mysql_query("SELECT MIN(note) note_min FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2475

    
2476
										$aid_note_min = @mysql_result($aid_note_min_query, 0, "note_min");
2477
										if ($aid_note_min == '') {
2478
											$aid_note_min = '-';
2479
										} else {
2480
											$aid_note_min=number_format($aid_note_min,1, ',', ' ');
2481
										}
2482
										$aid_note_max_query = mysql_query("SELECT MAX(note) note_max FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2483
										$aid_note_max = @mysql_result($aid_note_max_query, 0, "note_max");
2484

    
2485
										if ($aid_note_max == '') {
2486
											$aid_note_max = '-';
2487
										} else {
2488
											$aid_note_max=number_format($aid_note_max,1, ',', ' ');
2489
										}
2490

    
2491
										$aid_note_moyenne_query = mysql_query("SELECT round(avg(note),1) moyenne FROM aid_appreciations a, j_eleves_classes j WHERE (a.login = j.login and j.id_classe = '$id_classe' and a.statut='' and a.periode = '$periode_num' and j.periode='$periode_num' and a.indice_aid='$indice_aid')");
2492
										$aid_note_moyenne = @mysql_result($aid_note_moyenne_query, 0, "moyenne");
2493
										if ($aid_note_moyenne == '') {
2494
											$aid_note_moyenne = '-';
2495
										} else {
2496
											$aid_note_moyenne=number_format($aid_note_moyenne,1, ',', ' ');
2497
										}
2498

    
2499
										$tab_ele['aid_e'][$zz]['aid_note']=$current_eleve_aid_note;
2500
										$tab_ele['aid_e'][$zz]['aid_statut']=$current_eleve_aid_statut;
2501
										$tab_ele['aid_e'][$zz]['aid_note_moyenne']=$aid_note_moyenne;
2502
										$tab_ele['aid_e'][$zz]['aid_note_max']=$aid_note_max;
2503
										$tab_ele['aid_e'][$zz]['aid_note_min']=$aid_note_min;
2504
										$tab_ele['aid_e'][$zz]['place_eleve']=$place_eleve;
2505
									}
2506

    
2507

    
2508
									if ($type_note == 'no') {
2509
										$tab_ele['aid_e'][$zz]['aid_note']='-';
2510
										$tab_ele['aid_e'][$zz]['aid_statut']='';
2511
										$tab_ele['aid_e'][$zz]['aid_note_moyenne']='-';
2512
										$tab_ele['aid_e'][$zz]['aid_note_max']='-';
2513
										$tab_ele['aid_e'][$zz]['aid_note_min']='-';
2514
										//$tab_ele['aid_e'][$zz]['place_eleve']=$place_eleve;
2515
									}
2516

    
2517
									$tab_ele['aid_e'][$zz]['aid_appreciation']=$current_eleve_aid_appreciation;
2518

    
2519
									//echo "\$tab_ele['aid_e'][$z]['aid_appreciation']=".$tab_ele['aid_e'][$z]['aid_appreciation']."<br />";
2520

    
2521
									// Vaut-il mieux un tableau $tab_ele['aid_b']
2522
									// ou calquer sur $tab_bulletin[$id_classe][$periode_num]['groupe']
2523
									// La deuxi?me solution r?duirait sans doute le nombre de requ?tes
2524

    
2525
									$zz++;
2526
								}
2527
							}
2528
							$z++;
2529
						}
2530

    
2531
						//==============================
2532
						if($mode_bulletin=="html") {
2533
							$motif="Temoin_eleve".$id_classe."_".$periode_num."_".$i;
2534
							decompte_debug($motif,"$motif ?l?ve $i (".$current_eleve_login[$i].") apr?s AID");
2535
							flush();
2536
						}
2537
						//==============================
2538
					}
2539

    
2540
					//========================
2541

    
2542

    
2543

    
2544

    
2545
					//==========================================
2546
					// ABSENCES
2547
					//On v?rifie si le module est activ?
2548
					if (getSettingValue("active_module_absence")!='2') {
2549
					    $sql="SELECT * FROM absences WHERE (login='".$current_eleve_login[$i]."' AND periode='$periode_num');";
2550
					    $current_eleve_absences_query = mysql_query($sql);
2551
					    $current_eleve_absences = @mysql_result($current_eleve_absences_query, 0, "nb_absences");
2552
					    $current_eleve_nj = @mysql_result($current_eleve_absences_query, 0, "non_justifie");
2553
					    $current_eleve_retards = @mysql_result($current_eleve_absences_query, 0, "nb_retards");
2554
					    $current_eleve_appreciation_absences = @mysql_result($current_eleve_absences_query, 0, "appreciation");
2555
					} else {
2556
					    // Initialisations files
2557
					    require_once("../lib/initialisationsPropel.inc.php");
2558
					    $eleve = EleveQuery::create()->findOneByLogin($current_eleve_login[$i]);
2559
					    if ($eleve != null) {
2560
						$current_eleve_absences = $eleve->getDemiJourneesAbsenceParPeriode($periode_num)->count();
2561
						$current_eleve_nj = $eleve->getDemiJourneesNonJustifieesAbsenceParPeriode($periode_num)->count();
2562
						$current_eleve_retards = $eleve->getRetardsParPeriode($periode_num)->count();
2563
						$current_eleve_absences_query = mysql_query("SELECT * FROM absences WHERE (login='$current_eleve_login' AND periode='$periode_num')");
2564
						$current_eleve_appreciation_absences = @mysql_result($current_eleve_absences_query, 0, "appreciation");
2565
					    }
2566
					}
2567
					if ($current_eleve_absences === '') { $current_eleve_absences = "?"; }
2568
					if ($current_eleve_nj === '') { $current_eleve_nj = "?"; }
2569
					if ($current_eleve_retards==='') { $current_eleve_retards = "?"; }
2570

    
2571
					$tab_ele['eleve_absences']=$current_eleve_absences;
2572
					$tab_ele['eleve_nj']=$current_eleve_nj;
2573
					$tab_ele['eleve_retards']=$current_eleve_retards;
2574
					$tab_ele['appreciation_absences']=$current_eleve_appreciation_absences;
2575

    
2576
					$sql="SELECT u.login login,u.civilite FROM utilisateurs u,
2577
												j_eleves_cpe j
2578
											WHERE (u.login=j.cpe_login AND
2579
												j.e_login='".$current_eleve_login[$i]."');";
2580
					$query = mysql_query($sql);
2581
					$current_eleve_cperesp_login = @mysql_result($query, "0", "login");
2582
					$tab_ele['cperesp_login']=$current_eleve_cperesp_login;
2583
					$current_eleve_cperesp_civilite = @mysql_result($query, "0", "civilite");
2584
					$tab_ele['cperesp_civilite']=$current_eleve_cperesp_civilite;
2585
					//==========================================
2586

    
2587

    
2588
					// Boucle groupes de la classe $id_classe pour la p?riode $periode_num
2589
					for($j=0;$j<count($current_group);$j++) {
2590
						//============================================
2591
						// A REVOIR: On fait cette requ?te autant de fois qu'il y a d'?l?ve... l'extraire de la boucle ?l?ves en faisant une autre boucle sur $current_group
2592
						// Nombre total de devoirs:
2593
						$sql="SELECT cd.id FROM cn_devoirs cd, cn_cahier_notes ccn WHERE cd.id_racine=ccn.id_cahier_notes AND ccn.id_groupe='".$current_group[$j]["id"]."' AND ccn.periode='$periode_num';";
2594
						//echo "\n<!--sql=$sql-->\n";
2595
						$result_nbct_tot=mysql_query($sql);
2596
						if($result_nbct_tot) {
2597
							$current_matiere_nbct=mysql_num_rows($result_nbct_tot);
2598
						}
2599
						else {
2600
							$current_matiere_nbct=0;
2601
						}
2602

    
2603
						$tab_bulletin[$id_classe][$periode_num]['groupe'][$j]['nbct']=$current_matiere_nbct;
2604

    
2605
						//============================================
2606

    
2607
						// Si l'?l?ve suit l'option, sa note est affect?e (?ventuellement vide)
2608
						if(isset($current_eleve_note[$j][$i])) {
2609
							// Quartiles
2610
							/*
2611
							if($current_eleve_note[$j][$i]!="") {
2612
								if($current_eleve_note[$j][$i]>=15) {
2613
									$tab_bulletin[$id_classe][$periode_num]['quartile1_grp'][$j]++;
2614
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=1;
2615
								}
2616
								elseif(($current_eleve_note[$j][$i]>=12)&&($current_eleve_note[$j][$i]<15)) {
2617
									$tab_bulletin[$id_classe][$periode_num]['quartile2_grp'][$j]++;
2618
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=2;
2619
								}
2620
								elseif(($current_eleve_note[$j][$i]>=10)&&($current_eleve_note[$j][$i]<12)) {
2621
									$tab_bulletin[$id_classe][$periode_num]['quartile3_grp'][$j]++;
2622
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=3;
2623
								}
2624
								elseif(($current_eleve_note[$j][$i]>=8)&&($current_eleve_note[$j][$i]<10)) {
2625
									$tab_bulletin[$id_classe][$periode_num]['quartile4_grp'][$j]++;
2626
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=4;
2627
								}
2628
								elseif(($current_eleve_note[$j][$i]>=5)&&($current_eleve_note[$j][$i]<8)) {
2629
									$tab_bulletin[$id_classe][$periode_num]['quartile5_grp'][$j]++;
2630
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=5;
2631
								}
2632
								else {
2633
									$tab_bulletin[$id_classe][$periode_num]['quartile6_grp'][$j]++;
2634
									$tab_bulletin[$id_classe][$periode_num]['place_eleve'][$j][$i]=6;
2635
								}
2636
							}
2637
							*/
2638

    
2639
							//================================
2640
							// Notes des boites/conteneurs/sous-matieres
2641
							unset($cn_note);
2642
							unset($cn_nom);
2643
							unset($cn_id);
2644

    
2645
							// On teste si des notes de une ou plusieurs boites du carnet de notes doivent ?tre affich?e
2646
							$test_cn = mysql_query("select distinct c.nom_court, c.id, nc.note from cn_cahier_notes cn, cn_conteneurs c, cn_notes_conteneurs nc
2647
							where (
2648
							cn.periode = '".$periode_num."' and
2649
							cn.id_groupe='".$current_group[$j]["id"]."' and
2650
							cn.id_cahier_notes = c.id_racine and
2651
							c.id_racine!=c.id and
2652
							nc.id_conteneur = c.id and
2653
							nc.statut ='y' and
2654
							nc.login='".$current_eleve_login[$i]."' and
2655
							c.display_bulletin = 1
2656
							) ");
2657
							$nb_ligne_cn = mysql_num_rows($test_cn);
2658
							$n = 0;
2659
							while ($n < $nb_ligne_cn) {
2660
								$cn_id[$n] = mysql_result($test_cn, $n, 'c.id');
2661
								$cn_nom[$n] = mysql_result($test_cn, $n, 'c.nom_court');
2662
								$cn_note[$n] = @mysql_result($test_cn, $n ,'nc.note');
2663
								$cn_note[$n] = number_format($cn_note[$n],1, ',', ' ');
2664
								$n++;
2665
							}
2666
							$nb_ligne_par_matiere = max($nb_ligne_cn,1) ;
2667

    
2668
							$tab_bulletin[$id_classe][$periode_num]['groupe'][$j][$i]['nb_ligne_par_matiere']=$nb_ligne_par_matiere;
2669

    
2670
							if(isset($cn_note)) {
2671
								$tab_bulletin[$id_classe][$periode_num]['groupe'][$j][$i]['cn_note']=$cn_note;
2672
								$tab_bulletin[$id_classe][$periode_num]['groupe'][$j][$i]['cn_id']=$cn_id;
2673
								$tab_bulletin[$id_classe][$periode_num]['groupe'][$j][$i]['cn_nom']=$cn_nom;
2674
							}
2675

    
2676
							//================================
2677
							// R?cup appr?ciation
2678
							$sql="SELECT appreciation FROM matieres_appreciations WHERE id_groupe='".$current_group[$j]['id']."' AND periode='$periode_num' AND login='".$current_eleve_login[$i]."';";
2679
							$res_app=mysql_query($sql);
2680
							if(mysql_num_rows($res_app)>0) {
2681
								$lig_app=mysql_fetch_object($res_app);
2682
								$current_eleve_app[$j][$i]=$lig_app->appreciation;
2683
								if($current_eleve_app[$j][$i]=="") {$current_eleve_app[$j][$i]="-";}
2684
							}
2685
							else {
2686
								$current_eleve_app[$j][$i]="-";
2687
							}
2688
							//================================
2689

    
2690
							// Nombre de contr?les
2691
							$sql="SELECT cnd.note, cd.note_sur FROM cn_notes_devoirs cnd, cn_devoirs cd, cn_cahier_notes ccn WHERE cnd.login='".$current_eleve_login[$i]."' AND cnd.id_devoir=cd.id AND cd.id_racine=ccn.id_cahier_notes AND ccn.id_groupe='".$current_group[$j]["id"]."' AND ccn.periode='$periode_num' AND cnd.statut='';";
2692
							//echo "\n<!--sql=$sql-->\n";
2693
							$result_nbct=mysql_query($sql);
2694
							if($result_nbct) {
2695
								$current_eleve_nbct=mysql_num_rows($result_nbct);
2696
							}
2697
							else {
2698
								$current_eleve_nbct=0;
2699
							}
2700

    
2701
							$tab_bulletin[$id_classe][$periode_num]['nbct'][$j][$i]=$current_eleve_nbct;
2702

    
2703
							if((isset($place_eleve_classe[$i]))&&($place_eleve_classe[$i]!="")) {
2704
								$tab_bulletin[$id_classe][$periode_num]['nbct'][$j][$i]=$current_eleve_nbct;
2705
							}
2706

    
2707
							//++++++++++++++++++++++++
2708
							// Modif d'apr?s F.Boisson
2709
							// Pour remplacer la chaine de caract?res @@Notes par une insertion des notes dans l'appr?ciation du bulletin.
2710
							// on prend les notes dans $string_notes
2711
							$string_notes='';
2712
							if ($result_nbct ) {
2713
								while ($snnote =  mysql_fetch_assoc($result_nbct)) {
2714
									if ($string_notes != '') $string_notes .= ", ";
2715
									$string_notes .= $snnote['note'];
2716
									if(getSettingValue("note_autre_que_sur_referentiel")=="V" || $snnote['note_sur']!=getSettingValue("referentiel_note")) {
2717
										$string_notes .= "/".$snnote['note_sur'];
2718
									}
2719
								}
2720
							}
2721
							$current_eleve_app[$j][$i]=str_replace('@@Notes', $string_notes,$current_eleve_app[$j][$i]);
2722
							//++++++++++++++++++++++++
2723

    
2724
							//$tab_bulletin[$id_classe][$periode_num]['groupe'][$j][$i]['app']=$current_eleve_app[$j][$i];
2725

    
2726
							// Structure plus proche des autres donn?es:
2727
							$tab_bulletin[$id_classe][$periode_num]['app'][$j][$i]=$current_eleve_app[$j][$i];
2728

    
2729
						}
2730
					}
2731

    
2732
					// Avis du conseil de classe
2733
					$sql="SELECT avis FROM avis_conseil_classe WHERE login='".$current_eleve_login[$i]."' AND periode='$periode_num';";
2734
					$res_avis=mysql_query($sql);
2735
// ***** AJOUT POUR LES MENTIONS *****
2736
					$sql="SELECT mention FROM avis_conseil_classe WHERE login='".$current_eleve_login[$i]."' AND periode='$periode_num';";
2737
					$res_mention=mysql_query($sql);
2738
// ***** FIN DE L'AJOUT POUR LES MENTIONS *****
2739

    
2740
					//echo "$sql<br />";
2741
					if(mysql_num_rows($res_avis)>0) {
2742
						$lig_avis=mysql_fetch_object($res_avis);
2743
						$tab_bulletin[$id_classe][$periode_num]['avis'][$i]=$lig_avis->avis;
2744
						//echo $lig_avis->avis;
2745
					}
2746
					else {
2747
						//$tab_bulletin[$id_classe][$periode_num]['avis'][$i]="-";
2748
						$tab_bulletin[$id_classe][$periode_num]['avis'][$i]="";
2749
					}
2750
// ***** AJOUT POUR LES MENTIONS *****
2751
					if(mysql_num_rows($res_mention)>0) {
2752
                                                $lig_mention=mysql_fetch_object($res_mention);
2753
						if($mode_bulletin=="pdf")
2754
                                                       $tab_bulletin[$id_classe][$periode_num]['mention'][$i]=$lig_mention->mention;
2755
                                                if($mode_bulletin=="html") {
2756
                                                        if ($lig_mention->mention=="F")
2757
                                                           $tab_bulletin[$id_classe][$periode_num]['mention'][$i]="F?licitations.";
2758
        						elseif ($lig_mention->mention=="M")
2759
                                                           $tab_bulletin[$id_classe][$periode_num]['mention'][$i]="Mention honorable.";
2760
        						elseif ($lig_mention->mention=="E")
2761
                                                           $tab_bulletin[$id_classe][$periode_num]['mention'][$i]="Encouragements.";
2762
        						else
2763
                                                           $tab_bulletin[$id_classe][$periode_num]['mention'][$i]="-";
2764
                                                }
2765
						//echo $lig_avis->avis;
2766
					}
2767
					else {
2768
						$tab_bulletin[$id_classe][$periode_num]['mention'][$i]="-";
2769
					}
2770
// ***** FIN DE L'AJOUT POUR LES MENTIONS *****
2771

    
2772

    
2773
					// On affecte la partie ?l?ve $tab_ele dans $tab_bulletin
2774
					$tab_bulletin[$id_classe][$periode_num]['eleve'][$i]=$tab_ele;
2775
				}
2776
			}
2777
		}
2778
	}
2779

    
2780

    
2781

    
2782
	//========================================================================
2783
	// A CE STADE LE TABLEAU $tab_bulletin EST RENSEIGN?
2784
	// PLUS AUCUNE REQUETE NE DEVRAIT ETRE NECESSAIRE
2785
	// OU ALORS IL FAUDRAIT LES EFFECTUER AU-DESSUS ET COMPLETER $tab_bulletin
2786
	//
2787
	// IL Y AURA A RENSEIGNER $tab_bulletin[$id_classe][$periode_num]['modele_pdf']
2788
	// SI ON FAIT UNE IMPRESSION DE BULLETIN PDF, POUR NE PAS REFAIRE LES REQUETES
2789
	// POUR CHAQUE ELEVE.
2790
	//========================================================================
2791

    
2792
	if($mode_bulletin=="html") {
2793
		echo "<script type='text/javascript'>
2794
	document.getElementById('td_info').innerHTML='Affichage';
2795
</script>\n";
2796
	}
2797

    
2798
	if($mode_bulletin=="pdf") {
2799
		// d?finition d'une variable
2800
		$hauteur_pris = 0;
2801

    
2802
		/*****************************************
2803
		* d?but de la g?n?ration du fichier PDF  *
2804
		* ****************************************/
2805
		header('Content-type: application/pdf');
2806
		//cr?ation du PDF en mode Portrait, unit?e de mesure en mm, de taille A4
2807
		$pdf=new bul_PDF('p', 'mm', 'A4');
2808
		$nb_eleve_aff = 1;
2809
		$categorie_passe = '';
2810
		$categorie_passe_count = 0;
2811
		$pdf->SetCreator($gepiSchoolName);
2812
		$pdf->SetAuthor($gepiSchoolName);
2813
		$pdf->SetKeywords('');
2814
		$pdf->SetSubject('Bulletin');
2815
		$pdf->SetTitle('Bulletin');
2816
		$pdf->SetDisplayMode('fullwidth', 'single');
2817
		$pdf->SetCompression(TRUE);
2818
		$pdf->SetAutoPageBreak(TRUE, 5);
2819

    
2820
		$responsable_place = 0;
2821
	}
2822

    
2823
	$compteur_bulletins=0;
2824
	for($loop_classe=0;$loop_classe<count($tab_id_classe);$loop_classe++) {
2825
		$id_classe=$tab_id_classe[$loop_classe];
2826
		$classe=get_class_from_id($id_classe);
2827

    
2828
		if($mode_bulletin=="html") {
2829
			echo "<script type='text/javascript'>
2830
	document.getElementById('td_classe').innerHTML='".$classe."';
2831
</script>\n";
2832
		}
2833

    
2834
		for($loop_periode_num=0;$loop_periode_num<count($tab_periode_num);$loop_periode_num++) {
2835

    
2836
			$periode_num=$tab_periode_num[$loop_periode_num];
2837

    
2838
			//==============================
2839
			if($mode_bulletin=="html") {
2840
				$motif="Classe_".$id_classe."_".$periode_num;
2841
				decompte_debug($motif,"$motif avant");
2842
				flush();
2843
				echo "<script type='text/javascript'>
2844
	document.getElementById('td_periode').innerHTML='".$periode_num."';
2845
</script>\n";
2846
			}
2847
			//==============================
2848

    
2849
			if($mode_bulletin=="html") {
2850
				echo "<div class='noprint' style='background-color:white; border: 1px solid red;'>\n";
2851
				echo "<h2>Classe de ".$classe."</h2>\n";
2852
				echo "<p><b>P?riode $periode_num</b></p>\n";
2853

    
2854
				echo "<p>Effectif de la classe: ".$tab_bulletin[$id_classe][$periode_num]['eff_classe']."</p>\n";
2855
				echo "</div>\n";
2856
			}
2857

    
2858
			//======================================
2859
			// Pour le tri par ?tablissement d'origine
2860
			unset($tmp_tab);
2861
			unset($rg);
2862
			//$tri_par_etab_orig="y";
2863
			if($tri_par_etab_orig=='y') {
2864
				for($k=0;$k<count($tab_bulletin[$id_classe][$periode_num]['eleve']);$k++) {
2865
					$rg[$k]=$k;
2866
					$tmp_tab[$k]=$tab_bulletin[$id_classe][$periode_num]['eleve'][$k]['etab_id'];
2867
				}
2868
				array_multisort ($tmp_tab, SORT_DESC, SORT_NUMERIC, $rg, SORT_ASC, SORT_NUMERIC);
2869
			}
2870
			//======================================
2871

    
2872
			//$compteur=0;
2873
			//for($i=0;$i<count($tab_bulletin[$id_classe][$periode_num]['eleve']);$i++) {
2874
			for($i=0;$i<$tab_bulletin[$id_classe][$periode_num]['eff_classe'];$i++) {
2875
				if($tri_par_etab_orig=='n') {$rg[$i]=$i;}
2876

    
2877
				if(isset($tab_bulletin[$id_classe][$periode_num]['selection_eleves'])) {
2878
					//if(isset($tab_bulletin[$id_classe][$periode_num]['eleve'][$i]['login'])) {
2879
					if(isset($tab_bulletin[$id_classe][$periode_num]['eleve'][$rg[$i]]['login'])) {
2880

    
2881
						//if (in_array($tab_bulletin[$id_classe][$periode_num]['eleve'][$i]['login'],$tab_bulletin[$id_classe][$periode_num]['selection_eleves'])) {
2882
						if (in_array($tab_bulletin[$id_classe][$periode_num]['eleve'][$rg[$i]]['login'],$tab_bulletin[$id_classe][$periode_num]['selection_eleves'])) {
2883

    
2884
							// ++++++++++++++++++++++++++++++++++++++
2885
							// ++++++++++++++++++++++++++++++++++++++
2886
							// AJOUTER UN TEST: L'?l?ve fait-il bien partie de la classe?
2887
							//                  Inutile: la liste $current_eleve_login est obtenue de calcul_moy_gen.inc.php
2888
							//                  Pas d'injection/intervention possible.
2889
							//                  Le test sur l'acc?s ? la classe plus haut (*) doit suffire.
2890
							//                  On pourrait injecter un login dans la s?lection d'?l?ve, mais pas dans $current_eleve_login
2891
							//                  Et on test seulement si $current_eleve_login[$i] est bien dans la s?lection (pas le contraire)
2892
							//                  (*) dans cette section tout de m?me.
2893
							// ++++++++++++++++++++++++++++++++++++++
2894
							// ++++++++++++++++++++++++++++++++++++++
2895

    
2896
							if($mode_bulletin=="html") {
2897
								echo "<script type='text/javascript'>
2898
	document.getElementById('td_ele').innerHTML='".$tab_bulletin[$id_classe][$periode_num]['eleve'][$rg[$i]]['login']."';
2899
</script>\n";
2900
							}
2901

    
2902

    
2903
							if($mode_bulletin=="html") {
2904
								//$motif="Bulletin_eleve".$id_classe."_".$periode_num."_".$i;
2905
								//decompte_debug($motif,"$motif ?l?ve $i avant");
2906
								$motif="Bulletin_eleve".$id_classe."_".$periode_num."_".$rg[$i];
2907
								decompte_debug($motif,"$motif ?l?ve $rg[$i] avant");
2908
								flush();
2909

    
2910
								// Saut de page si jamais ce n'est pas le premier bulletin
2911
								if($compteur_bulletins>0) {echo "<p class='saut'>&nbsp;</p>\n";}
2912

    
2913
								// G?n?ration du bulletin de l'?l?ve
2914
								//bulletin_html($tab_bulletin[$id_classe][$periode_num],$i);
2915
								//bulletin_html($tab_bulletin[$id_classe][$periode_num],$i,$tab_releve[$id_classe][$periode_num]);
2916
								bulletin_html($tab_bulletin[$id_classe][$periode_num],$rg[$i],$tab_releve[$id_classe][$periode_num]);
2917

    
2918
								//$motif="Bulletin_eleve".$id_classe."_".$periode_num."_".$i;
2919
								//decompte_debug($motif,"$motif ?l?ve $i apr?s");
2920
								$motif="Bulletin_eleve".$id_classe."_".$periode_num."_".$rg[$i];
2921
								decompte_debug($motif,"$motif ?l?ve $rg[$i] apr?s");
2922
								flush();
2923
							}
2924
							else {
2925
								//bulletin_pdf($tab_bulletin[$id_classe][$periode_num],$i,$tab_releve[$id_classe][$periode_num]);
2926
								bulletin_pdf($tab_bulletin[$id_classe][$periode_num],$rg[$i],$tab_releve[$id_classe][$periode_num]);
2927
							}
2928

    
2929

    
2930
							//==============================================================================================
2931
							// PAR LA SUITE, ON POURRA INSERER ICI, SI L'OPTION EST COCHEE, LE RELEVE DE NOTES DE LA PERIODE
2932
							//==============================================================================================
2933

    
2934
							if($mode_bulletin=="html") {
2935
								echo "<div class='espacement_bulletins'><div align='center'>Espacement (non imprim?) entre les bulletins</div></div>\n";
2936
							}
2937

    
2938
							$compteur_bulletins++;
2939

    
2940
							if($mode_bulletin=="html") {
2941
								flush();
2942
							}
2943
						}
2944
					}
2945
				}
2946
			}
2947

    
2948
			//==============================
2949
			if($mode_bulletin=="html") {
2950
				$motif="Classe_".$id_classe."_".$periode_num;
2951
				decompte_debug($motif,"$motif apr?s");
2952
				flush();
2953
			}
2954
			//==============================
2955

    
2956
		}
2957
	}
2958

    
2959
	/*
2960
	echo "<style type='text/css'>
2961
	@media screen{
2962
		.espacement_bulletins {
2963
			width: 100%;
2964
			height: 50px;
2965
			border:1px solid red;
2966
			background-color: white;
2967
		}
2968
	}
2969
	@media print{
2970
		.espacement_bulletins {
2971
			display:none;
2972
		}
2973

    
2974
		#remarques_bas_de_page {
2975
			display:none;
2976
		}
2977

    
2978
		.alerte_erreur {
2979
			display:none;
2980
		}
2981
	}
2982
</style>\n";
2983
*/
2984

    
2985
	if($mode_bulletin=="html") {
2986
		echo "<script type='text/javascript'>
2987
	document.getElementById('infodiv').style.display='none';
2988

    
2989
    var aElm=document.body.getElementsByTagName('*');
2990
    for(var i=0; i<aElm.length; i++) {
2991
        if(aElm[i].className=='espacement_bulletins') {
2992
            //do something
2993
            //aElm[i].style.color='lime';
2994
            aElm[i].style.display='none';
2995
        }
2996
    }
2997

    
2998
</script>\n";
2999

    
3000
	}
3001
}
3002

    
3003
//==============================
3004
if($mode_bulletin=="html") {
3005
	$motif="Duree_totale";
3006
	//decompte_debug($motif,"$motif apr?s");
3007
	decompte_debug($motif,"$motif");
3008
	flush();
3009
}
3010
//==============================
3011

    
3012
if((!isset($mode_bulletin))||($mode_bulletin!="pdf")) {
3013
	echo "<div id='remarques_bas_de_page'>
3014
<p><br /></p>
3015
<p>A REVOIR:</p>
3016
<ul>
3017
<li>Les bulletins HTML utilisent les infos display_rang, display_coef,... de la table 'classes'.<br />
3018
Les bulletins PDF utilisent plut?t les infos de la table 'modele_bulletin' il me semble.<br />
3019
Il faudrait peut-?tre revoir le dispositif pour adopter la m?me strat?gie.<br />
3020
On a aussi ajout? des champs dans la table 'classes' pour les relev?s de notes,... faut-il envisager une autre structure?</li>
3021
</ul>
3022
</div>\n";
3023

    
3024
	require("../lib/footer.inc.php");
3025
}
3026
elseif((isset($mode_bulletin))&&($mode_bulletin=="pdf")) {
3027
	//fermeture du fichier pdf et lecture dans le navigateur 'nom', 'I/D'
3028
	$nom_bulletin = 'bulletin_'.$nom_bulletin.'.pdf';
3029
	$pdf->Output($nom_bulletin,'I');
3030
}
3031

    
3032
?>
(5-5/7)