Пример #1
0
  /**
  * test a propel bug corrected in commit f23575d of propel github repo
  *
  */
 public function testInstancePooling() {
      ElevePeer::clearInstancePool();
      foreach (AbsenceEleveSaisieQuery::create()->useEleveQuery()->filterByLogin('Florence Michu')->endUse()->find() as $saisie) {
              $eleve_col[] = $saisie->getEleve();
      }
      $this->assertTrue($eleve_col[0] === $eleve_col[1]);
  }
Пример #2
0
 public function testModification()
  {
      $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
      $saisie = AbsenceEleveSaisieQuery::create()->filterByDebutAbs(DIMANCHE_s41j7.' 08:00:00')->findOne();
      $traitements = AbsenceEleveTraitementQuery::create()->useAbsenceEleveTypeQuery()->filterByNom('Infirmerie')->endUse()->find();
      $traitement_1 = $traitements->getFirst();
      $traitement_2 = $traitements->get(1);
      
      $j_traitement_saisie = $traitement_1->getJTraitementSaisieEleves()->getFirst();
      try {
          $j_traitement_saisie->setAbsenceEleveTraitement($traitement_2);
          $this->fail('Une exception doit être soulevée lors de cette modification');
      } catch (Exception $e) {
          $this->assertTrue(true);
      }
      try {
          $j_traitement_saisie->setAbsenceEleveSaisie($saisie);
          $this->fail('Une exception doit être soulevée lors de cette modification');
      } catch (Exception $e) {
          $this->assertTrue(true);
      }
          try {
          $j_traitement_saisie->setATraitementId($traitement_2->getId());
          $this->fail('Une exception doit être soulevée lors de cette modification');
      } catch (Exception $e) {
          $this->assertTrue(true);
      }
          try {
          $j_traitement_saisie->setASaisieId($saisie->getId());
          $this->fail('Une exception doit être soulevée lors de cette modification');
      } catch (Exception $e) {
          $this->assertTrue(true);
      }
  }
Пример #3
0
	/**
	 * Code to execute before every DELETE statement
	 *
	 * @param     PropelPDO $con The connection object used by the query
	 */
	protected function basePreDelete(PropelPDO $con)
	{
		// soft_delete behavior
		if (AbsenceEleveSaisieQuery::isSoftDeleteEnabled() && $this->localSoftDelete) {
			return $this->softDelete($con);
		} else {
			return $this->hasWhereClause() ? $this->forceDelete($con) : $this->forceDeleteAll($con);
		}

		return $this->preDelete($con);
	}
Пример #4
0
        /**
	 *
	 * Renvoi true / false selon que l'eleve est present a l'heure donnee.
	 * On ne peut certifier la presence a 100% vu que seule les absences sont saisies (et non les presences)
	 * La fonction va rechercher les saisies de la classe de l'eleve et verifier que l'eleve n'est pas dedans.
	 * Les absences prisent en compte sont celles pour lesquelles l'eleve n'est pas sous la responsabilité de l'établissement et ne respecte pas son obligetion de presence
	 * Il est possible que l'eleve n'ai pas cours a l'heure precisee, auquel cas la fonction renvoi faux (eleve non present)
	 * Des plusieurs saisies sont contradictoire, on considere l'eleve present
	 *
	 * @param      mixed $v string, integer (timestamp), or DateTime value.  Empty string will
	 *						be treated as NULL for temporal objects.
	 * @return     Boolean
	 *
	 */
	public function getSousResponsabiliteEtablissement($v = 'now') {
	    // we treat '' as NULL for temporal objects because DateTime('') == DateTime('now')
	    // -- which is unexpected, to say the least.
	    //$dt = new DateTime();
	    if ($v === null || $v === '') {
		    $dt = null;
	    } elseif ($v instanceof DateTime) {
		    $dt = clone $v;
	    } else {
		    // some string/numeric value passed; we normalize that so that we can
		    // validate it.
		    try {
			    if (is_numeric($v)) { // if it's a unix timestamp
				    $dt = new DateTime('@'.$v, new DateTimeZone('UTC'));
				    // We have to explicitly specify and then change the time zone because of a
				    // DateTime bug: http://bugs.php.net/bug.php?id=43003
				    $dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));
			    } else {
				    $dt = new DateTime($v);
			    }
		    } catch (Exception $x) {
			    throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x);
		    }
	    }
	    

	    //premierement on verifie que l'eleve n'a pas ete saisie absent a cette date
	    $resp_etab = true;
	    foreach ($this->getAbsenceEleveSaisiesFilterByDate($dt,$dt) as $saisie) {
		if ($saisie->getSousResponsabiliteEtablissement()) {
		    return true;
		} else {
		    $resp_etab = false;
		}
	    }
	    if (!$resp_etab) {
		//l'eleve est saisie mais absent
		return false;
	    }

	    //on recupere toute les saisies a cette heure
	    //optimisation : utiliser la requete pour stocker ca
	    if (isset($_REQUEST['query_AbsenceEleveSaisieQuery_getSousResponsabiliteEtablissement_'.$dt->format('U')])
		    && $_REQUEST['query_AbsenceEleveSaisieQuery_getSousResponsabiliteEtablissement_'.$dt->format('U')] != null) {
		$saisie_col = $_REQUEST['query_AbsenceEleveSaisieQuery_getSousResponsabiliteEtablissement_'.$dt->format('U')];
	    } else {
		$saisie_col = AbsenceEleveSaisieQuery::create()
		    ->filterByPlageTemps($dt, $dt)
		    ->find();
		$_REQUEST['query_AbsenceEleveSaisieQuery_getSousResponsabiliteEtablissement_'.$dt->format('U')] = $saisie_col;
	    }

	    if ($saisie_col->isEmpty()) {
		//rien n'a ete saisie (aucun cours a cette heure), en renvoi non present par defaut
		return false;
	    }

	    $periode = $this->getPeriodeNote($dt);

	    //on va verifier les saisie sur l'heure precisee pour les groupes de l'eleve
	    $id_array = $this->getGroupes($periode)->getPrimaryKeys();
	    foreach ($saisie_col as $saisie) {
		if (in_array($saisie->getIdGroupe(), $id_array)) {
		    //il y a une saisie pour la classe mais pas pour l'eleve, il est donc present
		    return true;
		}
	    }

	    //on va verifier les saisie sur l'heure precisee pour les aid de l'eleve
	    $id_array = $this->getAidDetailss()->toKeyValue('Id','Id');
	    if (count($id_array) > 0) {
		foreach ($saisie_col as $saisie) {
		    if (in_array($saisie->getIdAid(), $id_array)) {
			//il y a une saisie pour l'aid mais pas pour l'eleve, il est donc present
			return true;
		    }
		}
	    }

	    //on va verifier les saisie sur l'heure precisee pour la classe de l'eleve
	    foreach ($saisie_col as $saisie) {
		if ($this->getClasse($periode) != null && $saisie->getIdClasse() == $this->getClasse($periode)->getId()) {
		    //il y a une saisie pour la classe mais pas pour l'eleve, il est donc present
		    return true;
		}
	    }

	    //rien n'a ete saisie (aucun cours a cette heure), en renvoi non present par defaut
	    return false;
	}
