public function testPreremplirResponsables()
    {
        $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(SAMEDI_s40j6)->getFirst();
        $traitement = $saisie->getAbsenceEleveTraitements()->getFirst();
        $notification = $traitement->getAbsenceEleveNotifications()->getFirst();
        $this->assertEquals($notification->getEmail(), null);
        $this->assertEquals($notification->getResponsableEleves()->count(), 0);
        $result = $notification->preremplirResponsables();
        $this->assertTrue($result);
        $this->assertEquals($notification->getEmail(), 'mail@test');
        $this->assertEquals($notification->getResponsableEleves()->count(), 2);


        //on va changer le responsables 2 de florence
        foreach ($florence_eleve->getResponsableInformations() as $resp_info) {
            if ($resp_info->getNiveauResponsabilite() == '2') {
                $resp = $resp_info->getResponsableEleve();
                $resp->setAdresseId(null);
                $resp->save();
            }
        }
        $empty_col= new PropelObjectCollection();
        $notification->setResponsableEleves($empty_col);
        $this->assertEquals($notification->getResponsableEleves()->count(), 0);
        $result = $notification->preremplirResponsables();
        $this->assertTrue($result);
        $this->assertEquals($notification->getEmail(), 'mail@test');
        $this->assertEquals($notification->getResponsableEleves()->count(), 1);

        //on va rajouter un responsable 1
        $responsable = new ResponsableEleve();
        $responsable->setCivilite('M.');
        $responsable->setNom('Michu');
        $responsable->setMel('mail@test');
        $responsable->setPrenom('Mere');
        $responsable->setResponsableEleveId('id 5');
        $responsable->save();
        $responsable_info = new ResponsableInformation();
        $responsable_info->setEleve($florence_eleve);
        $responsable_info->setNiveauResponsabilite(1);
        $responsable_info->setResponsableEleve($responsable);
        $responsable_info->save();
        $empty_col= new PropelObjectCollection();
        $notification->setResponsableEleves($empty_col);
        $this->assertEquals($notification->getResponsableEleves()->count(), 0);
        $result = $notification->preremplirResponsables();
        $this->assertFalse($result);
        $this->assertEquals($notification->getEmail(), 'mail@test');
        $this->assertEquals($notification->getResponsableEleves()->count(), 0);
    }
Esempio n. 2
0
	public function testGetDateDebut()
	{
		$florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
		$periode_col = $florence_eleve->getPeriodeNotes();
		$this->assertEquals('3',$periode_col->count());
		$this->assertEquals('1',$periode_col->getFirst()->getNumPeriode());
		$this->assertEquals('3',$periode_col->getLast()->getNumPeriode());
		
		$periode_1 = $periode_col->getFirst();
		$this->assertEquals(SAMEDI_s48j6.' 23:59:59',$periode_1->getDateFin('Y-m-d H:i:s'));
		$this->assertEquals(VENDREDI_s35j5.' 00:00:00',$periode_1->getDateDebut('Y-m-d H:i:s'));
		
		$periode_3 = $periode_col->getLast();
		$this->assertEquals(LUNDI_a1_s27j1.' 23:59:59',$periode_3->getDateFin('Y-m-d H:i:s'));
		$this->assertEquals(SAMEDI_a1_s9j6.' 00:00:00',$periode_3->getDateDebut('Y-m-d H:i:s'));

	}
Esempio n. 3
0
    /**
    * Test that PropelCollection->add() prevents duplicates of objects strictly identical
    *
    */
   public function testAdd()
    {
        Propel::disableInstancePooling();
        $eleve1 = EleveQuery::create()->findOneByLogin('Florence Michu');
        $eleve1->setNom('test_different');
        $eleve_col = new PropelCollection();
        $eleve_col->add($eleve1);
        $eleve1idem = EleveQuery::create()->findOneByLogin('Florence Michu');
        $this->assertFalse($eleve_col->contains($eleve1idem));
        $eleve_col->add($eleve1idem);
        $this->assertEquals(2, count($eleve_col));
        Propel::enableInstancePooling();


        $eleve1 = EleveQuery::create()->findOneByLogin('Florence Michu');
        $eleve_col = new PropelCollection();
        $eleve_col->add($eleve1);
        $eleve_col->add($eleve1);
        $this->assertEquals(1, count($eleve_col));
    }
Esempio n. 4
0
 public function testDelete()
 {
     $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
     $florence_eleve->updateAbsenceAgregationTable();
     AbsenceEleveSaisiePeer::enableAgregation();
     AbsenceEleveTraitementPeer::enableAgregation();
     $traitement = new AbsenceEleveTraitement();
     $traitement->setAbsenceEleveType(AbsenceEleveTypeQuery::create()->filterByNom('Infirmerie')->findOne());
     $traitement->save();
     $traitement->addAbsenceEleveSaisie($florence_eleve->getAbsenceEleveSaisiesDuJour(VENDREDI_s40j5)->getFirst());
     $traitement->save();
     $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(VENDREDI_s40j5)->findOne();
     $this->assertFalse($decompte->getManquementObligationPresence());
     $j_traitement_saisie = $traitement->getJTraitementSaisieEleves()->getFirst();
     $j_traitement_saisie->delete();
     $decompte->reload();
     $this->assertTrue($decompte->getManquementObligationPresence());
     
             
     AbsenceEleveTraitementPeer::disableAgregation();
     AbsenceEleveSaisiePeer::disableAgregation();
 }
Esempio n. 5
0
	/**
	 * Get the associated Eleve object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     Eleve The associated Eleve object.
	 * @throws     PropelException
	 */
	public function getEleve(PropelPDO $con = null)
	{
		if ($this->aEleve === null && ($this->eleve_id !== null)) {
			$this->aEleve = EleveQuery::create()->findPk($this->eleve_id, $con);
			/* The following can be used additionally to
				guarantee the related object contains a reference
				to this object.  This level of coupling may, however, be
				undesirable since it could result in an only partially populated collection
				in the referenced object.
				$this->aEleve->addAbsenceEleveSaisies($this);
			 */
		}
		return $this->aEleve;
	}
Esempio n. 6
0
    public function testRetardEnglobante()
    {
        saveSetting('abs2_retard_critere_duree',30);
        $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(VENDREDI_s40j5)->getFirst();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(SAMEDI_s40j6)->getFirst();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(DIMANCHE_s40j7)->getFirst();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(LUNDI_s41j1)->getFirst();
        $this->assertTrue($saisie->getRetardEnglobante());

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(MARDI_s41j2)->getFirst();
        saveSetting('abs2_retard_critere_duree',30);
        $this->assertTrue($saisie->getRetardEnglobante());
        $saisie->clearAllReferences();
        saveSetting('abs2_retard_critere_duree',20);
        $this->assertFalse($saisie->getRetardEnglobante());
        saveSetting('abs2_retard_critere_duree',30);

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(MERCREDI_s41j3)->getFirst();//sur cette saisie on a plusieurs traitement, on privilégie le retard
        $this->assertTrue($saisie->getRetardEnglobante());
 
        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(VENDREDI_s41j5.' 08:10:00')->findOne();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(DIMANCHE_s41j7.' 08:10:00')->findOne();
        $this->assertTrue($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(LUNDI_s42j1.' 08:10:00')->findOne();
        $this->assertTrue($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(VENDREDI_s42j5.' 08:10:00')->findOne();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisies = AbsenceEleveSaisieQuery::create()->filterByFinAbs(LUNDI_s43j1.' 09:00:00')->find();
        $this->assertTrue($saisies->getFirst()->getRetardEnglobante());
        $this->assertTrue($saisies->getNext()->getRetardEnglobante());
        
        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(MARDI_a1_s22j2.' 09:10:00')->findOne();
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(MERCREDI_a1_s22j3.' 08:10:00')->findOne();
        $this->assertTrue($saisie->getRetard());
        $this->assertFalse($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(JEUDI_a1_s23j4.' 08:10:00')->findOne();
        $this->assertTrue($saisie->getRetardEnglobante());

        $saisie = AbsenceEleveSaisieQuery::create()->filterByFinAbs(LUNDIa1_s24j1.' 08:10:00')->findOne();
        $this->assertFalse($saisie->getRetardEnglobante());
    }
Esempio n. 7
0
			}
			else {
				echo ' demander à votre administrateur de remplir la table d\'agrégation.';
			}
			if (ob_get_contents()) {
				ob_flush();
			}
			flush();
		}
		foreach ($eleve_col as $eleve) {
			$eleve->checkAndUpdateSynchroAbsenceAgregationTable($dt_date_absence_eleve_debut, $dt_date_absence_eleve_fin);
		}
	}
    
    //on recommence la requetes, maintenant que la table est synchronisé, avec les données d'absence
    $eleve_query = EleveQuery::create()->filterById($eleve_col->toKeyValue('Id','Id'));
    $eleve_query->useAbsenceAgregationDecompteQuery()->distinct()->filterByDateIntervalle($dt_date_absence_eleve_debut,  $dt_date_absence_eleve_fin)->endUse();
    $eleve_query->withColumn('SUM(AbsenceAgregationDecompte.ManquementObligationPresence)', 'NbAbsences')
    	->withColumn('SUM(AbsenceAgregationDecompte.NonJustifiee)', 'NbNonJustifiees')
    	->withColumn('SUM(AbsenceAgregationDecompte.Retards)', 'NbRetards')
   		->withColumn('SUM(AbsenceAgregationDecompte.ManquementObligationPresence) - SUM(AbsenceAgregationDecompte.NonJustifiee)', 'NbJustifiees')
    	->groupBy('Eleve.Id');
    
    $eleve_col = $eleve_query->find();
}

