コード例 #1
0
 	/**
	 * Retrourne la periode actuelle, ou null si aucune periode n'est trouve pour le jours actuel
	 *
	 * @param      mixed $v string, integer (timestamp), or DateTime value.  Empty string will
	 *						be treated as NULL for temporal objects.
	 * @return     EdtCalendrierPeriode la periode actuelle
	 */
	public static function retrieveEdtCalendrierPeriodeActuelle($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);
			}
		}
        $edt_periode_actuelle=Null;
        $intervalle_periode=Null;
		foreach (EdtCalendrierPeriodePeer::retrieveAllEdtCalendrierPeriodesOrderByTime() as $edtPeriode) {
          if ($edtPeriode->getJourdebutCalendrier('Y-m-d') <= $dt->format('Y-m-d')
			    &&	$edtPeriode->getJourfinCalendrier('Y-m-d') >= $dt->format('Y-m-d')) {
			   if (is_null($edt_periode_actuelle)){ //c'est la première periode rencontrée qui correspond
                 $edt_periode_actuelle=$edtPeriode;
                 $intervalle_periode=$edtPeriode->getFinCalendrierTs()-$edtPeriode->getDebutCalendrierTs();  
               }else{
          //si une periode plus courte correspond on prend celle là
          if ($edtPeriode->getFinCalendrierTs()-$edtPeriode->getDebutCalendrierTs()<=$intervalle_periode) {
            $edt_periode_actuelle = $edtPeriode;
            $intervalle_periode=$edtPeriode->getFinCalendrierTs()-$edtPeriode->getDebutCalendrierTs();
          }
        }
      }
    }
    return $edt_periode_actuelle;
		//return null;
//		return EdtCalendrierPeriodeQuery::create()
//			->filterByJourdebutCalendrier($dt, Criteria::LESS_EQUAL)
//			//->filterByHeuredebutCalendrier($dt, Criteria::GREATER_EQUAL)
//			->filterByJourfinCalendrier($dt, Criteria::GREATER_EQUAL)
//			//->filterByHeurefinCalendrier($dt, Criteria::LESS_EQUAL)
//			->findOne();
	}