Пример #5
0
    }
}
if ($affichage != null && $affichage != '') {
    $eleve_query = EleveQuery::create();
    if ($utilisateur->getStatut() == 'administrateur' || getSettingValue("GepiAccesAbsTouteClasseCpe") == 'yes' && $utilisateur->getStatut() == "cpe") {
    } else {
        $eleve_query->filterByUtilisateurProfessionnel($utilisateur);
    }
    if ($id_classe !== null && $id_classe != -1) {
        $eleve_query->useJEleveClasseQuery()->filterByIdClasse($id_classe)->endUse();
    }
    if ($nom_eleve !== null && $nom_eleve != '') {
        $eleve_query->filterByNomOrPrenomLike($nom_eleve);
    }
    $eleve_col = $eleve_query->distinct()->find();
    $saisie_query = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_date_absence_eleve_debut, $dt_date_absence_eleve_fin)->filterByEleveId($eleve_col->toKeyValue('Id', 'Id'));
    if ($type_saisie != "" && $type_saisie != "SANS") {
        $saisie_query->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery()->filterByATypeId($type_saisie)->endUse()->endUse();
    } elseif ($type_extrait == '1') {
        $saisie_query->filterByManquementObligationPresence(true);
    }
    $saisie_query->useEleveQuery()->orderByNom()->orderByPrenom()->endUse();
    $saisie_query->orderByDebutAbs();
    $saisie_query->setFormatter('PropelOnDemandFormatter');
}
if ($affichage == 'html') {
    $alt = 1;
    $cpt_eleve = 0;
    $saisie_col = $saisie_query->find();
    echo '<table class="resizable sortable boireaus_alt2">
	<tr>
Пример #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());
    }
Пример #7
0
 }
 // Les saisies ont dû être supprimées.
 if ($cpt_eleve_col == 0) {
     $chaine_saisies_supprimees = "";
     $sql = "SELECT a_saisie_id FROM j_traitements_saisies WHERE a_traitement_id='" . $traitement->getPrimaryKey() . "';";
     $res_saisies = mysqli_query($mysqli, $sql);
     if (mysqli_num_rows($res_saisies) > 0) {
         $ligne_traitement[$cpt_traitement] .= "\n\t\t\t<span style='color:red' title=\"Saisie supprimée.\">";
         $cpt_saisie_cachees = 0;
         while ($lig_saisie = mysqli_fetch_object($res_saisies)) {
             if ($cpt_saisie_cachees > 0) {
                 $ligne_traitement[$cpt_traitement] .= " - ";
                 $chaine_saisies_supprimees .= " - ";
             }
             $chaine_saisies_supprimees .= " <a href='visu_saisie.php?id_saisie={$lig_saisie->a_saisie_id}' title='Voir la saisie supprimée n°{$lig_saisie->a_saisie_id}' style='color:red'>{$lig_saisie->a_saisie_id}</a>";
             $saisie_suppr = AbsenceEleveSaisieQuery::create()->includeDeleted()->findPk($lig_saisie->a_saisie_id);
             if ($saisie_suppr != null) {
                 $ligne_traitement[$cpt_traitement] .= $saisie_suppr->getEleve()->getCivilite() . ' ' . $saisie_suppr->getEleve()->getNom() . ' ' . $saisie_suppr->getEleve()->getPrenom();
                 if ($utilisateur->getAccesFicheEleve($saisie_suppr->getEleve())) {
                     $ligne_traitement[$cpt_traitement] .= "\n\t\t\t<br />\n\t\t\t<a href='../eleves/visu_eleve.php?ele_login="******"&amp;onglet=responsables&amp;quitter_la_page=y' target='_blank' style='color:red'> (voir fiche)</a>";
                 }
             }
             $cpt_saisie_cachees++;
         }
         $ligne_traitement[$cpt_traitement] .= "</span>";
     }
 }
 $ligne_traitement[$cpt_traitement] .= "\n\t\t</td>";
 //======================================
 $tab_traitement[$cpt_traitement] = $traitement->getPrimaryKey();
 //donnees saisies
Пример #8
0
$utilisation_tablekit="ok";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************

include('menu_abs2.inc.php');
include('menu_bilans.inc.php');
//===========================
//afichage des eleves.
$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')
Пример #9
0
// maj : $tab_req[] = "INSERT INTO droits VALUES ( '/mod_discipline/saisie_incident.php', 'V', 'V', 'V', 'V', 'F', 'F', 'F', 'F', 'Discipline: Saisie incident', '');;";
if (!checkAccess()) {
    header("Location: ../logout.php?auto=1");
	die();
}

if(mb_strtolower(mb_substr(getSettingValue('active_mod_discipline'),0,1))!='y') {
	$mess=rawurlencode("Vous tentez d accéder au module Discipline qui est désactivé !");
	tentative_intrusion(1, "Tentative d'accès au module Discipline qui est désactivé.");
	header("Location: ../accueil.php?msg=$mess");
	die();
}

$id_absence_eleve_saisie=isset($_POST['id_absence_eleve_saisie']) ? $_POST['id_absence_eleve_saisie'] : (isset($_GET['id_absence_eleve_saisie']) ? $_GET['id_absence_eleve_saisie'] : NULL);

$saisie = AbsenceEleveSaisieQuery::create()->findPk($id_absence_eleve_saisie);
if ($saisie == null) {
    require_once("../lib/header.inc.php");
    echo "Erreur, identifiant de saisie d'absence non transmis";
    require("../lib/footer.inc.php");
    die();
}

$msg = "";

if ($saisie->getIdSIncidents() == null || $saisie->getIdSIncidents() == -1) {
	check_token();

    //l'incident n'est pas encore enregistré, on l'enregistre donc
    $sql="INSERT INTO s_incidents SET declarant='".$_SESSION['login']."',
									    date='".$saisie->getDebutAbs('Y-m-d')."',
Пример #10
0
        if ($classe_col->isOdd()) {
            echo '</tr>';
        } else {
            if ($classe_col->isLast()) {
                echo '<td></td><td></td>';
                echo '</tr>';
            }
        }
    }
    ?>
	<tr>
		<td>Les Aid</td>
		<td colspan="3">