if ($affichage == 'html') {
    //debug_var();

    if(isset($_POST['generer_csv'])) {
        $user_temp_dir=get_user_temp_directory();
Esempio n. 8
0
            ->distinct();
     $eleve_col = $query->find();
} else if (isset($current_aid) && $current_aid != null) {
    $query = EleveQuery::create();
    $eleve_col = $query->useJAidElevesQuery()
                        ->filterByIdAid($current_aid->getId())
                        ->endUse()
            ->where('Eleve.DateSortie<?','0')
            ->orWhere('Eleve.DateSortie is NULL')
            ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve->format('U'))
            ->orderBy('Eleve.Nom','asc')
            ->orderBy('Eleve.Prenom','asc')
            ->distinct()
            ->find();
} else if (isset($current_classe) && $current_classe != null) {
    $query = EleveQuery::create();
    $periode_cur = $current_classe->getPeriodeNote($dt_date_absence_eleve);
    if ($periode_cur != null) {
        $query->useJEleveClasseQuery()->filterByClasse($current_classe)->filterByPeriode($periode_cur->getNumPeriode())->endUse();
    } else {
        $query->useJEleveClasseQuery()->filterByClasse($current_classe)->endUse();
    }
    $query->where('Eleve.DateSortie<?','0')
            ->orWhere('Eleve.DateSortie is NULL')
            ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve->format('U'))
            ->orderBy('Eleve.Nom','asc')
            ->orderBy('Eleve.Prenom','asc')
            ->distinct();
    $eleve_col = $query->find();
}
Esempio n. 9
0
        La formule utilisée pour le calcul du taux d'absentéisme est le pourcentage du nombre de demi-journées d'absences par rapport au nombre de demi-journées ouvrées.<br />
        Pour les élèves ayant quitté l'établissement durant la période choisie, le nombre de demi-journées ouvrées utilisé pour le calcul est indiqué entre parenthèses.<br /><br />                  
        </p>
        <form dojoType="dijit.form.Form" name="abs_statistiques" id="abs_statistiques" action="statistiques.php" method="post">
            <fieldset>
                <legend>Paramétrage de l'export (dates, classes...) et affichage</legend>  
                <h2>Taux d'absentéisme  
                    du  
                    <input style="width : 8em;font-size:14px;" type="text" dojoType="dijit.form.DateTextBox" id="date_absence_eleve_debut" name="date_absence_eleve_debut" value="<?php echo $dt_date_absence_eleve_debut->format('Y-m-d') ?>" />
                    au               
                    <input style="width : 8em;font-size:14px;" type="text" dojoType="dijit.form.DateTextBox" id="date_absence_eleve_fin" name="date_absence_eleve_fin" value="<?php echo $dt_date_absence_eleve_fin->format('Y-m-d') ?>" />
                    soit <?php echo $nbre_demi_journees;?> demi-journées ouvrées.
                </h2>                 
                <?php
                if ($id_eleve !== null && $id_eleve != '') {
                    $eleve = EleveQuery::create()->filterById($id_eleve)->findOne();
                    $nom_eleve = $eleve->getNom();
                    $id_classe = $eleve->getClasse()->getId();
                }
                ?>
                Nom (facultatif) : <input dojoType="dijit.form.TextBox" type="text" style="width : 10em" name="nom_eleve" size="10" value="<?php echo $nom_eleve ?>" onChange="document.bilan_individuel.id_eleve.value='';"/>
                <input type="hidden" name="id_eleve" value="<?php echo $id_eleve ?>"/>
                <input type="hidden" name="affichage" value="<?php echo $affichage ?>"/>


                <?php
                //on affiche une boite de selection avec les classe
                if ((getSettingValue("GepiAccesAbsTouteClasseCpe") == 'yes' && $utilisateur->getStatut() == "cpe") || $utilisateur->getStatut() == "autre") {
                    $classe_col = ClasseQuery::create()->orderByNom()->orderByNomComplet()->find();
                } else {
                    $classe_col = $utilisateur->getClasses();
Esempio n. 10
0
	/**
	 * Get the associated Eleve object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     Eleve The associated Eleve object.
	 * @throws     PropelException
	 */
	public function getEleve(PropelPDO $con = null)
	{
		if ($this->aEleve === null && (($this->login !== "" && $this->login !== null))) {
			$this->aEleve = EleveQuery::create()
				->filterByEleveRegimeDoublant($this) // here
				->findOne($con);
			// Because this foreign key represents a one-to-one relationship, we will create a bi-directional association.
			$this->aEleve->setEleveRegimeDoublant($this);
		}
		return $this->aEleve;
	}
Esempio n. 11
0
				$tab_score[$num_ligne]["periodes"][$cpt_per]['chaine_title']=$chaine_title;
				$tab_score[$num_ligne]["periodes"][$cpt_per]['chaine']=$chaine;

				$cpt_per++;
			}
			$num_ligne++;
		}
	}
	else {
		$sql="SELECT DISTINCT e.nom, e.prenom, e.login FROM eleves e, j_eleves_classes jec WHERE jec.id_classe='$id_classe' AND jec.periode='$num_periode' AND jec.login=e.login ORDER BY e.nom, e.prenom;";
		//echo "$sql<br />";
		$res_ele=mysqli_query($GLOBALS["mysqli"], $sql);
		$num_ligne=0;
		while($lig_ele=mysqli_fetch_object($res_ele)) {
			$eleve = EleveQuery::create()->findOneByLogin($lig_ele->login);
			foreach($eleve->getPeriodeNotes() as $periode_note) {
				if ($periode_note->getDateDebut() == null) {
					//periode non commencee
					continue;
				}
				/*
				echo "<pre>";
				print_r($periode_note);
				echo "</pre>";
				*/
				if($periode_note->getNumPeriode()==$num_periode) {

					$tab_score['eleves'][$num_ligne]["login"]=$lig_ele->login;
					$tab_score['eleves'][$num_ligne]["prenom_nom"]=$lig_ele->prenom." ".$lig_ele->nom;
Esempio n. 12
0
} else {
    $classe_col = $utilisateur->getClasses();
}
if ($classe_col->isEmpty()) {
    echo '	<tr>
			<td colspan="'.($creneau_col->count() + 2).'">Aucune classe avec élève affecté n\'a été trouvée</td>
		</tr>';
}
foreach($classe_col as $classe) {
	echo '
		<tr>
			<td>'.$classe->getNom().'</td>
			<td colspan="'.($creneau_col->count() + 1).'"></td>
		</tr>
		';
	$eleve_query = EleveQuery::create()
		->orderByNom()
		->useAbsenceEleveSaisieQuery()->filterByPlageTemps($dt_debut, $dt_fin)->where('AbsenceEleveSaisie.DeletedAt is Null')->endUse()
		->filterByClasse($classe,$dt_date_absence_eleve)
        ->where('Eleve.DateSortie<?','0')
        ->orWhere('Eleve.DateSortie is NULL')
        ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve->format('U'))
		->distinct();

	if (getSettingValue("GepiAccesAbsTouteClasseCpe")=='yes' && $utilisateur->getStatut() == "cpe") {
	    //on ne filtre pas
	} else {
	    $eleve_query->filterByUtilisateurProfessionnel($utilisateur);
	}
	$eleve_col = $eleve_query->find();
	$cpt_eleve=0;
Esempio n. 13
0
	/**
	 *
	 * Renvoi sous forme d'un tableau la liste des eles d'une classe.
	 * Manually added for N:M relationship
	 *
	 * @periode integer numero de la periode
	 * @return     PropelObjectCollection Eleves[]
	 *
	 */
	public function getEleves($periode = null) {
		if ($periode === null) {
		    if ($this->getPeriodeNoteOuverte() != null) {
			$periode = $this->getPeriodeNoteOuverte()->getNumPeriode();
		    }
		}
		$query = EleveQuery::create();
		if ($periode !== null) {
		    $query->useJEleveGroupeQuery()->filterByGroupe($this)->filterByPeriode($periode)->endUse();
		} else {
		    $query->useJEleveGroupeQuery()->filterByGroupe($this)->endUse();
		}
		$query->orderByNom()->orderByPrenom()->distinct();
		return $query->find();
	}
    /*
    $mef = MefQuery::create()->findPk($id_mef);
    if ($mef == null) {
    	$message_enregistrement .= "Probleme avec l'id du mef : ".$_POST['id_mef']."<br/>";
    }
    */
    if (!array_key_exists($id_mef, $tab_mef)) {
        $message_enregistrement .= "Probleme avec l'id du mef : " . $_POST['id_mef'] . "<br/>";
    }
}
for ($i = 0; $i < $total_eleves; $i++) {
    //$id_eleve = $_POST['id_eleve_absent'][$i];
    //on test si l'eleve est enregistré absent
    if (!isset($_POST['active_mef_eleve'][$i])) {
        continue;
    }
    $eleve = EleveQuery::create()->findPk($_POST['active_mef_eleve'][$i]);
    if ($eleve == null) {
        $message_enregistrement .= "Probleme avec l'id eleve : " . $_POST['id_eleve_mef'][$i] . "<br/>";
        continue;
    }
    /*
    $eleve->setMef($mef);
    $eleve->save();
    */
    $sql = "UPDATE eleves SET mef_code='" . $id_mef . "' WHERE id_eleve='" . $_POST['active_mef_eleve'][$i] . "';";
    //echo "$sql<br />";
    $update = mysqli_query($GLOBALS["mysqli"], $sql);
    $message_enregistrement .= "Mef enregistré pour l'eleve : " . $eleve->getNom() . "<br/>";
}
include "associer_eleve_mef.php";
	/**
	 *
	 * Vérifie que l'ensemble de la table d'agrégation est à jours, pour tous les élèves.
	 * Corrige automatiquement la table pour un certain nombres d'élèves (précisé par $reparation_nbr),
	 * si plus d'élève que ce nombre sont en échec on renvoie faux
	 *
	 * @param      DateTime $dateDebut date de début pour la prise en compte du test
	 * @param      DateTime $dateFin date de fin pour la prise en compte du test
	 * @param      int $reparation_nbr nomble d'elve qu'on va mettre à jour avant de renvoyer faux
	 * @return		Boolean
	 *
	 */
	public static function checkSynchroAbsenceAgregationTable(DateTime $dateDebut = null, DateTime $dateFin = null, $reparation_nbr = 50) {
		global $mysqli;

		$debug = false;
		if ($debug) {
			print_r('AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable() called<br/>');
		}
		
		//on initialise les date clone qui seront manipulés dans l'algoritme, c'est nécessaire pour ne pas modifier les dates passées en paramêtre.
		$dateDebutClone = null;
		$dateFinClone = null;
		
		if ($dateDebut != null) {
			if ($debug) {
				print_r('Date début '.$dateDebut->format('Y-m-d').'<br/>');
			}
			$dateDebutClone = clone $dateDebut;
			$dateDebutClone->setTime(0,0);
		}
		if ($dateFin != null) {
			if ($debug) {
				print_r('Date fin '.$dateFin->format('Y-m-d').'<br/>');
			}
			$dateFinClone = clone $dateFin;
			$dateFinClone->setTime(23,59);
		}
		
		//on va vérifier que tout les marqueurs de fin des calculs de mise à jour sont bien présents pour tout les élèves
		$query = '
			SELECT distinct eleves.ID_ELEVE
			FROM `eleves` 
			LEFT JOIN (
				SELECT distinct ELEVE_ID
				FROM `a_agregation_decompte`
				WHERE date_demi_jounee = \'0001-01-01 00:00:00\') as a_agregation_decompte_selection
			ON (eleves.ID_ELEVE=a_agregation_decompte_selection.ELEVE_ID)
			WHERE a_agregation_decompte_selection.ELEVE_ID IS NULL';
		$result = mysqli_query($mysqli, $query);
		$num_rows = mysqli_num_rows($result);
		if ($num_rows>0 && $num_rows < $reparation_nbr) {
			if ($debug) {
				print_r('Il manque des marqueurs de fin de calcul<br/>');
			}
			//on va corriger la table pour ces élèves là
			while ($row = mysqli_fetch_array($result, MYSQL_NUM)) {
				$eleve = EleveQuery::create()->findOneById($row[0]);
				if ($debug) {
					print_r('recalcul pour l eleve '.$eleve->getId().'<br/>');
				}
				$eleve->checkAndUpdateSynchroAbsenceAgregationTable($dateDebutClone,$dateFinClone);
			}
			//après avoir corrigé on relance le test
			return(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable($dateDebutClone, $dateFinClone));
		} elseif ($num_rows>0) {
			if ($debug) {
				print_r('retourne faux : Il manque trop de marqueurs de fin de calcul<br/>');
			}
			return false;
		}
		
		//conditions sql sur les dates
		$date_saisies_selection = ' 1=1 ';
		$date_saisies_version_selection = ' 1=1 ';
		$date_agregation_selection = ' 1=1 ';
		if ($dateDebutClone != null) {
			$date_saisies_selection .= ' and a_saisies.fin_abs >= "'.$dateDebutClone->format('Y-m-d H:i:s').'" ';
			$date_saisies_version_selection .= ' and a_saisies_version.fin_abs >= "'.$dateDebutClone->format('Y-m-d H:i:s').'" ';
			$date_agregation_selection .= ' and a_agregation_decompte.DATE_DEMI_JOUNEE >= "'.$dateDebutClone->format('Y-m-d H:i:s').'" ';
		}
		if ($dateFinClone != null) {
			$date_saisies_selection .= ' and a_saisies.debut_abs <= "'.$dateFinClone->format('Y-m-d H:i:s').'" ';
			$date_saisies_version_selection .= ' and a_saisies_version.debut_abs <= "'.$dateFinClone->format('Y-m-d H:i:s').'" ';
			$date_agregation_selection .= ' and a_agregation_decompte.DATE_DEMI_JOUNEE <= "'.$dateFinClone->format('Y-m-d H:i:s').'" ';
		}
				
		//on va vérifier que tout les élèves ont bien le bon nombres entrées dans la table d'agrégation pour cette période
		if ($dateFinClone != null && $dateDebutClone != null) {
    		$query = '
    			SELECT eleves.ID_ELEVE, count(eleves.ID_ELEVE) as count_entrees
    			FROM `eleves` 
    			LEFT JOIN (
    				SELECT ELEVE_ID
    				FROM `a_agregation_decompte`
    				WHERE '.$date_agregation_selection.') as a_agregation_decompte_selection
    			ON (eleves.ID_ELEVE=a_agregation_decompte_selection.ELEVE_ID)
    			group by eleves.ID_ELEVE';
    		$result = mysqli_query($mysqli, $query);
    		$wrong_eleve = array();
    		$nbre_demi_journees=(int)(($dateFinClone->format('U')+3700-$dateDebutClone->format('U'))/(3600*12));
    		while($row = mysqli_fetch_array($result)){
    			if ($row[1]!=$nbre_demi_journees) {
    				if ($debug) {
    					print_r('Il manque des entrees pour l eleve '.$row[0].'<br/>');
    				}
    				$wrong_eleve[]=$row[0];
    			}
    		}
    		if (count($wrong_eleve) > 0 && count($wrong_eleve) < $reparation_nbr) {
    			//on va corriger la table pour ces élèves là
    			foreach($wrong_eleve as $idEleve) {
    				$eleve = EleveQuery::create()->findOneById($idEleve);
    				if ($debug) {
    					print_r('recalcul pour l eleve '.$eleve->getId().'<br/>');
    				}
    				$eleve->checkAndUpdateSynchroAbsenceAgregationTable($dateDebutClone,$dateFinClone);
    			}
    			//après avoir corrigé on relance le test
    			return(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable($dateDebutClone, $dateFinClone));
    		} elseif (!empty($wrong_eleve) > 0) {
    			if ($debug) {
    				print_r('retourne faux : Il manque des saisies sur '.count($wrong_eleve).' eleves<br/>');
    			}
    			return false;
    		}
		}
		
		
		// est-ce que la date updated_at de mise à jour de la table est bien postérieure aux date de modification des saisies et autres entrées
		$query = 'select union_date, updated_at, now() as now
		
		FROM
			(SELECT max(updated_at) as updated_at
			FROM a_agregation_decompte WHERE '.$date_agregation_selection.'	
			) as updated_at_select

		LEFT JOIN (
			(SELECT union_date from 
				(	SELECT GREATEST(IFNULL(max(updated_at),CAST(0 as DATETIME)),IFNULL(max(deleted_at),CAST(0 as DATETIME))) as union_date FROM a_saisies WHERE eleve_id is not null and '.$date_saisies_selection.'
				UNION ALL
					SELECT GREATEST(IFNULL(max(a_saisies_version.updated_at),CAST(0 as DATETIME)),IFNULL(max(a_saisies_version.deleted_at),CAST(0 as DATETIME))) as union_date FROM a_saisies_version WHERE a_saisies_version.eleve_id is not null and '.$date_saisies_version_selection.'
				UNION ALL
					SELECT GREATEST(IFNULL(max(a_traitements.updated_at),CAST(0 as DATETIME)),IFNULL(max(a_traitements.deleted_at),CAST(0 as DATETIME))) as union_date FROM a_traitements join j_traitements_saisies on a_traitements.id = j_traitements_saisies.a_traitement_id join a_saisies on a_saisies.id = j_traitements_saisies.a_saisie_id WHERE a_saisies.eleve_id is not null and '.$date_saisies_selection.'
				
				ORDER BY union_date DESC LIMIT 1
				) AS union_date_union_all_select
			) AS union_date_select
		) ON 1=1;';
			
		$result_query = mysqli_query($mysqli, $query);
		if ($result_query === false) {
			if ($debug) {
				echo $query;
			}
			echo 'Erreur sur la requete : '.mysqli_error($mysqli).'<br/>';
			return false;
		}
		$row = mysqli_fetch_array($result_query);
		mysqli_free_result($result_query);
		if ($debug) {
		    print_r($row);
		}
		if ($row['updated_at'] && $row['updated_at']  > $row['now']) {
			if ($debug) {
				print_r('faux : Date de mise a jour des agregation ne peut pas etre dans le futur<br/>');
			}
			return false;
		} else if ($row['union_date'] && $row['union_date']  > $row['now']) {
			if ($debug) {
				print_r('faux : Date de mise a jour des saisie ou traitements ne peut pas etre dans le futur<br/>');
			}
			return false;
		} else if ($row['union_date'] && (!$row['updated_at'] || $row['union_date'] > $row['updated_at'])){//si on a pas de updated_at dans la table d'agrégation, ou si la date de mise à jour des saisies est postérieure à updated_at ou 
			if ($debug) {
				print_r('retourne faux : Les date de mise a jour de la table sont trop anciennes<br/>');
			}
			return false;
		} else {
			if ($debug) {
				print_r('retourne vrai<br/>');
			}
			return true;//on ne vérifie pas le nombre d'entrée car les dates ne sont pas précisée
		}
	}
Esempio n. 16
0
	/**
	 * Get the associated Eleve object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     Eleve The associated Eleve object.
	 * @throws     PropelException
	 */
	public function getEleve(PropelPDO $con = null)
	{
		if ($this->aEleve === null && (($this->e_login !== "" && $this->e_login !== null))) {
			$this->aEleve = EleveQuery::create()
				->filterByJEleveCpe($this) // here
				->findOne($con);
			/* The following can be used additionally to
				guarantee the related object contains a reference
				to this object.  This level of coupling may, however, be
				undesirable since it could result in an only partially populated collection
				in the referenced object.
				$this->aEleve->addJEleveCpes($this);
			 */
		}
		return $this->aEleve;
	}
Esempio n. 17
0
 public function testEquals() {
     Propel::disableInstancePooling();
     $eleve1 = EleveQuery::create()->findOneByLogin('Florence Michu');
     usleep(1);
     $eleve1idem = EleveQuery::create()->findOneByLogin('Florence Michu');
     $this->assertEquals($eleve1, $eleve1idem);
     Propel::enableInstancePooling();
 }
Esempio n. 18
0
			if ((.5 == $tab_enseignement_final['heuredeb_dec'][$indiceSemaine]) && ($decalage == 0)) {
				// On est en première heure, il faut décaler le compteur
				$eleveCourant['sequence'][$cptSeq]['duree'] = 'Etude';
				$cptSeq++;
			}
			$eleveCourant['sequence'][$cptSeq]['duree'] = $duree;
			$eleveCourant['sequence'][$cptSeq]['heureDebut'] = $tableCreneau[intval ($cptSeq / 2)]['heureDebut'];
			$eleveCourant['sequence'][$cptSeq]['heureFin'] = $tableCreneau[intval ($cptSeq / 2)]['heureFin'];
			$eleveCourant['sequence'][$cptSeq]['id_creneau'] = intval ($cptSeq / 2);
			$eleveCourant['sequence'][$cptSeq]['id_cours'] = $tab_enseignement_final['id_cours'][$indiceSemaine];
			$eleveCourant['sequence'][$cptSeq]['id_groupe'] = $tab_enseignement_final['id_groupe'][$indiceSemaine];
			
			// on vérifie si une absence n'est pas déjà saisie			
			$eleveCourant['sequence'][$cptSeq]['style'] = '';
	//on cherche l'élève
	$eleve = EleveQuery::create()->findPk($eleveCourant['id']);
    if ($eleve == null) {
		$message_enregistrement = "Probleme avec l'id élève : ".$eleveCourant['id'];
		die($message_enregistrement);
    }
	
	$edt_creneau = $col_creneaux[intval ($cptSeq / 2)];
	$absences_du_creneau = $eleve->getAbsenceEleveSaisiesDuCreneau($edt_creneau, $dt_date_absence_eleve);
	
	if (!$absences_du_creneau->isEmpty()) {
		foreach ($absences_du_creneau as $abs_saisie) {
			if ($abs_saisie->getManquementObligationPresence()) {
				$eleveCourant['sequence'][$cptSeq]['style'] = 'fondRouge';
				break;
			}
		}
Esempio n. 19
0
	/**
	 * Removes this object from datastore and sets delete attribute.
	 *
	 * @param      PropelPDO $con
	 * @return     void
	 * @throws     PropelException
	 * @see        BaseObject::setDeleted()
	 * @see        BaseObject::isDeleted()
	 */
	public function delete(PropelPDO $con = null)
	{
		if ($this->isDeleted()) {
			throw new PropelException("This object has already been deleted.");
		}

		if ($con === null) {
			$con = Propel::getConnection(ElevePeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
		}

		$con->beginTransaction();
		try {
			$deleteQuery = EleveQuery::create()
				->filterByPrimaryKey($this->getPrimaryKey());
			$ret = $this->preDelete($con);
			if ($ret) {
				$deleteQuery->delete($con);
				$this->postDelete($con);
				$con->commit();
				$this->setDeleted(true);
			} else {
				$con->commit();
			}
		} catch (Exception $e) {
			$con->rollBack();
			throw $e;
		}
	}
Esempio n. 20
0
?>
" />
        <script type="text/javascript">
          Calendar.setup({
            inputField     :    "date_fin_toute_absence",     // id of the input field
            ifFormat       :    "%d/%m/%Y",      // format of the input field
            button         :    "date_fin_toute_absence",  // trigger for the calendar (button ID)
            align          :    "Bl",           // alignment (defaults to "Bl")
            singleClick    :    true
          });
        </script>
        <button type="submit">Changer</button>
      </h2>
    </form>
  <?php 
$eleve_col = EleveQuery::create()->orderByNom()->filterByUtilisateurProfessionnel($utilisateur)->useAbsenceEleveSaisieQuery()->filterByPlageTemps($dt_debut_toutes, $dt_fin_toutes)->endUse()->distinct()->find();
foreach ($eleve_col as $eleve) {
    $eleve_a_afficher = is_responsable($eleve->getLogin(), $utilisateur->getLogin(), "", "yy");
    if ($eleve_a_afficher) {
        ?>

        <br />
        <table style="border: 1px solid black;" cellpadding="5" cellspacing="5" title="Toutes les absences de <?php 
        echo $eleve->getNom() . ' ' . $eleve->getPrenom();
        ?>
">
    <?php 
        $creneau_col = EdtCreneauPeer::retrieveAllEdtCreneauxOrderByTime();
        ?>
        <tr>
          <th style="border: 1px solid black; background-color: gray; min-width: 300px; max-width: 500px;"><?php 
function releve_html($tab_rel, $i, $num_releve_specifie)
{
    global $RneEtablissement, $gepiSchoolName, $gepiSchoolAdress1, $gepiSchoolAdress2, $gepiSchoolZipCode, $gepiSchoolCity, $gepiSchoolPays, $gepiSchoolTel, $gepiSchoolFax, $gepiSchoolMail, $gepiYear, $logo_etab, $choix_periode, $chaine_coef, $releve_body_marginleft, $releve_largeurtableau, $releve_col_matiere_largeur, $releve_col_moyenne_largeur, $releve_cellpadding, $releve_cellspacing, $releve_ecart_entete, $releve_class_bordure, $releve_categ_font_size, $releve_categ_bgcolor, $genre_periode, $releve_affich_nom_etab, $releve_affich_adr_etab, $releve_mention_nom_court, $releve_mention_doublant, $releve_affiche_eleve_une_ligne, $releve_affiche_numero, $releve_affiche_etab, $activer_photo_releve, $releve_affiche_tel, $releve_affiche_fax, $releve_affiche_mail, $releve_intitule_app, $releve_affiche_INE_eleve, $releve_affiche_formule, $releve_formule_bas, $fichier_bulletin, $min_max_moyclas, $releve_addressblock_padding_right, $releve_addressblock_padding_top, $releve_addressblock_padding_text, $releve_addressblock_length, $releve_addressblock_font_size, $releve_addressblock_logo_etab_prop, $releve_addressblock_autre_prop, $releve_addressblock_classe_annee2, $releve_ecart_bloc_nom, $releve_addressblock_debug, $un_seul_bull_par_famille, $nb_releves, $type_etablissement, $type_etablissement2, $active_module_trombinoscopes;
    global $tab_devoirs_affiches_en_sous_conteneur;
    // Pour être pris en compte dans les boites/conteneurs:
    global $retour_a_la_ligne;
    global $rn_couleurs_alternees;
    $debug_releve = "n";
    $debug_ele_login = "******";
    $debug_id_groupe = 237;
    // Récupérer avant le nombre de bulletins à imprimer
    // - que le premier resp
    // - tous les resp si adr différentes
    // et le passer via global
    //================================
    // Pour retourner à la ligne entre les devoirs dans le cas où le nom ou l'appréciation du devoir est demandée:
    $retour_a_la_ligne = "y";
    // Passer à "n" pour désactiver le retour à la ligne.
    if (isset($tab_rel['rn_retour_ligne']) && ($tab_rel['rn_retour_ligne'] == 'y' || $tab_rel['rn_retour_ligne'] == 'n')) {
        $retour_a_la_ligne = $tab_rel['rn_retour_ligne'];
    }
    $gepi_denom_boite = getSettingValue('gepi_denom_boite');
    $gepi_denom_boite_genre = getSettingValue('gepi_denom_boite_genre');
    //echo "\$releve_largeurtableau=$releve_largeurtableau<br />";
    //if(!isset($releve_largeurtableau)) {
    //	$releve_largeurtableau="100%";
    //}
    /*
    $affiche_categories
    
    $avec_appreciation_devoir
    $avec_nom_devoir
    $avec_tous_coef_devoir
    
    $avec_coef_devoir
    $tab_releve[$id_classe]['rn_coefdev_si_diff']
    
    $tab_ele['groupe'][$j]['differents_coef']
    $affiche_coef
    
    $avec_date_devoir
    */
    $id_classe = $tab_rel['id_classe'];
    // Pour n'imprimer qu'un relevé dans le cas où on n'imprime pas les adresses des responsables
    $nb_releves = 1;
    unset($tab_adr_ligne1);
    unset($tab_adr_ligne2);
    unset($tab_adr_ligne3);
    //if ($tab_rel['affiche_adresse'] == 'y') {
    // On fait le travail sur $tab_adr_ligne1 même si on ne souhaite pas afficher l'adresse des responsables parce que c'est aussi cette démarche qui permet de déterminer $nb_releves
    // Préparation des lignes adresse responsable
    if (!isset($tab_rel['eleve'][$i]['resp'][0])) {
        $tab_adr_ligne1[0] = "<font color='red'><b>ADRESSE MANQUANTE</b></font>";
        $tab_adr_ligne2[0] = "";
        $tab_adr_ligne3[0] = "";
    } else {
        if (isset($tab_rel['eleve'][$i]['resp'][1])) {
            if (isset($tab_rel['eleve'][$i]['resp'][1]['adr1']) && isset($tab_rel['eleve'][$i]['resp'][1]['adr2']) && isset($tab_rel['eleve'][$i]['resp'][1]['adr3']) && isset($tab_rel['eleve'][$i]['resp'][1]['adr4']) && isset($tab_rel['eleve'][$i]['resp'][1]['cp']) && isset($tab_rel['eleve'][$i]['resp'][1]['commune'])) {
                // Le deuxième responsable existe et est renseigné
                if ($tab_rel['eleve'][$i]['resp'][0]['adr_id'] == $tab_rel['eleve'][$i]['resp'][1]['adr_id'] or my_strtolower($tab_rel['eleve'][$i]['resp'][0]['adr1']) == my_strtolower($tab_rel['eleve'][$i]['resp'][1]['adr1']) && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['adr2']) == my_strtolower($tab_rel['eleve'][$i]['resp'][1]['adr2']) && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['adr3']) == my_strtolower($tab_rel['eleve'][$i]['resp'][1]['adr3']) && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['adr4']) == my_strtolower($tab_rel['eleve'][$i]['resp'][1]['adr4']) && $tab_rel['eleve'][$i]['resp'][0]['cp'] == $tab_rel['eleve'][$i]['resp'][1]['cp'] && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['commune']) == my_strtolower($tab_rel['eleve'][$i]['resp'][1]['commune'])) {
                    // Les adresses sont identiques
                    $nb_releves = 1;
                    if ($tab_rel['eleve'][$i]['resp'][0]['nom'] != $tab_rel['eleve'][$i]['resp'][1]['nom'] && $tab_rel['eleve'][$i]['resp'][1]['nom'] != "") {
                        // Les noms des responsables sont différents
                        $tab_adr_ligne1[0] = $tab_rel['eleve'][$i]['resp'][0]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][0]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][0]['prenom'] . " et " . $tab_rel['eleve'][$i]['resp'][1]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][1]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][1]['prenom'];
                    } else {
                        if ($tab_rel['eleve'][$i]['resp'][0]['civilite'] != "" && $tab_rel['eleve'][$i]['resp'][1]['civilite'] != "") {
                            $tab_adr_ligne1[0] = $tab_rel['eleve'][$i]['resp'][0]['civilite'] . " et " . $tab_rel['eleve'][$i]['resp'][1]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][0]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][0]['prenom'];
                        } else {
                            $tab_adr_ligne1[0] = "M. et Mme " . $tab_rel['eleve'][$i]['resp'][0]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][0]['prenom'];
                        }
                    }
                    $tab_adr_ligne2[0] = $tab_rel['eleve'][$i]['resp'][0]['adr1'];
                    if ($tab_rel['eleve'][$i]['resp'][0]['adr2'] != "") {
                        $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr2'];
                    }
                    if ($tab_rel['eleve'][$i]['resp'][0]['adr3'] != "") {
                        $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr3'];
                    }
                    if ($tab_rel['eleve'][$i]['resp'][0]['adr4'] != "") {
                        $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr4'];
                    }
                    $tab_adr_ligne3[0] = $tab_rel['eleve'][$i]['resp'][0]['cp'] . " " . $tab_rel['eleve'][$i]['resp'][0]['commune'];
                    if ($tab_rel['eleve'][$i]['resp'][0]['pays'] != "" && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['pays']) != my_strtolower($gepiSchoolPays)) {
                        if ($tab_adr_ligne3[0] != " ") {
                            $tab_adr_ligne3[0] .= "<br />";
                        }
                        $tab_adr_ligne3[0] .= $tab_rel['eleve'][$i]['resp'][0]['pays'];
                    }
                } else {
                    // Les adresses sont différentes
                    //if ($un_seul_bull_par_famille!="oui") {
                    // On teste en plus si la deuxième adresse est valide
                    if ($un_seul_bull_par_famille != "oui" && $tab_rel['eleve'][$i]['resp'][1]['adr1'] != "" && $tab_rel['eleve'][$i]['resp'][1]['commune'] != "") {
                        $nb_releves = 2;
                    } else {
                        $nb_releves = 1;
                    }
                    for ($cpt = 0; $cpt < $nb_releves; $cpt++) {
                        if ($tab_rel['eleve'][$i]['resp'][$cpt]['civilite'] != "") {
                            $tab_adr_ligne1[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['prenom'];
                        } else {
                            $tab_adr_ligne1[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['prenom'];
                        }
                        $tab_adr_ligne2[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['adr1'];
                        if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr2'] != "") {
                            $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr2'];
                        }
                        if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr3'] != "") {
                            $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr3'];
                        }
                        if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr4'] != "") {
                            $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr4'];
                        }
                        $tab_adr_ligne3[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['cp'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['commune'];
                        if ($tab_rel['eleve'][$i]['resp'][$cpt]['pays'] != "" && my_strtolower($tab_rel['eleve'][$i]['resp'][$cpt]['pays']) != my_strtolower($gepiSchoolPays)) {
                            if ($tab_adr_ligne3[$cpt] != " ") {
                                $tab_adr_ligne3[$cpt] .= "<br />";
                            }
                            $tab_adr_ligne3[$cpt] .= $tab_rel['eleve'][$i]['resp'][$cpt]['pays'];
                        }
                    }
                }
            } else {
                // Il n'y a pas de deuxième adresse, mais il y aurait un deuxième responsable???
                // CA NE DEVRAIT PAS ARRIVER ETANT DONNé LA REQUETE EFFECTUEE QUI JOINT resp_pers ET resp_adr...
                if ($un_seul_bull_par_famille != "oui") {
                    $nb_releves = 2;
                } else {
                    $nb_releves = 1;
                }
                for ($cpt = 0; $cpt < $nb_releves; $cpt++) {
                    if ($tab_rel['eleve'][$i]['resp'][$cpt]['civilite'] != "") {
                        $tab_adr_ligne1[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['prenom'];
                    } else {
                        $tab_adr_ligne1[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['prenom'];
                    }
                    $tab_adr_ligne2[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['adr1'];
                    if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr2'] != "") {
                        $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr2'];
                    }
                    if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr3'] != "") {
                        $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr3'];
                    }
                    if ($tab_rel['eleve'][$i]['resp'][$cpt]['adr4'] != "") {
                        $tab_adr_ligne2[$cpt] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$cpt]['adr4'];
                    }
                    $tab_adr_ligne3[$cpt] = $tab_rel['eleve'][$i]['resp'][$cpt]['cp'] . " " . $tab_rel['eleve'][$i]['resp'][$cpt]['commune'];
                    if ($tab_rel['eleve'][$i]['resp'][$cpt]['pays'] != "" && my_strtolower($tab_rel['eleve'][$i]['resp'][$cpt]['pays']) != my_strtolower($gepiSchoolPays)) {
                        if ($tab_adr_ligne3[$cpt] != " ") {
                            $tab_adr_ligne3[$cpt] .= "<br />";
                        }
                        $tab_adr_ligne3[$cpt] .= $tab_rel['eleve'][$i]['resp'][$cpt]['pays'];
                    }
                }
            }
        } else {
            // Il n'y a pas de deuxième responsable
            $nb_releves = 1;
            if ($tab_rel['eleve'][$i]['resp'][0]['civilite'] != "") {
                $tab_adr_ligne1[0] = $tab_rel['eleve'][$i]['resp'][0]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][0]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][0]['prenom'];
            } else {
                $tab_adr_ligne1[0] = $tab_rel['eleve'][$i]['resp'][0]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][0]['prenom'];
            }
            $tab_adr_ligne2[0] = $tab_rel['eleve'][$i]['resp'][0]['adr1'];
            if ($tab_rel['eleve'][$i]['resp'][0]['adr2'] != "") {
                $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr2'];
            }
            if ($tab_rel['eleve'][$i]['resp'][0]['adr3'] != "") {
                $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr3'];
            }
            if ($tab_rel['eleve'][$i]['resp'][0]['adr4'] != "") {
                $tab_adr_ligne2[0] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][0]['adr4'];
            }
            $tab_adr_ligne3[0] = $tab_rel['eleve'][$i]['resp'][0]['cp'] . " " . $tab_rel['eleve'][$i]['resp'][0]['commune'];
            if ($tab_rel['eleve'][$i]['resp'][0]['pays'] != "" && my_strtolower($tab_rel['eleve'][$i]['resp'][0]['pays']) != my_strtolower($gepiSchoolPays)) {
                if ($tab_adr_ligne3[0] != " ") {
                    $tab_adr_ligne3[0] .= "<br />";
                }
                $tab_adr_ligne3[0] .= $tab_rel['eleve'][$i]['resp'][0]['pays'];
            }
        }
    }
    // Envoi du bulletin à des resp_legal=0
    if (isset($tab_rel['eleve'][$i]['resp'][2])) {
        //$indice_tab_adr=count($tab_adr_ligne1);
        foreach ($tab_rel['eleve'][$i]['resp'] as $key => $value) {
            if ($key >= 2) {
                //echo "DEBUG: \$key=$key<br />";
                if ($tab_rel['eleve'][$i]['resp'][$key]['civilite'] != "") {
                    $tab_adr_ligne1[$nb_releves] = $tab_rel['eleve'][$i]['resp'][$key]['civilite'] . " " . $tab_rel['eleve'][$i]['resp'][$key]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$key]['prenom'];
                } else {
                    $tab_adr_ligne1[$nb_releves] = $tab_rel['eleve'][$i]['resp'][$key]['nom'] . " " . $tab_rel['eleve'][$i]['resp'][$key]['prenom'];
                }
                $tab_adr_ligne2[$nb_releves] = $tab_rel['eleve'][$i]['resp'][$key]['adr1'];
                if ($tab_rel['eleve'][$i]['resp'][$key]['adr2'] != "") {
                    $tab_adr_ligne2[$nb_releves] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$key]['adr2'];
                }
                if ($tab_rel['eleve'][$i]['resp'][$key]['adr3'] != "") {
                    $tab_adr_ligne2[$nb_releves] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$key]['adr3'];
                }
                if ($tab_rel['eleve'][$i]['resp'][$key]['adr4'] != "") {
                    $tab_adr_ligne2[$nb_releves] .= "<br />\n" . $tab_rel['eleve'][$i]['resp'][$key]['adr4'];
                }
                $tab_adr_ligne3[$nb_releves] = $tab_rel['eleve'][$i]['resp'][$key]['cp'] . " " . $tab_rel['eleve'][$i]['resp'][$key]['commune'];
                if ($tab_rel['eleve'][$i]['resp'][$key]['pays'] != "" && my_strtolower($tab_rel['eleve'][$i]['resp'][$key]['pays']) != my_strtolower($gepiSchoolPays)) {
                    if ($tab_adr_ligne3[$nb_releves] != " ") {
                        $tab_adr_ligne3[$nb_releves] .= "<br />";
                    }
                    $tab_adr_ligne3[$nb_releves] .= $tab_rel['eleve'][$i]['resp'][$key]['pays'];
                }
                $nb_releves++;
            }
        }
    }
    //}
    // Fin de la préparation des lignes adresse responsable
    //echo "\$nb_releves=$nb_releves<br />";
    //echo "\$num_releve_specifie=$num_releve_specifie<br />";
    $num_premier_releve = 0;
    if ($num_releve_specifie != -1) {
        $num_premier_releve = $num_releve_specifie;
        $nb_releves = $num_releve_specifie + 1;
    }
    //echo "\$num_premier_releve=$num_premier_releve<br />";
    //echo "\$nb_releves=$nb_releves<br />";
    // Début des bulletins
    for ($num_releve = $num_premier_releve; $num_releve < $nb_releves; $num_releve++) {
        //echo "\$num_releve=$num_releve<br />";
        //echo "\$i=$i<br />";
        //echo "\$tab_rel['eleve'][$i]['nom']=".$tab_rel['eleve'][$i]['nom']."<br />";
        // Page de garde
        //if ( $affiche_page_garde == 'yes' OR $tab_rel['affiche_adresse'] == 'y') {
        if ($tab_rel['affiche_adresse'] == 'y') {
            // Affectation des lignes adresse responsable avec les lignes correspondant au bulletin en cours
            $ligne1 = $tab_adr_ligne1[$num_releve];
            $ligne2 = $tab_adr_ligne2[$num_releve];
            $ligne3 = $tab_adr_ligne3[$num_releve];
            // Info affichée en haut de la page de garde
            $info_eleve_page_garde = "Elève: " . $tab_rel['eleve'][$i]['nom'] . " " . $tab_rel['eleve'][$i]['prenom'] . ", " . $tab_rel['eleve'][$i]['classe'];
            //if ($affiche_page_garde == "yes") {
            //	include "./page_garde.php";
            //	// Saut de page
            //	echo "<p class='saut'>&nbsp;</p>\n";
            //}
        }
        if ($tab_rel['affiche_adresse'] == 'y') {
            //-------------------------------
            // Maintenant, on affiche l'en-tête : Les données de l'élève, le bloc adresse responsable et l'adresse du lycée.
            //-------------------------------
            echo "\n<!-- Début du cadre entête -->\n";
            echo "<div";
            if ($releve_addressblock_debug == "y") {
                echo " style='border:1px solid red;'";
            }
            echo ">\n";
            // Pour éviter que le bloc-adresse ne remonte au-delà du saut de page:
            echo "<div style='clear: both; font-size: xx-small;'>&nbsp;</div>\n";
            // Cadre adresse du responsable:
            echo "<div style='float:right;\nwidth:" . $releve_addressblock_length . "mm;\npadding-top:" . $releve_addressblock_padding_top . "mm;\npadding-bottom:" . $releve_addressblock_padding_text . "mm;\npadding-right:" . $releve_addressblock_padding_right . "mm;\n";
            if ($releve_addressblock_debug == "y") {
                echo "border: 1px solid blue;\n";
            }
            echo "font-size: " . $releve_addressblock_font_size . "pt;\n'>\n<div style='text-align:left;'>\n{$ligne1}<br />\n{$ligne2}<br />\n{$ligne3}\n</div>\n</div>\n";
            // Cadre contenant le tableau Logo+Ad_etab et le nom, prénom,... de l'élève:
            echo "<div style='float:left;\nleft:0px;\ntop:0px;\nwidth:" . $releve_addressblock_logo_etab_prop . "%;\n";
            if ($releve_addressblock_debug == "y") {
                echo "border: 1px solid green;\n";
            }
            echo "'>\n";
            echo "<table";
            if ($releve_addressblock_debug == "y") {
                echo " border='1'";
            }
            echo " summary='Tableau des informations établissement'";
            echo ">\n";
            echo "<tr>\n";
            $nom_fic_logo = $logo_etab;
            $nom_fic_logo_c = "../images/" . $nom_fic_logo;
            if ($nom_fic_logo != '' and file_exists($nom_fic_logo_c)) {
                echo "<td style=\"text-align: left;\"><img src=\"" . $nom_fic_logo_c . "\" border=\"0\" alt=\"Logo\" /></td>\n";
            }
            echo "<td style='text-align: center;'>";
            echo "<p class='bulletin'>";
            if ($releve_affich_nom_etab == "y") {
                echo "<span class=\"releve_grand\">" . $gepiSchoolName . "</span>";
            }
            if ($releve_affich_adr_etab == "y") {
                echo "<br />\n" . $gepiSchoolAdress1 . "<br />\n" . $gepiSchoolAdress2 . "<br />\n" . $gepiSchoolZipCode . " " . $gepiSchoolCity;
                if ($releve_affiche_tel == "y") {
                    echo "<br />\nTel: " . $gepiSchoolTel;
                }
                if ($releve_affiche_fax == "y") {
                    echo "<br />\nFax: " . $gepiSchoolFax;
                }
                if ($releve_affiche_mail == "y") {
                    echo "<br />\nEmail: " . $gepiSchoolMail;
                }
            }
            echo "</p>\n";
            echo "</td>\n";
            echo "</tr>\n";
            echo "</table>\n";
            echo "<br />";
            // On rajoute des lignes vides
            $n = 0;
            while ($n < $releve_ecart_bloc_nom) {
                echo "<br />";
                $n++;
            }
            if ($activer_photo_releve == 'y' and $active_module_trombinoscopes == 'y') {
                $photo = nom_photo($tab_rel['eleve'][$i]['elenoet']);
                if ($photo) {
                    if (file_exists($photo)) {
                        $dimphoto = redimensionne_image_releve($photo);
                        echo '<img src="' . $photo . '" style="width: ' . $dimphoto[0] . 'px; height: ' . $dimphoto[1] . 'px; border: 0px; border-right: 3px solid #FFFFFF; float: left;" alt="" />' . "\n";
                    }
                }
            }
            //affichage des données sur une seule ligne ou plusieurs
            if ($releve_affiche_eleve_une_ligne == 'no') {
                // sur plusieurs lignes
                echo "<p class='bulletin'>\n";
                echo "<b><span class=\"releve_grand\">" . $tab_rel['eleve'][$i]['nom'] . " " . $tab_rel['eleve'][$i]['prenom'] . "</span></b><br />";
                echo "Né";
                if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                    echo "e";
                }
                echo "&nbsp;le&nbsp;" . $tab_rel['eleve'][$i]['naissance'];
                //Eric Ajout
                echo "<br />";
                if ($tab_rel['eleve'][$i]['regime'] == "d/p") {
                    echo "Demi-pensionnaire";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "ext.") {
                    echo "Externe";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "int.") {
                    echo "Interne";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "i-e") {
                    echo "Interne&nbsp;externé";
                    if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                        echo "e";
                    }
                }
                //Eric Ajout
                if ($releve_mention_doublant == 'yes') {
                    if ($tab_rel['eleve'][$i]['doublant'] == 'R') {
                        echo "<br />";
                        echo "Redoublant";
                        if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                            echo "e";
                        }
                    }
                }
                if ($releve_mention_nom_court == 'no') {
                    //Eric Ajout et supp
                    //echo "<BR />";
                    //echo ", $current_classe";
                } else {
                    echo "<br />";
                    echo $tab_rel['eleve'][$i]['classe'];
                }
            } else {
                //sur une ligne
                echo "<p class='bulletin'>\n";
                echo "<b><span class=\"releve_grand\">" . $tab_rel['eleve'][$i]['nom'] . " " . $tab_rel['eleve'][$i]['prenom'] . "</span></b><br />";
                echo "Né";
                if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                    echo "e";
                }
                echo "&nbsp;le&nbsp;" . $tab_rel['eleve'][$i]['naissance'];
                if ($tab_rel['eleve'][$i]['regime'] == "d/p") {
                    echo ", Demi-pensionnaire";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "ext.") {
                    echo ", Externe";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "int.") {
                    echo ", Interne";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "i-e") {
                    echo ", Interne&nbsp;externé";
                    if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                        echo "e";
                    }
                }
                if ($releve_mention_doublant == 'yes') {
                    if ($tab_rel['eleve'][$i]['doublant'] == 'R') {
                        echo ", Redoublant";
                        if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                            echo "e";
                        }
                    }
                }
                if ($releve_mention_nom_court == 'yes') {
                    echo ", " . $tab_rel['eleve'][$i]['classe'];
                }
            }
            if ($releve_affiche_INE_eleve == "y") {
                echo "<br />\n";
                echo "Numéro INE: " . $tab_rel['eleve'][$i]['no_gep'];
            }
            if ($releve_affiche_etab == "y") {
                if (isset($tab_rel['eleve'][$i]['etab_nom']) && $tab_rel['eleve'][$i]['etab_nom'] != '') {
                    echo "<br />\n";
                    if ($tab_rel['eleve'][$i]['etab_id'] != '990') {
                        if ($RneEtablissement != $tab_rel['eleve'][$i]['etab_id']) {
                            echo "Etablissement d'origine : ";
                            echo $tab_rel['eleve'][$i]['etab_niveau_nom'] . " " . $tab_rel['eleve'][$i]['etab_type'] . " " . $tab_rel['eleve'][$i]['etab_nom'] . " (" . $tab_rel['eleve'][$i]['etab_cp'] . " " . $tab_rel['eleve'][$i]['etab_ville'] . ")\n";
                        }
                    } else {
                        echo "Etablissement d'origine : ";
                        echo "hors de France\n";
                    }
                }
            }
            echo "</p>\n";
            echo "</div>\n";
            //echo "<spacer type='vertical' size='10'>";
            // Tableau contenant le nom de la classe, l'année et la période.
            echo "<table width='" . $releve_addressblock_autre_prop . "%' ";
            if ($releve_addressblock_debug == "y") {
                echo "border='1' ";
            }
            echo "summary=\"Tableau de l'entête\" ";
            echo "cellspacing='" . $releve_cellspacing . "' cellpadding='" . $releve_cellpadding . "'>\n";
            echo "<tr>\n";
            echo "<td class='releve_empty'>\n";
            echo "&nbsp;\n";
            echo "</td>\n";
            echo "<td style='width:" . $releve_addressblock_classe_annee2 . "%;'>\n";
            echo "<p class='bulletin' align='center'><span class=\"releve_grand\">Classe de " . $tab_rel['eleve'][$i]['classe_nom_complet'] . "<br />Année scolaire " . $gepiYear . "</span><br />\n";
            if ($choix_periode == 'intervalle') {
                echo "Relevé de notes du <b>" . $tab_rel['intervalle']['debut'] . "</b> au <b>" . $tab_rel['intervalle']['fin'] . "</b></span>";
            } else {
                echo "<b>" . $tab_rel['nom_periode'] . "</b> : Relevé de notes";
            }
            echo "</td>\n";
            echo "</tr>\n";
            echo "</table>\n";
            // Pour que le tableau des appréciations ne vienne pas s'encastrer dans les DIV float:
            echo "<div style='clear: both; font-size: xx-small;'>&nbsp;</div>\n";
            // Fin du cadre entête:
            echo "</div>\n";
            echo "<!-- Fin du cadre entête -->\n\n";
        } else {
            //-------------------------------
            // Maintenant, on affiche l'en-tête : Les données de l'élève, et l'adresse du lycée.
            // sans bloc adresse responsable
            //-------------------------------
            echo "<div class='center'>\n";
            echo "<table width='{$releve_largeurtableau}' border='0' cellspacing='" . $releve_cellspacing . "' cellpadding='" . $releve_cellpadding . "'";
            echo " summary=\"Tableau de l'entête\"";
            echo ">\n";
            echo "<tr>\n";
            echo "<td style=\"width: 30%;\">\n";
            if ($activer_photo_releve == 'y' and $active_module_trombinoscopes == 'y') {
                $photo = nom_photo($tab_rel['eleve'][$i]['elenoet']);
                if ($photo) {
                    if (file_exists($photo)) {
                        $dimphoto = redimensionne_image_releve($photo);
                        echo '<img src="' . $photo . '" style="width: ' . $dimphoto[0] . 'px; height: ' . $dimphoto[1] . 'px; border: 0px; border-right: 3px solid #FFFFFF; float: left;" alt="" />' . "\n";
                    }
                }
            }
            //affichage des données sur une seule ligne ou plusieurs
            if ($releve_affiche_eleve_une_ligne == 'no') {
                // sur plusieurs lignes
                echo "<p class='bulletin'>\n";
                echo "<b><span class=\"releve_grand\">" . $tab_rel['eleve'][$i]['nom'] . " " . $tab_rel['eleve'][$i]['prenom'] . "</span></b><br />";
                echo "Né";
                if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                    echo "e";
                }
                echo "&nbsp;le&nbsp;" . $tab_rel['eleve'][$i]['naissance'];
                //Eric Ajout
                echo "<br />";
                if ($tab_rel['eleve'][$i]['regime'] == "d/p") {
                    echo "Demi-pensionnaire";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "ext.") {
                    echo "Externe";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "int.") {
                    echo "Interne";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "i-e") {
                    echo "Interne&nbsp;externé";
                    if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                        echo "e";
                    }
                }
                //Eric Ajout
                if ($releve_mention_doublant == 'yes') {
                    if ($tab_rel['eleve'][$i]['doublant'] == 'R') {
                        echo "<br />";
                        echo "Redoublant";
                        if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                            echo "e";
                        }
                    }
                }
                if ($releve_mention_nom_court == 'no') {
                    //Eric Ajout et supp
                    //echo "<BR />";
                    //echo ", $current_classe";
                } else {
                    echo "<br />";
                    echo $tab_rel['eleve'][$i]['classe'];
                }
            } else {
                //sur une ligne
                echo "<p class='bulletin'>\n";
                echo "<b><span class=\"releve_grand\">" . $tab_rel['eleve'][$i]['nom'] . " " . $tab_rel['eleve'][$i]['prenom'] . "</span></b><br />";
                echo "Né";
                if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                    echo "e";
                }
                echo "&nbsp;le&nbsp;" . $tab_rel['eleve'][$i]['naissance'];
                if ($tab_rel['eleve'][$i]['regime'] == "d/p") {
                    echo ", Demi-pensionnaire";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "ext.") {
                    echo ", Externe";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "int.") {
                    echo ", Interne";
                }
                if ($tab_rel['eleve'][$i]['regime'] == "i-e") {
                    echo ", Interne&nbsp;externé";
                    if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                        echo "e";
                    }
                }
                //Eric Ajout
                if ($releve_mention_doublant == 'yes') {
                    if ($tab_rel['eleve'][$i]['doublant'] == 'R') {
                        echo ", Redoublant";
                        if (mb_strtoupper($tab_rel['eleve'][$i]['sexe']) == "F") {
                            echo "e";
                        }
                    }
                }
                if ($releve_mention_nom_court == 'yes') {
                    echo ", " . $tab_rel['eleve'][$i]['classe'];
                }
            }
            if ($releve_affiche_INE_eleve == "y") {
                echo "<br />\n";
                echo "Numéro INE: " . $tab_rel['eleve'][$i]['no_gep'];
            }
            if ($releve_affiche_etab == "y") {
                if (isset($tab_rel['eleve'][$i]['etab_nom']) && $tab_rel['eleve'][$i]['etab_nom'] != '') {
                    echo "<br />\n";
                    if ($tab_rel['eleve'][$i]['etab_id'] != '990') {
                        if ($RneEtablissement != $tab_rel['eleve'][$i]['etab_id']) {
                            echo "Etablissement d'origine : ";
                            echo $tab_rel['eleve'][$i]['etab_niveau_nom'] . " " . $tab_rel['eleve'][$i]['etab_type'] . " " . $tab_rel['eleve'][$i]['etab_nom'] . " (" . $tab_rel['eleve'][$i]['etab_cp'] . " " . $tab_rel['eleve'][$i]['etab_ville'] . ")\n";
                        }
                    } else {
                        echo "Etablissement d'origine : ";
                        echo "hors de France\n";
                    }
                }
            }
            echo "</p></td>\n<td style=\"width: 40%;text-align: center;\">\n";
            if ($tab_rel['affiche_adresse'] != "y") {
                echo "<p class='bulletin'><span class=\"releve_grand\">Classe de " . $tab_rel['eleve'][$i]['classe_nom_complet'] . "<br />Année scolaire " . $gepiYear . "</span><br />\n";
                if ($choix_periode == 'intervalle') {
                    echo "Relevé de notes du <b>" . $tab_rel['intervalle']['debut'] . "</b> au <b>" . $tab_rel['intervalle']['fin'] . "</b>";
                } else {
                    echo "<b>" . $tab_rel['nom_periode'] . "</b> : Relevé de notes";
                }
                echo "</p>\n";
            } else {
                echo "&nbsp;";
            }
            $nom_fic_logo = $logo_etab;
            $nom_fic_logo_c = "../images/" . $nom_fic_logo;
            if ($nom_fic_logo != '' and file_exists($nom_fic_logo_c)) {
                echo "</td>\n<td style=\"text-align: right;\"><img src=\"" . $nom_fic_logo_c . "\" border=\"0\" alt=\"Logo\" />";
            } else {
                echo "</td>\n<td>&nbsp;";
            }
            echo "</td>\n";
            echo "<td style=\"width: 20%;text-align: center;\">";
            echo "<p class='bulletin'>";
            if ($releve_affich_nom_etab == "y") {
                echo "<span class=\"releve_grand\">" . $gepiSchoolName . "</span>";
            }
            if ($releve_affich_adr_etab == "y") {
                //echo "<span class=\"releve_grand\">".$gepiSchoolName."</span>";
                if ($releve_affich_nom_etab == "y") {
                    echo "<br />\n";
                }
                echo $gepiSchoolAdress1 . "<br />\n";
                echo $gepiSchoolAdress2 . "<br />\n";
                echo $gepiSchoolZipCode . " " . $gepiSchoolCity;
                if ($releve_affiche_tel == "y") {
                    echo "<br />\nTel: " . $gepiSchoolTel;
                }
                if ($releve_affiche_fax == "y") {
                    echo "<br />\nFax: " . $gepiSchoolFax;
                }
                if ($releve_affiche_mail == "y") {
                    echo "<br />\nEmail: " . $gepiSchoolMail;
                }
            }
            echo "</p>\n";
            echo "</td>\n</tr>\n</table>\n";
            echo "</div>\n";
            //-------------------------------
            // Fin de l'en-tête
        }
        // On rajoute des lignes vides
        $n = 0;
        while ($n < $releve_ecart_entete) {
            echo "<br />";
            $n++;
        }
        //=============================================
        // Tableau des matieres/devoirs/notes/appréciations
        //include ($fichier_bulletin);
        if (!isset($tab_rel['eleve'][$i]['groupe']) || count($tab_rel['eleve'][$i]['groupe']) == 0) {
            echo "<div class='noprint' style='background-color: white; color: red; border: 1px solid black;padding: 1em;'>Aucun enseignement n'est associé à l'élève";
            if ($choix_periode == 'intervalle') {
                echo ",<br />ou l'élève n'a aucune note sur l'intervalle de dates choisi (<i>en demandant l'affichage des relevés pour la période entière, les matières sont affichées, même si aucune note n'a été saisie</i>).</p>";
            }
            echo ".<br />\n";
            if ($tab_rel['affiche_categories']) {
                echo "<br />Si vous pensez que c'est anormal, c'est peut-être dû à un mauvais paramétrage des catégories de matières.<br />";
                //echo "Il est possible de contrôler les catégories de matières en administrateur dans Gestion générale/Nettoyage des tables pour corriger ce problème.\n";
                echo "Il est possible de corriger le problème en administrateur en refaisant le paramétrage des catégories de matières dans 'Gestion des bases/Gestion des classes/&lt;Une_classe&gt; Paramètres' ou dans 'Gestion des bases/Gestion des classes/Paramétrage par lots'.\n";
            }
            echo "</div>\n";
        }
        // On initialise le tableau :
        $larg_tab = $releve_largeurtableau;
        $larg_col1 = $releve_col_matiere_largeur;
        if ($tab_rel['rn_col_moy'] != "y") {
            $larg_col2 = $larg_tab - $larg_col1;
        } else {
            $larg_col1b = $releve_col_moyenne_largeur;
            $larg_col2 = $larg_tab - $larg_col1b - $larg_col1;
        }
        //echo "<table width=\"$larg_tab\" class='boireaus' border=1 cellspacing=3 cellpadding=3>\n";
        echo "<div class='center'>\n";
        echo "<table width=\"{$larg_tab}\"{$releve_class_bordure} border='1' cellspacing='3' cellpadding='3' ";
        echo "summary=\"Tableau des notes\"";
        if (isset($rn_couleurs_alternees) && $rn_couleurs_alternees == "y") {
            echo " style='background-color:white;'";
        }
        echo ">\n";
        echo "<tr>\n";
        echo "<th style=\"width: " . $larg_col1 . "px\" class='releve'><b>Matière</b><br /><i>Professeur</i></th>\n";
        if ($tab_rel['rn_col_moy'] == "y") {
            echo "<th style=\"width: " . $larg_col1b . "px\" class='releve'>Moy.</th>\n";
        }
        echo "<th style=\"width: " . $larg_col2 . "px\" class='releve'>Notes sur 20</th>\n";
        echo "</tr>\n";
        // Boucle groupes
        $j = 0;
        $prev_cat_id = null;
        $alt = 1;
        if (isset($tab_rel['eleve'][$i]['groupe']) && count($tab_rel['eleve'][$i]['groupe']) > 0) {
            while ($j < count($tab_rel['eleve'][$i]['groupe'])) {
                if ($choix_periode != 'intervalle' || $choix_periode == 'intervalle' && isset($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {
                    //count($tab_rel['eleve'][$i]['groupe'][$j]['devoir']>0)))) {
                    if ($tab_rel['affiche_categories']) {
                        // On regarde si on change de catégorie de matière
                        if ($tab_rel['eleve'][$i]['groupe'][$j]['id_cat'] != $prev_cat_id) {
                            $prev_cat_id = $tab_rel['eleve'][$i]['groupe'][$j]['id_cat'];
                            echo "<tr>\n";
                            if ($tab_rel['rn_col_moy'] == "y") {
                                $colspan = 3;
                            } else {
                                $colspan = 2;
                            }
                            echo "<td colspan='{$colspan}'>\n\n";
                            //echo "<p style='padding: 0; margin:0; font-size: 10px;'>".$tab_rel['categorie'][$prev_cat_id]."</p>\n";
                            echo "<p style='padding: 0; margin:0; font-size: " . $releve_categ_font_size . "px;";
                            if ($releve_categ_bgcolor != "") {
                                echo "background-color:{$releve_categ_bgcolor};";
                            }
                            echo "'>" . $tab_rel['categorie'][$prev_cat_id] . "</p>\n";
                            echo "</td>\n";
                            echo "</tr>\n";
                        }
                    }
                    $alt = $alt * -1;
                    if (isset($rn_couleurs_alternees) && $rn_couleurs_alternees == "y") {
                        echo "<tr class='lig{$alt}'>\n";
                    } else {
                        echo "<tr>\n";
                    }
                    echo "<td class='releve'>\n";
                    echo "<b>" . $tab_rel['eleve'][$i]['groupe'][$j]['matiere_nom_complet'] . "</b>";
                    //echo $tab_rel['eleve'][$i]['groupe'][$j]['id_groupe'];
                    $k = 0;
                    // Il peut y avoir une matière sans prof, avec une note saisie en compte secours
                    if (isset($tab_rel['eleve'][$i]['groupe'][$j]['prof_login'])) {
                        while ($k < count($tab_rel['eleve'][$i]['groupe'][$j]['prof_login'])) {
                            echo "<br /><i>" . affiche_utilisateur(htmlspecialchars($tab_rel['eleve'][$i]['groupe'][$j]['prof_login'][$k]), $id_classe) . "</i>";
                            $k++;
                        }
                    }
                    //echo "<br />\$tab_rel['rn_col_moy']=".$tab_rel['rn_col_moy'];
                    echo "</td>\n";
                    if ($tab_rel['rn_col_moy'] == "y") {
                        echo "<td class='releve'>\n";
                        if (!isset($tab_rel['eleve'][$i]['groupe'][$j]['moyenne'][$tab_rel['num_periode']])) {
                            echo "&nbsp;";
                        } else {
                            if ($tab_rel['verouiller'] == 'N') {
                                echo "<span title=\"ATTENTION : La période n'est pas close.\n                    La moyenne affichée est susceptible de\n                    changer d'ici à la fin de la période.\n                    Des notes peuvent encore être ajoutées,\n                    des coefficients de devoirs peuvent être\n                    modifiés,...\">";
                                echo $tab_rel['eleve'][$i]['groupe'][$j]['moyenne'][$tab_rel['num_periode']];
                                echo "</span>";
                            } else {
                                echo $tab_rel['eleve'][$i]['groupe'][$j]['moyenne'][$tab_rel['num_periode']];
                            }
                        }
                        echo "</td>\n";
                    }
                    echo "<td class='releve'>\n";
                    // Boucle sur la liste des devoirs
                    if (!isset($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {
                        echo "&nbsp;";
                        //echo "\$tab_rel['eleve'][$i]['groupe'][$j]['devoir'] n'est pas affecté.<br />";
                    } else {
                        if ($debug_releve == "y" && $tab_rel['eleve'][$i]['login'] == $debug_ele_login && $tab_rel['eleve'][$i]['groupe'][$j]['id_groupe'] == $debug_id_groupe) {
                            if (isset($tab_rel['eleve'][$i]['groupe'][$j]['existence_sous_conteneurs'])) {
                                echo "<span style='color:red'>\$tab_rel['eleve'][{$i}]['groupe'][{$j}]['existence_sous_conteneurs']=" . $tab_rel['eleve'][$i]['groupe'][$j]['existence_sous_conteneurs'] . "</span><br />";
                            } else {
                                echo "<span style='color:red'>Pas de sous-conteneur</span><br />";
                            }
                        }
                        $tab_devoirs_affiches_en_sous_conteneur = array();
                        //if((isset($tab_rel['eleve'][$i]['groupe'][$j]['affiche_boites']))&&($tab_rel['eleve'][$i]['groupe'][$j]['affiche_boites']=='y')) {
                        //if((isset($tab_rel['eleve'][$i]['groupe'][$j]['id_cn']['existence_sous_conteneurs']))&&($tab_rel['eleve'][$i]['groupe'][$j]['id_cn']['existence_sous_conteneurs']=='y')) {
                        if (isset($tab_rel['eleve'][$i]['groupe'][$j]['existence_sous_conteneurs']) && $tab_rel['eleve'][$i]['groupe'][$j]['existence_sous_conteneurs'] == 'y') {
                            //echo "Il y a des sous-conteneurs<br />";
                            $premier_cn = "y";
                            $temoin_affichage_de_conteneur = "n";
                            $temoin_conteneur = 0;
                            // Parcours des carnets de notes (un seule si une période est choisie, mais peut-être plusieurs si on a un intervalle de dates)
                            foreach ($tab_rel['eleve'][$i]['groupe'][$j]['id_cn'] as $tmp_id_cn => $tab_id_cn) {
                                // On ne récupère que les conteneurs de niveau 1, pas la racine... et si on a plusieurs périodes, on peut récupérer les boites d'une autre période... d'où des tests par la suite sur ce qu'il convient d'afficher.
                                unset($tmp_tab);
                                $tmp_tab[] = $tmp_id_cn;
                                //if($temoin_conteneur>0) {echo "<br />\n";}
                                if ($premier_cn != "y") {
                                    echo "<br />\n";
                                }
                                $premier_cn = "n";
                                if ($debug_releve == "y" && $tab_rel['eleve'][$i]['login'] == $debug_ele_login && $tab_rel['eleve'][$i]['groupe'][$j]['id_groupe'] == $debug_id_groupe) {
                                    echo "<b style='color:red'>cn {$tmp_id_cn}</b> ";
                                }
                                //echo "<br /><u><b>Racine ($tmp_id_cn)&nbsp;:</b></u> \n";
                                $retour_liste_notes_html = liste_notes_html($tab_rel, $i, $j, $tmp_tab);
                                if ($retour_liste_notes_html != '') {
                                    //echo "|A1:$tmp_id_cn|";
                                    //echo "<u><b>Racine ($tmp_id_cn)&nbsp;:</b></u> \n";
                                    echo $retour_liste_notes_html;
                                    //echo "|A2:$tmp_id_cn|";
                                    $temoin_affichage_de_conteneur = "y";
                                    $temoin_conteneur++;
                                } else {
                                    $temoin_conteneur = 0;
                                }
                                // Faire la boucle while($m<count($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {}
                                // avec un test sur $tab_ele['groupe'][$j]['devoir'][$m]['id_conteneur']==$tmp_id_cn (soit la racine du cn à ce niveau)
                                for ($k = 0; $k < count($tab_id_cn['conteneurs']); $k++) {
                                    unset($tmp_tab);
                                    //if(isset($tab_id_cn['conteneurs'][$k]['id_racine'])) {
                                    //echo "\$tab_id_cn['conteneurs'][$k]['id_racine']=".$tab_id_cn['conteneurs'][$k]['id_racine']."<br />";
                                    $tmp_tab[] = $tab_id_cn['conteneurs'][$k]['id_racine'];
                                    if (isset($tab_id_cn['conteneurs'][$k]['conteneurs_enfants'])) {
                                        for ($kk = 0; $kk < count($tab_id_cn['conteneurs'][$k]['conteneurs_enfants']); $kk++) {
                                            $tmp_tab[] = $tab_id_cn['conteneurs'][$k]['conteneurs_enfants'][$kk];
                                            //echo "\$tab_id_cn['conteneurs'][$k]['conteneurs_enfants'][$kk]=".$tab_id_cn['conteneurs'][$k]['conteneurs_enfants'][$kk]."<br />";
                                        }
                                    }
                                    //echo "<br />\n";
                                    //echo "<u><b>".$tab_id_cn['conteneurs'][$k]['nom_complet']."&nbsp;:</b></u> \n";
                                    $retour_liste_notes_html = liste_notes_html($tab_rel, $i, $j, $tmp_tab);
                                    if ($retour_liste_notes_html != '') {
                                        // On n'affiche le conteneur que s'il y a des notes
                                        //echo "<br />\n";
                                        //echo "<u><b>".$tab_id_cn['conteneurs'][$k]['nom_complet']."&nbsp;:</b></u> \n";
                                        if ($temoin_conteneur > 0) {
                                            echo "<br />\n";
                                        }
                                        echo "<u><b>" . casse_mot($tab_id_cn['conteneurs'][$k]['nom_complet'], 'maj');
                                        if ($tab_rel['rn_toutcoefdev'] == "y" || $tab_id_cn['temoin_coef_differents_conteneurs'] == "y") {
                                            echo " <span style='font-weight:normal' title=\"Coefficient " . ($gepi_denom_boite_genre == "f" ? "de la" : "du") . " {$gepi_denom_boite}\">(coef.:" . $tab_id_cn['conteneurs'][$k]['coef'] . ")</span>";
                                        }
                                        if ($tab_id_cn['conteneurs'][$k]['display_parents'] == '1') {
                                            echo " (<em title=\"Moyenne sur " . ($gepi_denom_boite_genre == "f" ? "cette" : "ce") . " {$gepi_denom_boite}\">" . $tab_id_cn['conteneurs'][$k]['moy'] . "</em>)";
                                        }
                                        echo "&nbsp;:</b></u> \n";
                                        echo $retour_liste_notes_html;
                                        $temoin_affichage_de_conteneur = "y";
                                        $temoin_conteneur++;
                                    } else {
                                        $temoin_conteneur = 0;
                                    }
                                    // Faire la boucle while($m<count($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {}
                                    // avec un test sur $tab_ele['groupe'][$j]['devoir'][$m]['id_conteneur'] égal à $tab_id_cn['conteneurs'][$k]['id_racine'] ou dans $tab_id_cn['conteneurs'][$k]['conteneurs_enfants'][]
                                    //}
                                }
                            }
                            if ($debug_releve == "y" && $tab_rel['eleve'][$i]['login'] == $debug_ele_login && $tab_rel['eleve'][$i]['groupe'][$j]['id_groupe'] == $debug_id_groupe) {
                                foreach ($tab_devoirs_affiches_en_sous_conteneur as $key => $value) {
                                    echo "<span style='color:lime'>\$tab_devoirs_affiches_en_sous_conteneur[{$key}]={$value}</span><br />";
                                }
                            }
                            //DEBUG
                            //echo "<br />\$temoin_affichage_de_conteneur=$temoin_affichage_de_conteneur<br />";
                            //if($temoin_affichage_de_conteneur!='y') {
                            //echo "|B:$tmp_id_cn|";
                            // On va tester s'il y a des devoirs hors des boites (qui se sont révélées vides?)
                            $m = 0;
                            $tiret = "no";
                            while ($m < count($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {
                                if (!in_array($tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_devoir'], $tab_devoirs_affiches_en_sous_conteneur)) {
                                    /*
                                    $temoin_devoir_a_la_racine="y";
                                    for($k=0;$k<count($tab_id_cn['conteneurs']);$k++) {
                                    	if($tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_conteneur']==$tab_id_cn['conteneurs'][$k]['id_racine']) {
                                    		$temoin_devoir_a_la_racine="n";
                                    		break;
                                    	}
                                    	//$k++;
                                    }
                                    
                                    if($temoin_devoir_a_la_racine=="y") {
                                    */
                                    if ($debug_releve == "y" && $tab_rel['eleve'][$i]['login'] == $debug_ele_login && $tab_rel['eleve'][$i]['groupe'][$j]['id_groupe'] == $debug_id_groupe) {
                                        echo "<span style='color:green'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_devoir'] . " </span><br />";
                                        echo "<span style='color:plum'>id_cahier_notes=" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_cahier_notes'] . " </span> <span style='color:plum'>id_conteneur=" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_conteneur'] . " </span> ";
                                    }
                                    if ($tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_cahier_notes'] == $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['id_conteneur']) {
                                        //if(($m==0)&&($temoin_conteneur>0)) {
                                        //if($m==0) {
                                        if ($m == 0 && $temoin_affichage_de_conteneur == "y") {
                                            echo "<br />\n";
                                        }
                                        // Note de l'élève sur le devoir:
                                        $eleve_note = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['note'];
                                        // Statut de l'élève sur le devoir:
                                        $eleve_statut = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['statut'];
                                        // Appréciation de l'élève sur le devoir:
                                        $eleve_app = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['app'];
                                        // Le professeur a-t-il autorisé l'accès à l'appréciation lors de la saisie du devoir
                                        $eleve_display_app = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['display_app'];
                                        // Nom court du devoir:
                                        $eleve_nom_court = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['nom_court'];
                                        // Date du devoir:
                                        $eleve_date = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['date'];
                                        // Coef du devoir:
                                        $eleve_coef = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['coef'];
                                        //==========================================
                                        // On teste s'il y aura une "Note" à afficher
                                        if ($eleve_statut != '' and $eleve_statut != 'v') {
                                            $affiche_note = $eleve_statut;
                                        } elseif ($eleve_statut == 'v') {
                                            $affiche_note = "";
                                        } elseif ($eleve_note != '') {
                                            $affiche_note = $eleve_note;
                                        } else {
                                            $affiche_note = "";
                                        }
                                        //==========================================
                                        // Nom du devoir ou pas
                                        if ($tab_rel['rn_app'] == "y" and $eleve_display_app == "1") {
                                            if ($affiche_note == "") {
                                                if ($tab_rel['rn_nomdev'] != "y") {
                                                    $affiche_note = $eleve_nom_court;
                                                } else {
                                                    $affiche_note = "&nbsp;";
                                                }
                                            }
                                        }
                                        // Si une "Note" doit être affichée
                                        if ($affiche_note != '') {
                                            if ($tiret == "yes") {
                                                if (($tab_rel['rn_app'] == "y" or $tab_rel['rn_nomdev'] == "y") && $retour_a_la_ligne == 'y') {
                                                    echo "<br />";
                                                } else {
                                                    echo " - ";
                                                }
                                            }
                                            if ($tab_rel['rn_nomdev'] == "y") {
                                                echo "{$eleve_nom_court}: <b>" . $affiche_note . "</b>";
                                            } else {
                                                echo "<b>" . $affiche_note . "</b>";
                                            }
                                            // Coefficient (si on affiche tous les coef...
                                            // ou si on ne les affiche que s'il y a plusieurs coef différents)
                                            if ($tab_rel['rn_toutcoefdev'] == "y" || $tab_rel['rn_coefdev_si_diff'] == "y" && $tab_rel['eleve'][$i]['groupe'][$j]['differents_coef'] == "y") {
                                                echo " (<i><small>" . $chaine_coef . $eleve_coef . "</small></i>)";
                                            }
                                            // Si on a demandé à afficher les appréciations
                                            // et si le prof a coché l'autorisation d'accès à l'appréciations
                                            if ($tab_rel['rn_app'] == "y" and $eleve_display_app == "1") {
                                                echo " - Appréciation : ";
                                                if ($eleve_app != "") {
                                                    echo $eleve_app;
                                                } else {
                                                    echo "-";
                                                }
                                            }
                                            if ($tab_rel['rn_datedev'] == "y") {
                                                // Format: 2006-09-28 00:00:00
                                                $tmpdate = explode(" ", $eleve_date);
                                                $tmpdate = explode("-", $tmpdate[0]);
                                                echo " (<i><small>{$tmpdate['2']}/{$tmpdate['1']}/{$tmpdate['0']}</small></i>)";
                                            }
                                            // 20100626
                                            if ($tab_rel['rn_moy_min_max_classe'] == 'y') {
                                                echo " (<em title=\"" . $eleve_nom_court . " (" . formate_date($eleve_date) . ")\nNote minimale   : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min'] . "\nMoyenne classe : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "\nNote maximale  : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'] . "\"><small>";
                                                //echo $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'];
                                                echo "<span class='cn_moymin'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min'] . "</span>|<span class='cn_moyclasse'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "</span>|<span class='cn_moymax'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'] . "</span>";
                                                echo "</small></em>)";
                                            } elseif ($tab_rel['rn_moy_classe'] == 'y') {
                                                echo " (<em class='cn_moyclasse'>classe:" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "</em>)";
                                            }
                                            //====================================================================
                                            // Après un tour avec affichage dans la boucle:
                                            $tiret = "yes";
                                        }
                                    }
                                }
                                $m++;
                            }
                            //}
                        } else {
                            $m = 0;
                            $tiret = "no";
                            while ($m < count($tab_rel['eleve'][$i]['groupe'][$j]['devoir'])) {
                                // Note de l'élève sur le devoir:
                                $eleve_note = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['note'];
                                // Statut de l'élève sur le devoir:
                                $eleve_statut = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['statut'];
                                // Appréciation de l'élève sur le devoir:
                                $eleve_app = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['app'];
                                // Le professeur a-t-il autorisé l'accès à l'appréciation lors de la saisie du devoir
                                $eleve_display_app = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['display_app'];
                                // Nom court du devoir:
                                $eleve_nom_court = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['nom_court'];
                                // Date du devoir:
                                $eleve_date = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['date'];
                                // Coef du devoir:
                                $eleve_coef = $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['coef'];
                                //==========================================
                                // On teste s'il y aura une "Note" à afficher
                                if ($eleve_statut != '' and $eleve_statut != 'v') {
                                    $affiche_note = $eleve_statut;
                                } elseif ($eleve_statut == 'v') {
                                    $affiche_note = "";
                                } elseif ($eleve_note != '') {
                                    $affiche_note = $eleve_note;
                                } else {
                                    $affiche_note = "";
                                }
                                //==========================================
                                // Nom du devoir ou pas
                                if ($tab_rel['rn_app'] == "y" and $eleve_display_app == "1") {
                                    if ($affiche_note == "") {
                                        if ($tab_rel['rn_nomdev'] != "y") {
                                            $affiche_note = $eleve_nom_court;
                                        } else {
                                            $affiche_note = "&nbsp;";
                                        }
                                    }
                                }
                                // Si une "Note" doit être affichée
                                if ($affiche_note != '') {
                                    if ($tiret == "yes") {
                                        if (($tab_rel['rn_app'] == "y" or $tab_rel['rn_nomdev'] == "y") && $retour_a_la_ligne == 'y') {
                                            echo "<br />";
                                        } else {
                                            echo " - ";
                                        }
                                    }
                                    if ($tab_rel['rn_nomdev'] == "y") {
                                        echo "{$eleve_nom_court}: <b>" . $affiche_note . "</b>";
                                    } else {
                                        echo "<b>" . $affiche_note . "</b>";
                                    }
                                    // Coefficient (si on affiche tous les coef...
                                    // ou si on ne les affiche que s'il y a plusieurs coef différents)
                                    if ($tab_rel['rn_toutcoefdev'] == "y" || $tab_rel['rn_coefdev_si_diff'] == "y" && $tab_rel['eleve'][$i]['groupe'][$j]['differents_coef'] == "y") {
                                        echo " (<i><small>" . $chaine_coef . $eleve_coef . "</small></i>)";
                                    }
                                    // Si on a demandé à afficher les appréciations
                                    // et si le prof a coché l'autorisation d'accès à l'appréciations
                                    if ($tab_rel['rn_app'] == "y" and $eleve_display_app == "1") {
                                        echo " - Appréciation : ";
                                        if ($eleve_app != "") {
                                            echo $eleve_app;
                                        } else {
                                            echo "-";
                                        }
                                    }
                                    if ($tab_rel['rn_datedev'] == "y") {
                                        // Format: 2006-09-28 00:00:00
                                        $tmpdate = explode(" ", $eleve_date);
                                        $tmpdate = explode("-", $tmpdate[0]);
                                        echo " (<i><small>{$tmpdate['2']}/{$tmpdate['1']}/{$tmpdate['0']}</small></i>)";
                                    }
                                    // 20100626
                                    if ($tab_rel['rn_moy_min_max_classe'] == 'y') {
                                        echo " (<em title=\"" . $eleve_nom_court . " (" . formate_date($eleve_date) . ")\nNote minimale   : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min'] . "\nMoyenne classe : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "\nNote maximale  : " . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'] . "\"><small>";
                                        //echo $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'];
                                        echo "<span class='cn_moymin'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min'] . "</span>|<span class='cn_moyclasse'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "</span>|<span class='cn_moymax'>" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max'] . "</span>";
                                        echo "</small></em>)";
                                        //echo " (<i><small>".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['min']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe']."|".$tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['max']."</small></i>)";
                                    } elseif ($tab_rel['rn_moy_classe'] == 'y') {
                                        echo " (<em>classe:" . $tab_rel['eleve'][$i]['groupe'][$j]['devoir'][$m]['moy_classe'] . "</em>)";
                                    }
                                    //====================================================================
                                    // Après un tour avec affichage dans la boucle:
                                    $tiret = "yes";
                                }
                                $m++;
                            }
                        }
                    }
                    echo "</td>\n";
                    echo "</tr>\n";
                }
                $j++;
            }
        }
        echo "</table>\n";
        //=============================================
        /*
        // Avis du conseil de classe à ramener par là
        
        if (($releve_affiche_avis == 'y')||($releve_affiche_signature == 'y')) {
        	// Tableau de l'avis des conseil de classe
        	echo "<table $class_bordure width='$largeurtableau' border='1' cellspacing='".$releve_cellspacing."' cellpadding='".$releve_cellpadding."'>\n";
        	echo "<tr>\n";
        }
        
                if ($releve_affiche_avis == 'y') {
        	//
        	// Case de gauche : avis des conseils de classe
        	//
        	echo "<td style='vertical-align: top; text-align: left;'>\n";
        	// 1) l'avis
        	echo "<span class='bulletin'><i>Avis du conseil de classe:</i></span><br />\n";
        
        	if($tab_rel['avis'][$i]!="") {
        		echo "<span class='avis_bulletin'>";
        		echo texte_html_ou_pas($tab_rel['avis'][$i]);
        		echo "</span>";
        		if($releve_affiche_signature == 'y'){
        			echo "<br />\n";
        		}
        	}
        	else {
        		echo "&nbsp;";
        		// Si il n'y a pas d'avis, on rajoute des lignes vides selon les paramètres d'impression
        		$n = 0;
        		if ($releve_espace_avis >0){
        			while ($n < $releve_espace_avis) {
        				echo "<br />\n";
        				$n++;
        			}
        		}
        	}
        }
                elseif ($releve_affiche_signature == 'y') {
                    echo "<td style=\"vertical-align: top;\">";
                }
        
                if ($releve_affiche_signature == 'y') {
                    // 2) Le nom du professeur principal
        	if(isset($tab_rel['eleve'][$i]['pp']['login'])) {
        		echo "<b>".ucfirst($gepi_prof_suivi)."</b> ";
        		echo "<i>".affiche_utilisateur($tab_rel['eleve'][$i]['pp']['login'],$tab_rel['eleve'][$i]['id_classe'])."</i>";
        	}
        
        	echo "</td>\n";
        	//
        	// Case de droite : paraphe du proviseur
        	//
        	echo "<td style='vertical-align: top; text-align: left;' width='30%'>\n";
        	echo "<span class='bulletin'><b>".$tab_rel['formule']."</b>:</span><br />";
        	echo "<span class='bulletin'><i>".$tab_rel['suivi_par']."</i></span>";
        }
        
                // Si une des deux variables 'releve_affiche_avis' ou 'releve_affiche_signature' est à 'y', il faut fermer le tableau
                if (($releve_affiche_avis == 'y')||($releve_affiche_signature == 'y')) {
                    echo "</td>\n";
                    // Fin du tableau
                    echo "</tr>\n";
        	echo "</table>\n";
                }
        */
        //================================
        //=============================================
        // BLOC Absence
        // TODO : ajouter un test sur le choix
        if ($tab_rel['rn_abs_2'] == 'y') {
            $eleve_query = EleveQuery::create()->orderByNom()->orderByPrenom()->distinct();
            $eleve_query->filterByLogin($tab_rel['eleve'][$i]['login']);
            $eleve = $eleve_query->findOne();
            $nbAbsencesRetard = decompteAbsences($tab_rel['eleve'][$i]['login'], $choix_periode, $tab_rel);
            ?>
<div style="width: <?php 
            echo $releve_largeurtableau - 20;
            ?>
px; 
	 margin: .5em 0;
	 padding: .2em .5em;
	 border: 5px double black; ">
  <?php 
            echo $nbAbsencesRetard['nbAbsences'];
            ?>
 absence(s)
   dont <?php 
            echo $nbAbsencesRetard['nbAbsencesNonJustifiees'];
            ?>
 non justifiée(s)
   <?php 
            echo $nbAbsencesRetard['nbRetards'];
            ?>
 retard(s)
  
</div>
<?php 
        }
        //================================
        //================================
        if ($tab_rel['rn_sign_chefetab'] == 'y' || $tab_rel['rn_sign_pp'] == 'y' || $tab_rel['rn_sign_resp'] == 'y') {
            $nb_cases = 0;
            if ($tab_rel['rn_sign_chefetab'] == 'y') {
                $nb_cases++;
            }
            if ($tab_rel['rn_sign_pp'] == 'y') {
                $nb_cases++;
            }
            if ($tab_rel['rn_sign_resp'] == 'y') {
                $nb_cases++;
            }
            $largeur_case = round($releve_largeurtableau / $nb_cases);
            echo "<table{$releve_class_bordure} border='1' width='{$releve_largeurtableau}'";
            echo " summary=\"Tableau des signatures\"";
            if (isset($rn_couleurs_alternees) && $rn_couleurs_alternees == "y") {
                echo " style='background-color:white;'";
            }
            echo ">\n";
            echo "<tr>\n";
            if ($tab_rel['rn_sign_chefetab'] == 'y') {
                echo "<td style='width: {$largeur_case}'>\n";
                echo "<b>Signature du chef d'établissement:</b>";
                for ($m = 0; $m < $tab_rel['rn_sign_nblig']; $m++) {
                    echo "<br />\n";
                }
                echo "</td>\n";
            }
            if ($tab_rel['rn_sign_pp'] == 'y') {
                echo "<td style='width: {$largeur_case}'>\n";
                echo "<b>Signature du " . $tab_rel['gepi_prof_suivi'] . ":</b>";
                for ($m = 0; $m < $tab_rel['rn_sign_nblig']; $m++) {
                    echo "<br />\n";
                }
                echo "</td>\n";
            }
            if ($tab_rel['rn_sign_resp'] == 'y') {
                echo "<td style='width: {$largeur_case}'>\n";
                echo "<b>Signature des responsables:</b>";
                for ($m = 0; $m < $tab_rel['rn_sign_nblig']; $m++) {
                    echo "<br />\n";
                }
                echo "</td>\n";
            }
            echo "</tr>\n";
            echo "</table>\n";
        }
        if ($tab_rel['rn_formule'] != "") {
            //echo "<p>".htmlspecialchars($tab_rel['rn_formule'])."</p>\n";
            //echo "<p>".$tab_rel['rn_formule']."</p>\n";
            echo "<table width='{$releve_largeurtableau}' style='margin-left:5px; margin-right:5px;' border='0' cellspacing='" . $releve_cellspacing . "' cellpadding='" . $releve_cellpadding . "' summary='Formule du bas de relevé de notes'>\n";
            echo "<tr>";
            echo "<td><p align='center' class='bulletin'>" . $tab_rel['rn_formule'] . "</p></td>\n";
            echo "</tr></table>";
        }
        //================================
        //echo "</div>\n";
        //================================
        // Affichage de la formule de bas de page
        //echo "\$releve_formule_bas=$releve_formule_bas<br />";
        //echo "\$releve_affiche_formule=$releve_affiche_formule<br />";
        if ($releve_formule_bas != '' and $releve_affiche_formule == 'y') {
            // Pas d'affichage dans le cas d'un bulletin d'une période "examen blanc"
            echo "<table width='{$releve_largeurtableau}' style='margin-left:5px; margin-right:5px;' border='0' cellspacing='" . $releve_cellspacing . "' cellpadding='" . $releve_cellpadding . "'>\n";
            echo "<tr>";
            echo "<td><p align='center' class='bulletin'>" . $releve_formule_bas . "</p></td>\n";
            echo "</tr></table>";
        }
        echo "</div>\n";
        //================================
        if ($num_releve == 0 && $nb_releves == 2) {
            echo "<p class='saut'>&nbsp;</p>\n";
        }
    }
}
Esempio n. 22
0
        <?php if ($action == "vidage" || $action=="regeneration") : ?>
            <h2>Vidage et regénération de la table d'agrégation</h2>
                <?php
                if ($action == "vidage") {
                    $del = AbsenceAgregationDecompteQuery::create()->deleteAll();
                    $nb = AbsenceAgregationDecompteQuery::create()->count();
                    if ($nb === 0) {
                        echo"<p>La Table est maintenant vide.</p>";
                        echo "<p>Revenir à l'<a href='".$_SERVER['PHP_SELF']."'>Agrégation des absences</a></p>";
                        die();
                    } else {
                        echo"<p>Un problème est survenu.</p>";
                        die();
                    }
                } elseif ($action == "regeneration") {
                    $eleve_col = EleveQuery::create()->paginate($page, $maxPerPage);
					if (1 == $page) {
						$del = AbsenceAgregationDecompteQuery::create()->deleteAll();
						$nb = AbsenceAgregationDecompteQuery::create()->count();
						if ($nb === 0) {
							echo"<p>La Table est vide.</p>";
						} else {
							echo"<p>Un problème est survenu.</p>";
							die();
						}
					}
                    echo'<div id="contain_div" class="css-panes">
                        <p> Traitement de la tranche d\'élève ' . $page . '/' . $eleve_col->getLastPage() . ' en cours... <br />
                            Attention cette opération peut être longue.</p>
                         </div>';
                    if(ob_get_contents()){
Esempio n. 23
0
    public function testDelete()
    {
        $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');

        $traitement = AbsenceEleveTraitementQuery::create()->useJTraitementSaisieEleveQuery()
        ->useAbsenceEleveSaisieQuery()->filterByDebutAbs(JEUDI_s42j4.' 08:00:00')
        ->endUse()->endUse()->findOne();
        //on va vérifier que le delete change bien le update_ad
        $old_updated_at = $traitement->getUpdatedAt('U');
        $traitement->delete();
        $traitement = AbsenceEleveTraitementQuery::create()->useJTraitementSaisieEleveQuery()
        ->useAbsenceEleveSaisieQuery()->filterByDebutAbs(JEUDI_s42j4.' 08:00:00')
        ->endUse()->endUse()->findOne();
        $this->assertNull($traitement);
        $traitement = AbsenceEleveTraitementQuery::create()->includeDeleted()->useJTraitementSaisieEleveQuery()
        ->useAbsenceEleveSaisieQuery()->filterByDebutAbs(JEUDI_s42j4.' 08:00:00')
        ->endUse()->endUse()->findOne();
        $this->assertNotNull($traitement);
        $traitement->unDelete();

        AbsenceEleveTraitementPeer::enableAgregation();
        $traitement->setAbsenceEleveType(AbsenceEleveTypeQuery::create()->filterByNom('Infirmerie')->findOne());
        $traitement->save();
        $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(JEUDI_s42j4)->findOne();
        $this->assertFalse($decompte->getManquementObligationPresence());
        $traitement->delete();
        $decompte->reload();
        $this->assertTrue($decompte->getManquementObligationPresence());
        AbsenceEleveTraitementPeer::disableAgregation();
    }
Esempio n. 24
0
								else {
									echo "-";
								}
								echo "</td>\n";
								echo "</tr>\n";
							}
							echo "</table>\n";
							echo "</div>\n";
						}
					}
				}
				elseif (getSettingValue("active_module_absence")=='2') {
					// Initialisations files
					echo "<div id='div_aff_abs' style='display:none'>\n";
					require_once("../lib/initialisationsPropel.inc.php");
					$eleve = EleveQuery::create()->findOneByLogin($eleve1);

					echo "<table class='boireaus' summary='Bilan des absences'>\n";
					echo "<tr>\n";
					echo "<th>Absences sur la période</th>\n";
					echo "<th>Nombre de 1/2 journées</th>\n";
					echo "<th>dont non justifiées</th>\n";
					echo "<th>Nombre de retards</th>\n";
					echo "</tr>\n";
					$alt=1;
				
					// Il ne faudrait afficher que le T1, T2 ou T3 en se basant sur la variable $num_periode_choisie
				
					foreach($eleve->getPeriodeNotes() as $periode_note) {
						//$periode_note = new PeriodeNote();
						if ($periode_note->getDateDebut() == null) {
Esempio n. 25
0
 // Colonne absence
 if ($aff_abs) {
     if (getSettingValue("active_module_absence") != '2' || getSettingValue("abs2_import_manuel_bulletin") == 'y') {
         $abs_eleve = "NR";
         if ($referent == "une_periode") {
             $abs_eleve = sql_query1("SELECT nb_absences FROM absences WHERE\n\t\t\tlogin = '******' and\n\t\t\tperiode = '" . $num_periode . "'\n\t\t\t");
         } else {
             $abs_eleve = sql_query1("SELECT sum(nb_absences) FROM absences WHERE\n\t\t\tlogin = '******'");
         }
         if ($abs_eleve == '-1') {
             $abs_eleve = "NR";
         }
         $col[$ind][$j + $ligne_supl] = $abs_eleve;
         $ind++;
     } else {
         $eleve = EleveQuery::create()->findOneByLogin($current_eleve_login[$j]);
         if ($eleve != null) {
             if ($referent == "une_periode") {
                 $abs_eleve = strval($eleve->getDemiJourneesAbsenceParPeriode($num_periode)->count());
             } else {
                 $date_jour = new DateTime('now');
                 $month = $date_jour->format('m');
                 if ($month > 7) {
                     $date_debut = new DateTime($date_jour->format('y') . '-09-01');
                     $date_fin = new DateTime($date_jour->format('y') + 1 . '-08-31');
                 } else {
                     $date_debut = new DateTime($date_jour->format('y') - 1 . '-09-01');
                     $date_fin = new DateTime($date_jour->format('y') . '-08-31');
                 }
                 $abs_eleve = strval($eleve->getDemiJourneesAbsence($date_debut, $date_fin)->count());
             }
Esempio n. 26
0
$eleve_col = new PropelCollection();
//on fait une requete pour recuperer les eleves qui sont absents aujourd'hui
$dt_debut = clone $dt_date_absence_eleve;
$dt_debut->setTime(0,0,0);
$dt_fin = clone $dt_date_absence_eleve;
$dt_fin->setTime(23,59,59);
//on récupere les saisies avant puis on va filtrer avec les ids car filterManquementObligationPresence bug un peu avec les requetes imbriquées
$saisie_query = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_debut, $dt_fin)->setFormatter(ModelCriteria::FORMAT_ARRAY);
//On filtre les manquement à l'obligation de présence
if ($filtre_actif == "manquement") {
    $saisie_query->filterByManquementObligationPresence();
} else {
    $saisie_query->filterByIdLieu($id_lieu);
}
$saisie_col = $saisie_query->find();
$query = EleveQuery::create()->orderBy('Nom', Criteria::ASC)->orderBy('Prenom', Criteria::ASC)
    ->leftJoinWith('Eleve.EleveRegimeDoublant')
	->useAbsenceEleveSaisieQuery()
	->filterById($saisie_col->toKeyValue('Id', 'Id'))
	->endUse();
$eleve_col = $query
                ->where('Eleve.DateSortie<?','0')
                ->orWhere('Eleve.DateSortie is NULL')
                ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve->format('U'))
                ->distinct()->find();
?>
<div class='css-panes' id='containDiv'>
    <p>
        Cette page affiche par créneau le nombre d'élèves ayant une saisie correspondant au filtre défini.<br />
        Les saisies renseignées en retard ne sont pas comptabilisées.<br /><br />
    </p>
Esempio n. 27
0
if(($mode=="suppr_report")&&(isset($id_report))) {
	check_token();

	$sql="DELETE FROM s_reports WHERE id_report='$id_report';";
	$res=mysqli_query($GLOBALS["mysqli"], $sql);
}

if(isset($odt)&&
	(($odt=="exclusion")||
	($odt=="travail")||
	($odt=="autre"))) { //impression de l'exclusion en Ooo
	//recup des informations à exporter dans l'ODT
	//Nom et prenom eleve;
	if ($ele_login != null && $ele_login != '') {
		$eleve_current=  EleveQuery::create()->filterByLogin($ele_login)->findOne();
		$nom_ele = $eleve_current->getNom();
		$prenom_ele= $eleve_current->getPrenom();
		$id_classe_ele= $eleve_current->getClasse()->getId();
	}
	//classe de l'élève
	if ($id_classe_ele != null && $id_classe_ele != '') {
		$classe = ClasseQuery::create()->findOneById($id_classe_ele);
		if ($classe != null) {
		    $classe_ele = $classe->getNom();
		}
	}

	require_once("./lib_tbs_courrier.php"); //fonction pour le traitement de l'adresse

	$tab_adresse=adresse_responsables($ele_login); 
Esempio n. 28
0
/**
 * Récupère les données d'un élève à afficher
 * @param objet $eleve Un élève issu de getEleves()
 * @param date $date_debut
 * @param date $date_fin
 * @param objet $justifie_col Collection Propel avec les justifications
 * @param bool $donneeBrut
 * @return array Une ligne du tableau à afficher
 * @see getEleves()
 */
function traiteEleve($eleve,$date_debut, $date_fin, $justifie_col, $donneeBrut, $erreur=FALSE) {
  $eleve_id = $eleve->getId();
  $donnees= array();
  $donnees[$eleve_id] = array();
  
  $propel_eleve = EleveQuery::create()->filterById($eleve_id)->findOne();
  $eleveNbAbs['demi_journees'] = $propel_eleve->getDemiJourneesAbsence($date_debut, $date_fin)->count();
  $eleveNbAbs['retards'] = $propel_eleve->getRetards($date_debut, $date_fin)->count();
	
	if ($eleveNbAbs['demi_journees'] > 0 || $eleveNbAbs['retards'] > 0 ) {
	  $eleveNbAbs['non_justifiees'] = $propel_eleve->getDemiJourneesNonJustifieesAbsence($date_debut, $date_fin)->count();
	  $eleveNbAbs['justifiees'] = $eleveNbAbs['demi_journees'] - $eleveNbAbs['non_justifiees']; 
	  $donnees[$eleve_id]['nom'] = $eleve->getNom();
	  $donnees[$eleve_id]['prenom'] = $eleve->getPrenom();
	  $donnees[$eleve_id]['classe'] = $eleve->getClasse();
	  $donnees[$eleve_id]['classe'] = $eleve->getClasseNom();        
	  $donnees[$eleve_id]['nbre_lignes_total'] = 0;
	  $donnees[$eleve_id]['demi_journees'] = $eleveNbAbs['demi_journees'];
	  $donnees[$eleve_id]['justifiees'] = $eleveNbAbs['justifiees'];
	  $donnees[$eleve_id]['non_justifiees'] = $eleveNbAbs['non_justifiees'];
	  $donnees[$eleve_id]['retards'] = $eleveNbAbs['retards'];
	  //Récupérer le décompte des traitements pour chaque élève	  
	  $totalDemi=0;
	foreach ($justifie_col as $justifie) {
	  // Décompte en données brutes 
		if ($donneeBrut == TRUE) {
		  $propel_traitEleve = AbsenceEleveTraitementQuery::create()->filterByAJustificationId($justifie->getid())
			->useJTraitementSaisieEleveQuery()
			  ->useAbsenceEleveSaisieQuery()
				->filterByEleveId($eleve_id)
				->filterByPlageTemps($date_debut,$date_fin )
			  ->endUse()
			->endUse() ;
		  $traiteEleve_col = $propel_traitEleve;
		  $donnees[$eleve_id]['traitement'][] = $traiteEleve_col->distinct()->count();
		} else {
		  // Décompte en 1/2 journées
                    $abs_saisie_col_filtrees = $eleve->getAbsenceEleveSaisiesDecompteDemiJournees($date_debut, $date_fin);
                    $justif_collection = new PropelCollection();
                    foreach ($abs_saisie_col_filtrees as $saisie) {
                        foreach ($saisie->getAbsenceEleveTraitements() as $traitement) {
                            if ($traitement->getAJustificationId() == $justifie->getid()) {
                                $justif_collection->add($saisie);
                            }
                        }
                    }

                    require_once(dirname(__FILE__)."/../orm//helpers/AbsencesEleveSaisieHelper.php");
                    $dm = AbsencesEleveSaisieHelper::compte_demi_journee($justif_collection, $date_debut, $date_fin);
                    $donnees[$eleve_id]['traitement'][] = $dm->count();
                    $totalDemi += $dm->count();
		}
	  }
	  $donnees[$eleve_id]['totalDemi']=$totalDemi;
	}
	unset ($eleveNbAbs, $traiteEleve_col, $propel_eleve, $propel_traitEleveDemi, $traiteEleveDemi, $traiteEleveDemi_col, $propel_traitEleve);
	if ($erreur && isset ($donnees[$eleve_id]['justifiees']) && ($donnees[$eleve_id]['justifiees']==$donnees[$eleve_id]['totalDemi'])) {
	  $donnees[$eleve_id] = array();
	}
	
	return $donnees;
}
Esempio n. 29
0
	/**
	 * Gets the number of Eleve objects related by a many-to-many relationship
	 * to the current object by way of the j_aid_eleves cross-reference table.
	 *
	 * @param      Criteria $criteria Optional query object to filter the query
	 * @param      boolean $distinct Set to true to force count distinct
	 * @param      PropelPDO $con Optional connection object
	 *
	 * @return     int the number of related Eleve objects
	 */
	public function countEleves($criteria = null, $distinct = false, PropelPDO $con = null)
	{
		if(null === $this->collEleves || null !== $criteria) {
			if ($this->isNew() && null === $this->collEleves) {
				return 0;
			} else {
				$query = EleveQuery::create(null, $criteria);
				if($distinct) {
					$query->distinct();
				}
				return $query
					->filterByAidDetails($this)
					->count($con);
			}
		} else {
			return count($this->collEleves);
		}
	}
Esempio n. 30
0
	/**
	 * Retourne true ou false selon que l'utilisateur a acces a la fiche de cette eleve
	 *
	 * @param      Eleve $eleve
	 *
	 * @return     Boolean
	 */
	public function getAccesFicheEleve(Eleve $eleve) {
	    global $mysqli;

	    if ($eleve === null) return false;
	    if ($this->getStatut() == "admin") {
			return true;
	    } else if ($this->getStatut() == "secours") {
			return true;
	    } else if ($this->getStatut() == "scolarite") {
			if (getSettingValue("GepiAccesTouteFicheEleveScolarite")=='yes') {
			    return true;
			} else {
			    if (!isset($this->collAccesFicheEleves[$eleve->getPrimaryKey()])) {
				$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = $this->getEleves()->contains($eleve);
			    }
			    return $this->collAccesFicheEleves[$eleve->getPrimaryKey()];
			}
	    } else if ($this->getStatut() == "cpe") {
			if (getSettingValue("GepiAccesTouteFicheEleveCpe")=='yes') {
			    return true;
			} else {
			    if (!isset($this->collAccesFicheEleves[$eleve->getPrimaryKey()])) {
				$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = $this->getEleves()->contains($eleve);
			    }
			    return $this->collAccesFicheEleves[$eleve->getPrimaryKey()];
			}
	    } else if ($this->getStatut() == "professeur") {
			if (isset($this->collAccesFicheEleves[$eleve->getPrimaryKey()])) {
			    return $this->collAccesFicheEleves[$eleve->getPrimaryKey()];
			}
			if (getSettingValue("GepiAccesGestElevesProfP")=='yes') {
			    if ($this->getEleves()->contains($eleve)) {
				$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = true;
				return true;
			    }
			}
			if (getSettingValue("GepiAccesGestElevesProf")=='yes') {
			    //on cherche dans les groupes du professeur
			    $query = EleveQuery::create()->filterById($eleve->getId())
				    ->useJEleveGroupeQuery()->useGroupeQuery()->useJGroupesProfesseursQuery()
				    ->filterByUtilisateurProfessionnel($this)
				    ->endUse()->endUse()->endUse();
			    if ($query->findOne() != null) {
				$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = true;
				return true;
			    }
			    //on cherche dans les aid du professeur
			    $query = EleveQuery::create()->filterById($eleve->getId())
				    ->useJAidElevesQuery()->useAidDetailsQuery()->useJAidUtilisateursProfessionnelsQuery()
				    ->filterByUtilisateurProfessionnel($this)
				    ->endUse()->endUse()->endUse();
			    if ($query->findOne() != null) {
				$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = true;
				return true;
			    }
			}
			$this->collAccesFicheEleves[$eleve->getPrimaryKey()] = false;
			return false;
	    } else if ($this->getStatut() == "autre") {
		    if (isset($this->collAccesFicheEleves['statut_autre'])) {
			return $this->collAccesFicheEleves['statut_autre'];
		    }

		    // On récupère les droits de ce statuts pour savoir ce qu'on peut afficher
		    $sql_d = "SELECT * FROM droits_speciaux WHERE id_statut = '" . $_SESSION['statut_special_id'] . "'";
		    $query_d = mysqli_query($mysqli, $sql_d);

		    while($rep_d = mysqli_fetch_array($query_d)){
			    //print_r($rep_d);
			    if (($rep_d['nom_fichier'] == '/voir_resp' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/voir_ens' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/voir_notes' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/voir_bulle' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/voir_abs' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/voir_anna' AND $rep_d['autorisation'] == 'V')
				|| ($rep_d['nom_fichier'] == '/mod_discipline/saisie_incident.php' AND $rep_d['autorisation'] == 'V')
				) {
				$this->collAccesFicheEleves['statut_autre'] = true;
				return true;
			    }
		    }
		    $this->collAccesFicheEleves['statut_autre'] = false;
		    return false;
	    }
	    return false;
	}