<?php 
    //on affiche les saisies du creneau
    $abs_col = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_debut_creneau, $dt_fin_creneau)->filterByIdAid(null, Criteria::NOT_EQUAL)->useEleveQuery()->orderByNom()->endUse()->useAidDetailsQuery()->orderByNom()->endUse()->find();
    if (!$abs_col->isEmpty()) {
        $aid_deja_sorties = array();
        $current_eleve = Null;
        foreach ($abs_col as $absenceSaisie) {
            if ($absenceSaisie->getEleve() != null && $absenceSaisie->getEleve()->isEleveSorti($dt_debut_creneau)) {
                continue;
            }
            if ($absenceSaisie->getManquementObligationPresenceSpecifie_NON_PRECISE()) {
                continue;
            }
            if ($absenceSaisie->getIdAid() !== null && !in_array($absenceSaisie->getIdAid(), $aid_deja_sorties)) {
                echo $absenceSaisie->getCreatedAt('H:i') . ' ';
                echo $absenceSaisie->getAidDetails()->getNom() . ' ';
                echo $absenceSaisie->getUtilisateurProfessionnel()->getCivilite() . ' ' . $absenceSaisie->getUtilisateurProfessionnel()->getNom() . ' ' . strtoupper(mb_substr($absenceSaisie->getUtilisateurProfessionnel()->getPrenom(), 0, 1)) . '. ';
                $aid_deja_sorties[] = $absenceSaisie->getAidDetails()->getId();
Пример #11
0
   /**
   * Merge une notification avec son modele
   *
   * @param AbsenceEleveNotification $notification
   * @param String $modele chemin du modele tbs
   * @return clsTinyButStrong $TBS deroulante des types d'absences
   */
  public static function MergeNotification($notification, $modele){
    //on charge le modele et on merge les données de l'établissement
    $TBS=self::MergeInfosEtab($modele);
    $TBS->MergeField('notif_id',$notification->getId());
    //on récupère la liste des noms d'eleves
    $eleve_col = new PropelCollection();
    if ($notification->getAbsenceEleveTraitement() != null) {
	foreach ($notification->getAbsenceEleveTraitement()->getAbsenceEleveSaisies() as $saisie) {
	    $eleve_col->add($saisie->getEleve());
	}
    }
    //merge des saisies pour modèles du type 1.5.3
    $TBS->MergeBlock('el_col',$eleve_col);

    foreach ($eleve_col as $eleve) {
            $saisies_string_col = new PropelCollection();
            $saisies_col = AbsenceEleveSaisieQuery::create()->filterByEleveId($eleve->getId())
                    ->useJTraitementSaisieEleveQuery()
                    ->filterByATraitementId($notification->getAbsenceEleveTraitement()->getId())->endUse()
                    ->orderBy("DebutAbs", Criteria::ASC)
                    ->find();
            foreach ($saisies_col as $saisie) {

                $str = $saisie->getDateDescription();
                if($saisie->getGroupeNameAvecClasses()!=''){
                    $str.= ', cours de '.$saisie->getGroupeNameAvecClasses();
                }                
                $saisies_string_col->append($str);
                
            }
            $TBS->MergeBlock('saisies_string_eleve_id_'.$eleve->getId(), $saisies_string_col);
    }

    $heure_demi_journee = 11;
    $minute_demi_journee = 50;
    if (getSettingValue("abs2_heure_demi_journee") != null) {
        try {
    	$dt_demi_journee = new DateTime(getSettingValue("abs2_heure_demi_journee"));
    	$heure_demi_journee = $dt_demi_journee->format('H');
    	$minute_demi_journee = $dt_demi_journee->format('i');
        } catch (Exception $x) {
        }
    }
    $temps_demi_journee = $heure_demi_journee.$minute_demi_journee;

    foreach($eleve_col as $eleve) {
	$demi_journee_string_col = new PropelCollection();array ();
        $abs_col = AbsenceEleveSaisieQuery::create()->filterByEleve($eleve)
		->useJTraitementSaisieEleveQuery()
		->filterByATraitementId($notification->getAbsenceEleveTraitement()->getId())->endUse()
		->orderBy("DebutAbs", Criteria::ASC)
		->find();
	require_once("helpers/AbsencesEleveSaisieHelper.php");
	$demi_j = AbsencesEleveSaisieHelper::compte_demi_journee($abs_col);
	foreach($demi_j as $date) {
	    $str = 'Le ';
	    $str .= (strftime("%a %d/%m/%Y", $date->format('U')));
	    if ($date->format('H') < 12) {
		$next_date = $demi_j->getNext();
		if ($next_date != null && $next_date->format('Y-m-d') == $date->format('Y-m-d')) {
		    $str .= ' la journée';
		} else {
		    $str .= ' le matin';
		    //on recule le pointeur car on l'a avancé avec $demi_j->getNext()
		    $demi_j->getPrevious();
		}
	    } else {
		$str .= ' l\'après midi';
	    }
	    $demi_journee_string_col->append($str);
	}
	//var_dump($demi_journee_string_col);die;
	//if (count($demi_journee_string_col) == 0) die;
	$TBS->MergeBlock('demi_j_string_eleve_id_'.$eleve->getId(), $demi_journee_string_col);
    }

    if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_COURRIER) {
	//on va mettre les champs dans des variables simple
	//on fait un petit traitement pour bien formatter ça si on a un ou deux responsables, avec le même nom de famille ou pas.
	if ($notification->getAdresse() != null && $notification->getResponsableEleves()->count() == 1) {
	    $responsable = $notification->getResponsableEleves()->getFirst();
	    $destinataire = $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom());
	} elseif ($notification->getAdresse() != null&& $notification->getResponsableEleves()->count() == 2) {
	    $responsable1 = $notification->getResponsableEleves()->getFirst();
	    $responsable2 = $notification->getResponsableEleves()->getNext();
	    if (strtoupper($responsable1->getNom()) == strtoupper($responsable2->getNom())) {
		$destinataire = $responsable1->getCivilite().' et '.$responsable2->getCivilite().' '.strtoupper($responsable1->getNom());
	    } else {
		$destinataire = $responsable1->getCivilite().' '.strtoupper($responsable1->getNom());
		$destinataire .= ' et '.$responsable2->getCivilite().' '.strtoupper($responsable2->getNom());
	    }
	} else {
	    $destinataire = '';
	}
	$TBS->MergeField('destinataire',$destinataire);

	$adr = $notification->getAdresse();
	if ($adr == null) {
	    $adr = new Adresse();
	}
	$TBS->MergeField('adr',$adr);	

    } else if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_EMAIL) {
	$destinataire = '';
	foreach ($notification->getResponsableEleves() as $responsable) {
	    $destinataire .= $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom()).' ';
	}
	$TBS->MergeField('destinataire',$destinataire);
    } else if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_SMS) {
	$destinataire = '';
	foreach ($notification->getResponsableEleves() as $responsable) {
	    $destinataire .= $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom()).' ';
	}
	$TBS->MergeField('destinataire',$destinataire);
    }

    // $TBS->Show(TBS_NOTHING);
    return $TBS;
  }
Пример #12
0
        $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery('b', 'left join')->filterByAMotifId(null)->endUse()->endUse()->endUse();
    } else {
        $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery()->filterByAMotifId(getFiltreRechercheParam('filter_motif'))->endUse()->endUse()->endUse();
    }
}
if (isFiltreRechercheParam('filter_justification')) {
    if (getFiltreRechercheParam('filter_justification') == 'SANS') {
        //on commence par filter certain élèves
        $query_clone = clone $query;
        $array_eleve_id = $query_clone->distinct()->select('Id')->find();
        
        //on filtre les saisies pour trouver celles qui ne sont pas justifiées
        $absences_saisie_query1 = new AbsenceEleveSaisieQuery();
        $absences_saisie_query1->where('AbsenceEleveSaisie.EleveId IN ?', $array_eleve_id)->useJTraitementSaisieEleveQuery('ab', 'left join')->useAbsenceEleveTraitementQuery('ad', 'left join')->endUse()->endUse()
                ->groupBy('Id')->withColumn('count(ad.a_justification_id)', 'nbJustif');
        $absences_saisie_query = new AbsenceEleveSaisieQuery();
        $absences_saisie_query->addSelectQuery($absences_saisie_query1, 'justif')->where('justif.nbJustif = 0')->where('justif.EleveId IN ?', $array_eleve_id);
        $absences_saisie_query->distinct()->select('Id');
        $array_absence_id = $absences_saisie_query->find();
        
        //on filtre la requete principale avec les saisies précédentes
        $query->useAbsenceEleveSaisieQuery()->where('AbsenceEleveSaisie.Id IN ?', $array_absence_id)->endUse();
    } else {
        $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery()->filterByAJustificationId(getFiltreRechercheParam('filter_justification'))->endUse()->endUse()->endUse();
    }
}

if (getFiltreRechercheParam('order') == "asc_id") {
    $query->orderBy('Id', Criteria::ASC);
} else if (getFiltreRechercheParam('order') == "des_id") {
    $query->orderBy('Id', Criteria::DESC);
Пример #13
0
}

$menu = isset($_POST["menu"]) ? $_POST["menu"] :(isset($_GET["menu"]) ? $_GET["menu"] : Null);

$nb = 100;
if (isset($_POST["nb_checkbox"])) {
    $nb = $_POST["nb_checkbox"];
} else if (isset($_POST["item_per_page"])) {
    $nb = $_POST["item_per_page"];
}
if ( isset($_POST["creation_notification"]) && $_POST["creation_notification"] == 'yes') {
    $traitement = new AbsenceEleveTraitement();
    $traitement->setUtilisateurProfessionnel($utilisateur);
    for($i=0; $i<$nb; $i++) {
	if (isset($_POST["select_saisie"][$i])) {
	    $traitement->addAbsenceEleveSaisie(AbsenceEleveSaisieQuery::create()->findPk($_POST["select_saisie"][$i]));
	}
    }
    if ($traitement->getAbsenceEleveSaisies()->isEmpty()) {
	$message_erreur_traitement = ' Erreur : aucune saisie sélectionnée';
    } else {
	$traitement->save();
        $notification = new AbsenceEleveNotification();
        $notification->setUtilisateurProfessionnel($utilisateur);
        $notification->setAbsenceEleveTraitement($traitement);

        //on met le type courrier par défaut
        $notification->setTypeNotification(AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_COURRIER);

        $responsable_eleve1 = null;
        $responsable_eleve2 = null;
Пример #14
0
	/**
	 * Get the associated AbsenceEleveSaisie object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     AbsenceEleveSaisie The associated AbsenceEleveSaisie object.
	 * @throws     PropelException
	 */
	public function getAbsenceEleveSaisie(PropelPDO $con = null)
	{
		if ($this->aAbsenceEleveSaisie === null && ($this->a_saisie_id !== null)) {
			$this->aAbsenceEleveSaisie = AbsenceEleveSaisieQuery::create()->findPk($this->a_saisie_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->aAbsenceEleveSaisie->addJTraitementSaisieEleves($this);
			 */
		}
		return $this->aAbsenceEleveSaisie;
	}
Пример #15
0
	public function testCompte_demi_journee()
	{
		$florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
		$saisie_col = AbsenceEleveSaisieQuery::create()->orderByDebutAbs(Criteria::DESC);
        try {
            AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col);
            $this->fail('Une exception doit être soulevée lors de cette sauvegarde');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        
        $this->assertTrue(AbsencesEleveSaisieHelper::compte_demi_journee(new PropelCollection())->isEmpty());
        
        $saisie_col = new PropelCollection();
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 08:00:00');
        $saisie->setFinAbs('2010-11-01 13:00:00');
        $saisie_col->append($saisie);
		saveSetting('abs2_heure_demi_journee','11:50');
        $this->assertEquals(1,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		saveSetting('abs2_heure_demi_journee','11:10');
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
		saveSetting('abs2_heure_demi_journee','11:50');
        
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 09:00:00');
        $saisie->setFinAbs('2010-11-01 17:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 09:00:00');
        $saisie->setFinAbs('2010-11-01 17:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 10:00:00');
        $saisie->setFinAbs('2010-11-02 10:50:00');
        $saisie_col->append($saisie);
        $this->assertEquals(3,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-02 13:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(3,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-02 17:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(4,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-03 10:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-03 17:30:00');//c'est un mercredi am donc on le compte pas, le total resta à 5
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-03 17:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-04 02:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-04 09:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(6,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-04 15:00:00');
        $saisie->setFinAbs('2010-11-04 16:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(7,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 14:00:00');
        $saisie->setFinAbs('2010-11-05 15:00:00');
        $saisie_col->append($saisie);
            saveSetting('abs2_heure_demi_journee','12:50');
        $this->assertEquals('12:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
            saveSetting('abs2_heure_demi_journee','11:50'); 

		$florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
		$lebesgue_prof = UtilisateurProfessionnelQuery::create()->findOneByLogin('Lebesgue');
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-10-19 08:00:00');
        $saisie->setFinAbs('2010-10-19 16:30:00');
        $saisie->setEleve($florence_eleve);
        $saisie->setUtilisateurProfessionnel($lebesgue_prof);
        $saisie->save();
        $saisie_col = new PropelCollection();
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

        //on va tester les effets de borne d'intervalle pour la bascule de midi
        saveSetting('abs2_heure_demi_journee','11:55');
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 11:55:00');//cette saisie va compter pour une après midi
        $saisie->setFinAbs('2010-11-05 12:25:00');
        $saisie_col->append($saisie);
        $this->assertEquals('12:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 11:50:00');
        $saisie->setFinAbs('2010-11-05 12:25:00');
        $saisie_col->append($saisie);
        $this->assertEquals('00:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
	}
Пример #16
0
	/**
	 *
	 * Renvoi une collection de saisies englobant celle ci au sens large (on renvoi aussi les saisies de bornes identiques)
	 *
	 * @return     AbsenceEleveLieu
	 *
	 */
	public function  getAbsenceEleveSaisiesEnglobantes() {
            if (!isset($this->saisiesEnglobantes) || $this->saisiesEnglobantes === null) {
                if ($this->getEleveId() == null) {
                    $this->saisiesEnglobantes = new PropelCollection();
                    return $this->saisiesEnglobantes;
                }

                $query = AbsenceEleveSaisieQuery::create();
                $query->filterById($this->getId(), Criteria::NOT_EQUAL);
                $query->filterByEleveId($this->getEleveId());
                $query->filterByDebutAbs($this->getDebutAbs(), Criteria::LESS_EQUAL);
                $query->filterByFinAbs($this->getFinAbs(), Criteria::GREATER_EQUAL);
                $this->saisiesEnglobantes = $query->find();
            }
            return $this->saisiesEnglobantes;
        }
Пример #17
0
	}    
	echo '</td>';
	if ($classe_col->isOdd()) {
	    echo '</tr>';
	}else if ($classe_col->isLast()) {
	    echo '<td></td><td></td>';
	    echo '</tr>';
	}
}
?>
	<tr>
		<td>Les Aid</td>
		<td colspan="3">
<?php
	//on affiche les saisies du creneau
	$abs_col = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_debut_creneau, $dt_fin_creneau)
			->filterByIdAid(null, Criteria::NOT_EQUAL)
                        ->useEleveQuery()->orderByNom()->endUse()
			->useAidDetailsQuery()->orderByNom()->endUse()
			->find();
	if (!$abs_col->isEmpty()) {
        $aid_deja_sorties = Array();
        $current_eleve = Null;
        foreach ($abs_col as $absenceSaisie) {
            if($absenceSaisie->getEleve()!=null && $absenceSaisie->getEleve()->isEleveSorti($dt_debut_creneau)){
                continue;
            }
            if ($absenceSaisie->getManquementObligationPresenceSpecifie_NON_PRECISE()) {
                continue;
            }
            if ($absenceSaisie->getIdAid() !== null && !in_array($absenceSaisie->getIdAid(), $aid_deja_sorties)) {
Пример #18
0
         ->filterByManquementObligationPresence(true)
         ->count();
 $eleve['non_justifiees'] = AbsenceAgregationDecompteQuery::create()
         ->filterByEleve($propel_eleve)
         ->filterByDateIntervalle($dt_date_absence_eleve_debut, $dt_date_absence_eleve_fin)
         ->filterByManquementObligationPresence(true)
         ->filterByNonJustifiee(true)
         ->count();
 $eleve['retards'] = AbsenceAgregationDecompteQuery::create()
         ->filterByEleve($propel_eleve)
         ->filterByDateIntervalle($dt_date_absence_eleve_debut, $dt_date_absence_eleve_fin)
         ->countRetards();
 foreach ($eleve['infos_saisies'] as $type_tab => &$value2) {
 foreach ($value2 as &$journee) {
     foreach ($journee as $key => &$value) {
     $abs_col = AbsenceEleveSaisieQuery::create()->filterById($value['saisies'])->orderByDebutAbs()->find();
     foreach( $abs_col as $saisie){
         if($abs_col->isFirst()){
             $date_debut_col=new DateTime($saisie->getDebutAbs());
             $date_fin_col=new DateTime($saisie->getFinAbs());                    
         }else{
             $date_debut_col_clone=new DateTime($saisie->getDebutAbs());
             $date_fin_col_clone=new DateTime($saisie->getFinAbs());
             if($date_debut_col_clone->format('U')<$date_debut_col->format('U')){
                 $date_debut_col=$date_debut_col_clone;
                 
             }
             if($date_fin_col_clone->format('U')>$date_fin_col->format('U')){
                 $date_fin_col=$date_fin_col_clone;
                 
             }
Пример #19
0
        $url='./visu_traitement.php?id_traitement='.$traitement->getId().'';
        if($menu){
            $url.='&menu=false';
        }
	header("Location:".$url);
        die;
    }
} else if ( isset($_POST["ajout_traitement"]) && $_POST["ajout_traitement"] == 'yes') {
    $id_traitement = isset($_POST["id_traitement"]) ? $_POST["id_traitement"] :(isset($_GET["id_traitement"]) ? $_GET["id_traitement"] :(isset($_SESSION["id_traitement"]) ? $_SESSION["id_traitement"] : NULL));
    $traitement = AbsenceEleveTraitementQuery::create()->findPk($id_traitement);
    if ($traitement == null) {
	$message_erreur_traitement = ' Erreur : aucun traitement trouvé';
    } else {
	for($i=0; $i<$nb; $i++) {
	    if (isset($_POST["select_saisie"][$i])) {
		$saisie = AbsenceEleveSaisieQuery::create()->findPk($_POST["select_saisie"][$i]);
		if (!$traitement->getAbsenceEleveSaisies()->contains($saisie)) {
		    $traitement->addAbsenceEleveSaisie($saisie);
		}
	    }
	}
	if ($traitement->getAbsenceEleveSaisies()->isEmpty()) {
	    $message_erreur_traitement = ' Erreur : aucune saisie sélectionnée';
	} else {
	    $traitement->save();
            if((isset($_POST['retour_absences_du_jour']))&&($_POST['retour_absences_du_jour']=="yes")) {
                $url='./absences_du_jour.php';
                $id_eleve=isset($_POST['id_eleve']) ? $_POST['id_eleve'] : (isset($_GET['id_eleve']) ? $_GET['id_eleve'] : NULL);
                if(isset($id_eleve)) {
                    $url.="#ancre_id_eleve_$id_eleve";
                }
Пример #20
0
	/**
	 * Check the soft_delete behavior for this model
	 * @return boolean true if the soft_delete behavior is enabled
	 */
	public static function isSoftDeleteEnabled()
	{
		return AbsenceEleveSaisieQuery::isSoftDeleteEnabled();
	}
Пример #21
0
	public function testPeerUpdateAgregationTable()
	{
	    //on va modifier à la main une saisie
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    foreach (EleveQuery::create()->find() as $eleve) {
            $eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59'));
	    }
	    sleep(1);
	    $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
	    $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(SAMEDI_s40j6)->getFirst();
	    $saisie_id = $saisie->getId();
        mysqli_query($GLOBALS["mysqli"], "update a_saisies set updated_at = now() where id = ".$saisie_id);
	    $this->assertFalse(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(null, null, 0));
	    $col = new PropelCollection();
	    $col->append($saisie);
	    AbsenceAgregationDecomptePeer::updateAgregationTable($col);
	    $this->assertTrue(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59'),0));
	    $this->assertTrue(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(null, null, 0));

	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    foreach (EleveQuery::create()->find() as $eleve) {
            $eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59'));
	    }
	    sleep(1);
	    $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
	    $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(VENDREDI_s40j5)->getFirst();
	    $saisie_id = $saisie->getId();
        mysqli_query($GLOBALS["mysqli"], "update a_saisies set fin_abs = '".VENDREDI_s40j5." 08:10:00' where id = ".$saisie_id);//ça devient un retard
	    $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(VENDREDI_s40j5)->findOne();
        $this->assertTrue($decompte->getManquementObligationPresence());
        $this->assertEquals(0,$decompte->getRetards());
        $saisie->getEleve()->clearAllReferences();
        $saisie->clearAllReferences();
        $saisie->reload();
	    $col = new PropelCollection();
	    $col->append($saisie);
	    AbsenceAgregationDecomptePeer::updateAgregationTable($col);
	    $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(VENDREDI_s40j5)->findOne();
	    $this->assertFalse($decompte->getManquementObligationPresence());
        $this->assertEquals(1,$decompte->getRetards());
        $saisie->setFinAbs(VENDREDI_s40j5.' 09:00:00');
        $saisie->save();
        
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
        AbsenceAgregationDecomptePeer::updateAgregationTable(AbsenceEleveSaisieQuery::create()->filterByPlageTemps(new DateTime(VENDREDI_s40j5), new DateTime(DIMANCHE_s41j7))->find());
        $eleve_col = EleveQuery::create()->useAbsenceEleveSaisieQuery()->filterByPlageTemps(new DateTime(VENDREDI_s40j5), new DateTime(DIMANCHE_s41j7))->endUse()->find();
        foreach($eleve_col as $eleve) {
            $this->assertTrue($eleve->checkSynchroAbsenceAgregationTable(new DateTime(SAMEDI_s40j6.' 00:00:00'),new DateTime(MARDI_s41j2)));
        }
	}
Пример #22
0
function affiche_abs2_sur_edt2()
{
    global $login_eleve;
    global $jours;
    global $largeur_jour;
    global $hauteur_jour;
    global $x_jour;
    global $premiere_heure;
    global $marge_secu;
    global $hauteur_titre;
    global $debug_edt;
    global $tabdiv_infobulle, $tabid_infobulle;
    global $x0, $y0, $largeur_edt, $hauteur_une_heure;
    global $hauteur_entete;
    $html = "";
    if (isset($login_eleve)) {
        foreach ($jours['num_jour'] as $num_jour => $current_jour) {
            if (!isset($ts_1er_jour)) {
                $ts_1er_jour = mktime(0, 0, 0, $current_jour['mm'], $current_jour['jj'], $current_jour['aaaa']);
                $mysqldate_1er_jour = $current_jour['aaaa'] . "-" . $current_jour['mm'] . "-" . $current_jour['jj'] . " 00:00:00";
            }
            $ts_dernier_jour = mktime(23, 59, 59, $current_jour['mm'], $current_jour['jj'], $current_jour['aaaa']);
            $mysqldate_dernier_jour = $current_jour['aaaa'] . "-" . $current_jour['mm'] . "-" . $current_jour['jj'] . " 23:59:59";
        }
        $tab_abs = array();
        $sql = "SELECT * FROM a_saisies a, eleves e \n\t\t\t\t\tWHERE e.id_eleve=a.eleve_id AND \n\t\t\t\t\t\te.login='******' AND \n\t\t\t\t\t\t((a.debut_abs>='" . $mysqldate_1er_jour . "' AND a.debut_abs<='" . $mysqldate_dernier_jour . "') OR \n\t\t\t\t\t\t(a.fin_abs>='" . $mysqldate_1er_jour . "' AND a.fin_abs<='" . $mysqldate_dernier_jour . "') OR \n\t\t\t\t\t\t(a.debut_abs<='" . $mysqldate_1er_jour . "' AND a.fin_abs>='" . $mysqldate_dernier_jour . "'));";
        //$html.="$sql<br />";
        $res = mysqli_query($GLOBALS["mysqli"], $sql);
        if (mysqli_num_rows($res) == 0) {
            $html .= "<p style='color:red'>Aucune saisie d'absence trouvée.</p>";
        } else {
            $cpt = 0;
            while ($lig = mysqli_fetch_assoc($res)) {
                // *******************************************************
                // *******************************************************
                // A FAIRE : Il faudrait récupérer l'info englobée ou non.
                // *******************************************************
                // *******************************************************
                $tab_abs[$cpt] = $lig;
                $id_saisie = $lig['id'];
                $tab_abs[$cpt]['englobee'] = "n";
                $saisie = AbsenceEleveSaisieQuery::create()->includeDeleted()->findPk($id_saisie);
                if ($saisie == null) {
                    $tab_abs[$cpt]['trouvee'] = "n";
                } else {
                    $tab_abs[$cpt]['trouvee'] = "y";
                    $saisies_englobante_col = $saisie->getAbsenceEleveSaisiesEnglobantes();
                    if (!$saisies_englobante_col->isEmpty()) {
                        $tab_abs[$cpt]['englobee'] = "y";
                    }
                }
                $cpt++;
            }
        }
        /*
        echo "tab_abs<pre>";
        print_r($tab_abs);
        echo "</pre>";
        */
        // Afficher ou non les saisies englobées.
        $afficher_englobee = "y";
        //$y_div_conteneur=$y1;
        $y_div_conteneur = $y0;
        //$y_div_conteneur=$y_decalage_2_js;
        //$html.="\$y_div_conteneur=$y_div_conteneur<br />";
        $cpt_abs = 0;
        foreach ($tab_abs as $cpt => $current_abs) {
            $ts_debut_abs = mysql_date_to_unix_timestamp($current_abs['debut_abs']);
            $ts_fin_abs = mysql_date_to_unix_timestamp($current_abs['fin_abs']);
            //$aaaammjj_debut_abs=strftime("%Y%m%d", $ts_debut_abs);
            // Il faut boucler sur les jours inclus dans l'absence
            // ERREUR : Si l'absence dure plus d'une semaine... SAUF QU'ON N'AFFICHE QU'UNE SEMAINE A LA FOIS SUR L'EDT
            foreach ($jours['num_jour'] as $num_jour => $current_jour) {
                if ($ts_fin_abs > $current_jour['timestamp'] && $ts_debut_abs <= $current_jour['timestamp'] + 3600 * 24 - 1) {
                    //$x=$x1+$x0+($num_jour-1)*$largeur_jour+$marge_secu/2;
                    $x = $x0 + ($num_jour - 1) * $largeur_jour + $marge_secu / 2;
                    //$ts_debut_1er_jour_absence=mktime(0,0,0,strftime("%m", $ts_debut_abs),strftime("%d", $ts_debut_abs),strftime("%Y", $ts_debut_abs));
                    $ts_debut_jour = mktime(0, 0, 0, strftime("%m", $current_jour['timestamp']), strftime("%d", $current_jour['timestamp']), strftime("%Y", $current_jour['timestamp']));
                    if ($ts_debut_abs < $current_jour['timestamp']) {
                        // L'absence débute avant ce jour
                        // On va prendre l'heure de début de journée
                        //$y=$y_div_conteneur+$hauteur_entete+$hauteur_titre;
                        $y = $y_div_conteneur + $hauteur_entete;
                    } elseif ($ts_debut_abs < $current_jour['timestamp'] + 3600 * 24 - 1) {
                        // L'absence débute dans la journée
                        $delta = ($ts_debut_abs - $ts_debut_jour - 3600 * $premiere_heure) / 3600;
                        //$y=$y_div_conteneur+$hauteur_entete+$hauteur_titre+$delta*$hauteur_une_heure;
                        $y = $y_div_conteneur + $hauteur_entete + $delta * $hauteur_une_heure;
                    }
                    // Fin du div
                    if ($ts_fin_abs > $current_jour['timestamp'] + 3600 * 24 - 1) {
                        //$y_fin=$y_div_conteneur+$hauteur_entete+$hauteur_titre+$hauteur_jour;
                        $y_fin = $y_div_conteneur + $hauteur_entete + $hauteur_jour;
                        if (isset($tab_jour[$num_jour - 1]) && isset($tab_horaire_jour[$tab_jour[$num_jour - 1]])) {
                            $tmp_tab = explode(":", $tab_horaire_jour[$tab_jour[$num_jour - 1]]['fermeture_horaire_etablissement']);
                            $heure = $tmp_tab[0];
                            $minute = $tmp_tab[1];
                            $seconde = $tmp_tab[2];
                            $ts_fin_journee_cours = mktime($heure, $minute, $seconde, strftime("%m", $ts_debut_jour), strftime("%d", $ts_debut_jour), strftime("%Y", $ts_debut_jour));
                            $delta = ($ts_fin_journee_cours - $ts_debut_jour - 3600 * $premiere_heure) / 3600;
                            //$y_fin=$y_div_conteneur+$hauteur_entete+$hauteur_titre+$delta*$hauteur_une_heure;
                            $y_fin = $y_div_conteneur + $hauteur_entete + $delta * $hauteur_une_heure;
                        }
                    } else {
                        // L'absence finit dans la journée
                        $delta = ($ts_fin_abs - $ts_debut_jour - 3600 * $premiere_heure) / 3600;
                        //$y_fin=$y_div_conteneur+$hauteur_entete+$hauteur_titre+$delta*$hauteur_une_heure;
                        $y_fin = $y_div_conteneur + $hauteur_entete + $delta * $hauteur_une_heure;
                    }
                    // Pour éviter des collisions d'affichage lors du debug
                    $decalage_x = 0;
                    $chaine_debug = "";
                    //$decalage_x=$largeur_jour/2;
                    //$chaine_debug="<span style='font-size:xx-small; color:red'>".ceil($y)."</span>";
                    // Pour les saisies englobées, il faudrait juste afficher un texte avec un lien/action ouvrant la saisie.
                    if ($current_abs['englobee'] == 'n') {
                        $bgcolor = "background-color:red; ";
                        // Défaut: pour une absence courant sur plusieurs jours, on n'entoure que le div de la journée de début de la saisie englobante
                        $chaine_mise_en_exergue = "";
                        $chaine_mise_en_exergue = "onmouseover=\"document.getElementById('div_fond_abs_" . $cpt_abs . "').style.border='2px solid lime'\" onmouseout=\"document.getElementById('div_fond_abs_" . $cpt_abs . "').style.border='0px solid red'\" ";
                        // Fond : Opacité 50
                        $html .= "<div id='div_fond_abs_" . $cpt_abs . "' style='position:absolute; top:" . ceil($y) . "px; left:" . ceil($x) . "px; width:" . ($largeur_jour - $marge_secu) . "px; height:" . floor($y_fin - $y) . "px; opacity:0.5; " . $bgcolor . " border:1px solid red; z-index:3000;' " . $chaine_mise_en_exergue . " title=\"Saisie n°" . $current_abs['id'] . "\n\tDu " . formate_date($current_abs['debut_abs'], "y", "court") . " au " . formate_date($current_abs['fin_abs'], "y", "court") . "\"></div>";
                        //<a href='../mod_abs2/visu_saisie.php?id_saisie=".$current_abs['id']."' target='_blank'>".$current_abs['id']."</a>
                        // Texte
                        $html .= "<div id='div_saisie_abs_" . $cpt_abs . "' style='position:absolute; top:" . ceil($y) . "px; left:" . ceil($x + $decalage_x) . "px; width:16px; height:16px; z-index:3001;'><a href='../mod_abs2/visu_saisie.php?id_saisie=" . $current_abs['id'] . "' onclick=\"visu_saisie_abs_en_infobulle(" . $current_abs['id'] . ");return false;\" target='_blank' title=\"Voir la saisie n°" . $current_abs['id'] . "\n\tDu " . formate_date($current_abs['debut_abs'], "y", "court") . " au " . formate_date($current_abs['fin_abs'], "y", "court") . "\"><img src='../images/icons/saisie_1.png' class='icone16' alt='Saisie' /></a>" . $chaine_debug . "</div>";
                    } else {
                        $bgcolor = "";
                        if ($afficher_englobee == "y") {
                            // Texte
                            $html .= "<div id='div_saisie_abs_" . $cpt_abs . "' style='position:absolute; top:" . ceil($y) . "px; left:" . ceil($x + $decalage_x) . "px; width:" . ($largeur_jour - $marge_secu) . "px; height:" . floor($y_fin - $y) . "px; " . $bgcolor . "z-index:3001;'><a href='../mod_abs2/visu_saisie.php?id_saisie=" . $current_abs['id'] . "' onclick=\"visu_saisie_abs_en_infobulle(" . $current_abs['id'] . ");return false;\" target='_blank' title=\"Voir la saisie (englobée) n°" . $current_abs['id'] . "\n\tDu " . formate_date($current_abs['debut_abs'], "y", "court") . " au " . formate_date($current_abs['fin_abs'], "y", "court") . "\"><img src='../images/icons/saisie.png' class='icone16' alt='Saisie' /></a>" . $chaine_debug . "</div>";
                        }
                    }
                    $cpt_abs++;
                }
            }
        }
        /*
        		echo "<div style='clear:both;'></div>";
        echo "<pre>";
        		print_r($jours);
        		echo "</pre>";
        */
        $titre_infobulle = "Saisie Absence";
        $texte_infobulle = "<div id='div_visu_saisie_abs'></div>";
        $tabdiv_infobulle[] = creer_div_infobulle('infobulle_visu_saisie_abs', $titre_infobulle, "", $texte_infobulle, "", 40, 0, 'y', 'y', 'n', 'n', 4000);
        $html .= "<script type='text/javascript'>\n\t\tfunction visu_saisie_abs_en_infobulle(id_saisie) {\n\t\t\t//alert('plop');\n\t\t\tnew Ajax.Updater(\$('div_visu_saisie_abs'),'../lib/ajax_action.php?mode=visu_abs&id_saisie='+id_saisie,{method: 'get'});\n\t\t\tafficher_div('infobulle_visu_saisie_abs', 'y', 10,10);\n\t\t}\n\n\t\tfunction permuter_display_div_abs(mode) {\n\t\t\tif(mode=='') {\n\t\t\t\tif(document.getElementById('lien_permuter_display_abs_visible')) {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_visible').style.display='none';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_visible').style.display='';\n\t\t\t\t}\n\n\t\t\t\tif(document.getElementById('lien_permuter_display_abs_invisible')) {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_invisible').style.display='';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_invisible').style.display='none';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(document.getElementById('lien_permuter_display_abs_visible')) {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_visible').style.display='';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_visible').style.display='none';\n\t\t\t\t}\n\n\t\t\t\tif(document.getElementById('lien_permuter_display_abs_invisible')) {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_invisible').style.display='none';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdocument.getElementById('lien_permuter_display_abs_invisible').style.display='';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor(i=0;i<{$cpt_abs};i++) {\n\t\t\t\tif(document.getElementById('div_fond_abs_'+i)) {\n\t\t\t\t\tdocument.getElementById('div_fond_abs_'+i).style.display=mode;\n\t\t\t\t}\n\t\t\t\tif(document.getElementById('div_saisie_abs_'+i)) {\n\t\t\t\t\tdocument.getElementById('div_saisie_abs_'+i).style.display=mode;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpermuter_display_div_abs('');\n\t</script>";
    }
    return $html;
}
Пример #23
0
	/**
	 * Gets the number of AbsenceEleveSaisie objects related by a many-to-many relationship
	 * to the current object by way of the j_traitements_saisies 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 AbsenceEleveSaisie objects
	 */
	public function countAbsenceEleveSaisies($criteria = null, $distinct = false, PropelPDO $con = null)
	{
		if(null === $this->collAbsenceEleveSaisies || null !== $criteria) {
			if ($this->isNew() && null === $this->collAbsenceEleveSaisies) {
				return 0;
			} else {
				$query = AbsenceEleveSaisieQuery::create(null, $criteria);
				if($distinct) {
					$query->distinct();
				}
				return $query
					->filterByAbsenceEleveTraitement($this)
					->count($con);
			}
		} else {
			return count($this->collAbsenceEleveSaisies);
		}
	}
 if ($abs2_rattachement_auto_saisies_englobees == "y") {
     //$acces_visu_traitement=acces("/mod_abs2/visu_traitement.php", $_SESSION['statut']);
     $acces_visu_traitement = false;
     if (acces("/mod_abs2/visu_traitement.php", $_SESSION['statut']) && in_array($_SESSION['statut'], array('cpe', 'scolarite', 'administrateur'))) {
         $acces_visu_traitement = true;
     }
     $debut_saisie = strftime("%Y-%m-%d %H:%M:%S", $saisie->getDebutAbs('U'));
     $fin_saisie = strftime("%Y-%m-%d %H:%M:%S", $saisie->getFinAbs('U'));
     // Recherche d'une saisie/traitement englobant la saisie courante
     $sql = "SELECT a_s.*, at.id AS id_traitement FROM a_saisies a_s, \n\t\t\t\t\tj_traitements_saisies jts, \n\t\t\t\t\ta_traitements at \n\t\t\t\tWHERE a_s.eleve_id='" . $saisie->getEleve()->getId() . "' AND \n\t\t\t\t\ta_s.deleted_at IS NULL AND \n\t\t\t\t\tat.deleted_at IS NULL AND \n\t\t\t\t\ta_s.id=jts.a_saisie_id AND \n\t\t\t\t\tat.id=jts.a_traitement_id AND \n\t\t\t\t\t((a_s.debut_abs<='" . $debut_saisie . "' AND a_s.fin_abs>'" . $fin_saisie . "') OR (a_s.debut_abs<'" . $debut_saisie . "' AND a_s.fin_abs>='" . $fin_saisie . "')) AND \n\t\t\t\t\ta_s.id!='" . $saisie->getPrimaryKey() . "';";
     //$message_enregistrement .= "Test de rattachement pour ".$saisie->getEleve()->getLogin().":<br />$sql<br/>";
     $res = mysqli_query($mysqli, $sql);
     if (mysqli_num_rows($res) == 1) {
         $lig_saisie_conteneur = mysqli_fetch_object($res);
         // Pour afficher des infos:
         $saisie_conteneur = AbsenceEleveSaisieQuery::create()->includeDeleted()->findPk($lig_saisie_conteneur->id);
         $message_enregistrement .= " (<em><a href='visu_saisie.php?id_saisie=" . $lig_saisie_conteneur->id . "' target='_blank' title=\"Saisie englobée par la saisie n°" . $lig_saisie_conteneur->id . " (du " . $saisie_conteneur->getDebutAbs('d/m/y H:i') . " au " . $saisie_conteneur->getFinAbs('d/m/y H:i') . ")\">saisie englobée</a>";
         $sql = "SELECT 1=1 FROM j_traitements_saisies WHERE a_saisie_id='" . $saisie->getPrimaryKey() . "' AND a_traitement_id='" . $lig_saisie_conteneur->id_traitement . "';";
         $res = mysqli_query($mysqli, $sql);
         if (mysqli_num_rows($res) == 0) {
             $sql = "INSERT INTO j_traitements_saisies SET  a_saisie_id='" . $saisie->getPrimaryKey() . "', a_traitement_id='" . $lig_saisie_conteneur->id_traitement . "';";
             //$message_enregistrement .= "$sql<br/>";
             $insert = mysqli_query($mysqli, $sql);
             if ($insert) {
                 if ($acces_visu_traitement) {
                     $message_enregistrement .= " (<a href='visu_traitement.php?id_traitement=" . $lig_saisie_conteneur->id_traitement . "' title=\"Saisie rattachée au traitement n°" . $lig_saisie_conteneur->id_traitement . "\" target='_blank'>saisie rattachée</a>)";
                 } else {
                     $message_enregistrement .= " (<span title=\"Saisie rattachée au traitement n°" . $lig_saisie_conteneur->id_traitement . "\" target='_blank'>saisie rattachée</span>)";
                 }
             } else {
                 $message_enregistrement .= " <span style='color:red'>(erreur lors du rattachement de la saisie)</span>";
Пример #25
0
	$query->filterByIdGroupe($current_groupe->getId());
    }
    if ($current_classe != null) {
	$query->filterByIdClasse($current_classe->getId());
    }
    $query->filterByUtilisateurProfessionnel($utilisateur);
    $dt = clone $dt_date_absence_eleve;
    $dt->setTime($current_cours->getHeureDebut('H'), $current_cours->getHeureDebut('i'));
    $dt_end = clone $dt;
    $dt_end->setTime($current_cours->getHeureFin('H'), $current_cours->getHeureFin('i'));
    $query->filterByPlageTemps($dt, $dt_end);
    if ($query->count() > 0) {
	$deja_saisie = true;
    }
} elseif ($current_creneau != null) {
    $query = AbsenceEleveSaisieQuery::create();
    if ($current_aid != null) {
	$query->filterByIdAid($current_aid->getId());
    }
    if ($current_groupe != null) {
	$query->filterByIdGroupe($current_groupe->getId());
    }
    if ($current_classe != null) {
	$query->filterByIdClasse($current_classe->getId());
    }
    $query->filterByUtilisateurProfessionnel($utilisateur);
    $dt = clone $dt_date_absence_eleve;
    $dt->setTime($current_creneau->getHeuredebutDefiniePeriode('H'), $current_creneau->getHeuredebutDefiniePeriode('i'));
    $dt_end = clone $dt;
    $dt_end->setTime($current_creneau->getHeurefinDefiniePeriode('H'), $current_creneau->getHeurefinDefiniePeriode('i'));
    $query->filterByPlageTemps($dt, $dt_end);
Пример #26
0
	/**
	 *
	 * Retourne la collection des absences saisies pour ce creneau. Si null, on prend le creneau actuel
	 *
	 * @param      mixed $v string, integer (timestamp), or DateTime value.  Empty string will
	 *						be treated as NULL for temporal objects.
	 * @return PropelObjectCollection AbsenceEleveSaisie
	 */
	public function getEdtCreneauAbsenceSaisie($edtcreneau = null, $v = 'now'){
	    if ($edtcreneau == null) {
		$edtcreneau = EdtCreneauPeer::retrieveEdtCreneauActuel($v);
	    }

	    if (!($edtcreneau instanceof EdtCreneau)) {
		$edtcreneau = EdtCreneauQuery::create()->findPk($edtcreneau);
		if ($edtcreneau == null) {
		    return new PropelObjectCollection();
		}
	    }

	    // we treat '' and NULL as 'now' for temporal
	    if ($v === null || $v === '') {
		    $dt = new DateTime('now');
	    } elseif ($v instanceof DateTime) {
		    $dt = clone $v;
	    } else {
		    // some string/numeric value passed; we normalize that so that we can
		    // validate it.
		    try {
			    if (is_numeric($v)) { // if it's a unix timestamp
				    $dt = new DateTime('@'.$v, new DateTimeZone('UTC'));
				    // We have to explicitly specify and then change the time zone because of a
				    // DateTime bug: http://bugs.php.net/bug.php?id=43003
				    $dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));
			    } else {
				    $dt = new DateTime($v);
			    }
		    } catch (Exception $x) {
			    throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x);
		    }
	    }

	    $query = AbsenceEleveSaisieQuery::create();
	    $query->filterByUtilisateurProfessionnel($this);
	    $dt->setTime($edtcreneau->getHeuredebutDefiniePeriode('H'), $edtcreneau->getHeuredebutDefiniePeriode('i'));
	    $dt_end = clone $dt;
	    $dt_end->setTime($edtcreneau->getHeurefinDefiniePeriode('H'), $edtcreneau->getHeurefinDefiniePeriode('i'));
	    $query->filterByPlageTemps($dt, $dt_end);
	    $col = $query->find();
	    return $col;
	}
    try {
        $heure_debut = new DateTime($_POST['heure_debut']);
        $date_debut->setTime($heure_debut->format('H'), $heure_debut->format('i'));
    } catch (Exception $x) {
        $message_enregistrement .= "<span style='color:red'>Mauvais format d'heure.</span><br/>";
    }
    // Heure de fin transmise au format HH:MM
    try {
        $heure_fin = new DateTime($_POST['heure_fin']);
        $date_fin->setTime($heure_fin->format('H'), $heure_fin->format('i'));
    } catch (Exception $x) {
        $message_enregistrement .= "<span style='color:red'>Mauvais format d'heure.</span><br/>";
    }
    if ($message_enregistrement == "") {
        for ($loop = 0; $loop < count($id_saisie); $loop++) {
            $saisie = AbsenceEleveSaisieQuery::create()->includeDeleted()->findPk($id_saisie[$loop]);
            if ($saisie != null) {
                $saisie->setDebutAbs($date_debut);
                $saisie->setFinAbs($date_fin);
                $saisie->save();
            }
        }
    }
    include "visu_traitement.php";
    die;
}
if (!$traitement->isModified()) {
    if (isset($count_delete) && $count_delete > 0) {
        $message_enregistrement .= '<span style="color:red">Saisie supprimée</span>';
    } else {
        $message_enregistrement .= '<span style="color:red">Pas de modifications</span>';
Пример #28
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(AbsenceEleveSaisiePeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
		}

		$con->beginTransaction();
		try {
			$deleteQuery = AbsenceEleveSaisieQuery::create()
				->filterByPrimaryKey($this->getPrimaryKey());
			$ret = $this->preDelete($con);
			// soft_delete behavior
			if (!empty($ret) && AbsenceEleveSaisieQuery::isSoftDeleteEnabled()) {
				$this->keepUpdateDateUnchanged();
				$this->setDeletedAt(time());
				$this->save($con);
				$this->postDelete($con);
				$con->commit();
				AbsenceEleveSaisiePeer::removeInstanceFromPool($this);
				return;
			}

			if ($ret) {
				$deleteQuery->delete($con);
				$this->postDelete($con);
				// versionable behavior
				// emulate delete cascade
				AbsenceEleveSaisieVersionQuery::create()
					->filterByAbsenceEleveSaisie($this)
					->delete($con);
				$con->commit();
				$this->setDeleted(true);
			} else {
				$con->commit();
			}
		} catch (Exception $e) {
			$con->rollBack();
			throw $e;
		}
	}
Пример #29
0
	/**
	 * If this collection has already been initialized with
	 * an identical criteria, it returns the collection.
	 * Otherwise if this AidDetails is new, it will return
	 * an empty collection; or if this AidDetails has previously
	 * been saved, it will retrieve related AbsenceEleveSaisies from storage.
	 *
	 * This method is protected by default in order to keep the public
	 * api reasonable.  You can provide public methods for those you
	 * actually need in AidDetails.
	 *
	 * @param      Criteria $criteria optional Criteria object to narrow the query
	 * @param      PropelPDO $con optional connection object
	 * @param      string $join_behavior optional join type to use (defaults to Criteria::LEFT_JOIN)
	 * @return     PropelCollection|array AbsenceEleveSaisie[] List of AbsenceEleveSaisie objects
	 */
	public function getAbsenceEleveSaisiesJoinAbsenceEleveLieu($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
	{
		$query = AbsenceEleveSaisieQuery::create(null, $criteria);
		$query->joinWith('AbsenceEleveLieu', $join_behavior);

		return $this->getAbsenceEleveSaisies($query, $con);
	}
Пример #30
0
    $date2 = clone $dt_date_absence_eleve_fin;
    $dt_date_absence_eleve_fin = $dt_date_absence_eleve_debut;
    $dt_date_absence_eleve_debut = $date2;
    $inverse_date = true;
    $_SESSION['date_absence_eleve_debut'] = $dt_date_absence_eleve_debut->format('d/m/Y');
    $_SESSION['date_absence_eleve_fin'] = $dt_date_absence_eleve_fin->format('d/m/Y');
}
/***** Fin gestion des dates *****/
$eleve_id = $eleve->getId();
//on initialise les donnees pour l'élève
$donnees[$eleve_id]['nom'] = $eleve->getNom();
$donnees[$eleve_id]['prenom'] = $eleve->getPrenom();
$donnees[$eleve_id]['classe'] = $eleve->getClasseNom();
$donnees[$eleve_id]['nbre_lignes_total'] = 0;
// on récupère les saisies de l'élève
$saisie_query = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_date_absence_eleve_debut, $dt_date_absence_eleve_fin)->filterByEleveId($eleve->getId());
if ($type_extrait == '1') {
    $saisie_query->filterByManquementObligationPresence(true);
}
$saisie_query->orderByDebutAbs();
$saisie_col = $saisie_query->find();
// on traite les saisies et on stocke les informations dans un tableau
foreach ($saisie_col as $saisie) {
    if ($type_extrait == '1' && !$saisie->getManquementObligationPresence()) {
        continue;
    }
    //$afficher_strictement_englobee="y";
    if ($afficher_strictement_englobee != "y") {
        $strictement_englobee = false;
        foreach ($saisie->getAbsenceEleveSaisiesEnglobantes() as $saisie_englobante) {
            if ($saisie_englobante->getManquementObligationPresenceSpecifie_NON_PRECISE()) {