public function testToDateTime()
 {
     CopixI18N::setLang('fr');
     $this->assertEquals('25/12/1976', CopixDateTime::timestampToDate(220316400));
     $this->assertEquals('25/12/1976', CopixDateTime::yyyymmddToDate('19761225'));
     $this->assertEquals('25/12/1976 15:00:00', CopixDateTime::yyyymmddhhiissToDateTime('19761225150000'));
     CopixI18N::setLang('en');
     $this->assertEquals('12/25/1976', CopixDateTime::YYYYMMDDToDate('19761225'));
     $this->assertNull(null);
     $this->assertFalse(CopixDateTime::YYYYMMDDToDate('1123761225'));
     $this->assertEquals('12/25/1976', CopixDateTime::timestampToDate(220316400));
     $this->assertEquals('12/25/1976 15:00:00', CopixDateTime::yyyymmddhhiissToDateTime('19761225150000'));
     $this->assertEquals('12/25/1976 10:00:00', CopixDateTime::yyyymmddhhiissToDateTime('19761225100000'));
 }
 /**
  * Fonction qui fait la v�rification sur les champs de saisie du formulaire d'ajout d'un �v�nement
  * @access: private
  * @return array $toReturn tableau qui contient les erreurs de saisie de l'utilisateur
  */
 public function _check($obj)
 {
     $toReturn = array();
     //var_dump($obj);
     $datedeb = $obj->datedeb_event;
     $datefin = $obj->datefin_event;
     $datejusquau = isset($obj->dateendrepeat_event) ? $obj->dateendrepeat_event : null;
     $datedebTs = CopixDateTime::dateToTimestamp($datedeb);
     $datefinTs = CopixDateTime::dateToTimestamp($datefin);
     $datejusquauTs = CopixDateTime::dateToTimestamp($datejusquau);
     //conversion des heures au format hhmm pour pouvoir les comparer
     $heuredeb = dateService::heureWithSeparateurToheureWithoutSeparateur($obj->heuredeb_event);
     $heurefin = dateService::heureWithSeparateurToheureWithoutSeparateur($obj->heurefin_event);
     $endrepeat_event = isset($obj->endrepeat_event) ? $obj->endrepeat_event : false;
     //$dateendrepeat_event = $this->getRequest('dateendrepeat_event', null);
     $repeat_event = isset($obj->repeat_event) ? $obj->repeat_event : false;
     //v�rification si les champs sont bien remplis
     if ($obj->title_event == null || $obj->title_event == '') {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.notitle');
     }
     if ($endrepeat_event == 'nbfois' && isset($obj->nb_fois) && !is_numeric($obj->nb_fois)) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nbFoisIsNotNumeric');
     }
     if (!$datedeb) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodatedeb');
     }
     if (!$datefin) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodatefin');
     }
     if ($obj->alldaylong_event == null && ($obj->heuredeb_event == null || $obj->heuredeb_event == '')) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.noheuredeb');
     }
     if ($obj->alldaylong_event == null && ($obj->heurefin_event == null || $obj->heurefin_event == '')) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.noheurefin');
     }
     if ($endrepeat_event == 'nbfois' && ($obj->nb_fois == '' || $obj->nb_fois == null)) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nonbfois');
     }
     if ($endrepeat_event == 'date' && ($datejusquau == '' || $datejusquau == null) && $obj->repeat == 1) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodateendrepeat');
     }
     if ($endrepeat_event == 'date' && ($obj->endrepeat_event == '' || $obj->endrepeat_event == null)) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodatefinrepeat');
     }
     if (isset($obj->repeat) && $obj->repeat == 1 && (!isset($obj->endrepeat_event) || $obj->endrepeat_event == null)) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.noprecisionrepeat');
     }
     //var_dump($datedebTs);
     //var_dump($datefinTs);
     //v�rification sur le format des dates
     if ($datedeb) {
         if (CopixDateTime::timestampToDate($datedebTs) === false) {
             $toReturn[] = CopixI18N::get('agenda|agenda.error.formdatedeb');
         }
     }
     if ($datefin) {
         if (CopixDateTime::timestampToDate($datefinTs) === false) {
             $toReturn[] = CopixI18N::get('agenda|agenda.error.formdatefin');
         }
     }
     //v�rification sur la coh�rence des dates de d�but et de fin
     if ($datedeb && $datefin && $datedebTs && $datefinTs && $datedebTs > $datefinTs) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.inversiondate');
     }
     if (isset($obj->repeat) && $obj->repeat == 1 && $datedebTs && $datejusquauTs && $obj->endrepeat_event != null && $datedebTs > $datejusquauTs && $obj->endrepeat_event == 'date') {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.inversiondaterepeat');
     }
     //v�rification sur la coh�rence des heures de d�but et de fin
     if ($datedebTs && $datefinTs && $datedebTs == $datefinTs && $heuredeb > $heurefin && $obj->alldaylong_event != 1 && ($obj->heurefin_event != null || $obj->heurefin_event != '')) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.inversionheure');
     }
     if ($datejusquau) {
         if (CopixDateTime::timestampToDate($datejusquauTs) === false) {
             $toReturn[] = CopixI18N::get('agenda|agenda.error.formdatejusqu');
         }
     }
     //v�rification sur le format des heures
     if ($obj->heuredeb_event != null || $obj->heuredeb_event != '') {
         if (!ereg("([0-2])?[0-9]:[0-5][0-9]", $obj->heuredeb_event)) {
             $toReturn[] = CopixI18N::get('agenda|agenda.error.formheuredeb');
         } else {
             $heure = explode(":", $obj->heuredeb_event);
             if ($heure[0] < 0 || $heure[0] > 23 || $heure[1] < 0 || $heure[1] > 59) {
                 $toReturn[] = CopixI18N::get('agenda|agenda.error.formheuredeb');
             }
         }
     }
     if ($obj->heurefin_event != null || $obj->heurefin_event != '') {
         if (!ereg("([0-2])?[0-9]:[0-5][0-9]", $obj->heurefin_event)) {
             $toReturn[] = CopixI18N::get('agenda|agenda.error.formheurefin');
         } else {
             $heure = explode(":", $obj->heurefin_event);
             if ($heure[0] < 0 || $heure[0] > 23 || $heure[1] < 0 || $heure[1] > 59) {
                 $toReturn[] = CopixI18N::get('agenda|agenda.error.formheurefin');
             }
         }
     }
     //v�rifier que la fr�quence de r�p�tition est coh�rente avec la dur�e de l'�v�nement
     if ($obj->datedeb_event && $obj->datefin_event && $obj->heuredeb_event && $obj->heurefin_event && $repeat_event == 'everyday_event' && DateService::getNomberDaysBeetweenTwoDates($obj->datedeb_event, $obj->datefin_event, $obj->heuredeb_event, $obj->heurefin_event) > 1) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.freqrepetitionday');
     }
     if ($repeat_event == 'everyweek_event' && DateService::getNomberDaysBeetweenTwoDates($obj->datedeb_event, $obj->datefin_event, $obj->heuredeb_event, $obj->heurefin_event) > 7) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.freqrepetitionweek');
     }
     if ($repeat_event == 'everymonth_event' && DateService::getNomberDaysBeetweenTwoDates($obj->datedeb_event, $obj->datefin_event, $obj->heuredeb_event, $obj->heurefin_event) > 28) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.freqrepetitionmonth');
     }
     if ($repeat_event == 'everyyear_event' && DateService::getNomberDaysBeetweenTwoDates($obj->datedeb_event, $obj->datefin_event, $obj->heuredeb_event, $obj->heurefin_event) > 365) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.freqrepetitionyear');
     }
     return $toReturn;
 }
 /**
  * Enregistrement de la modification d'un membre d'un groupe
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2007/01/09
  * @param integer $id Id du groupe
  * @param string $user_type Type du membre
  * @param integer $user_id Id du membre
  * @param integer $droit Son nouveau droit
  * @param string $debut Sa nouvelle date de d�but de validit�
  * @param string $fin Sa nouvelle date de fin de validit�
  */
 public function doModifyMember()
 {
     $dao = CopixDAOFactory::create("groupe");
     $kernel_service =& CopixClassesFactory::Create('kernel|kernel');
     $groupeService =& CopixClassesFactory::Create('groupe|groupeService');
     $id = $this->getRequest('id', null);
     $user_type = $this->getRequest('user_type', null);
     $user_id = $this->getRequest('user_id', null);
     $droit = $this->getRequest('droit', null);
     $req_debut = $this->getRequest('debut', null);
     $req_fin = $this->getRequest('fin', null);
     //$debut     = dateService::dateFrToDateBdd($req_debut);
     //$fin     = dateService::dateFrToDateBdd($req_fin);
     $debut = CopixDateTime::dateToTimestamp($req_debut);
     $fin = CopixDateTime::dateToTimestamp($req_fin);
     $critical_errors = $errors = array();
     $groupe = $dao->getGroupe($id);
     if (!$groupe) {
         $critical_errors[] = CopixI18N::get('groupe|groupe.error.noGroup');
     } else {
         $mondroit = $kernel_service->getLevel("CLUB", $id);
         if (!$groupeService->canMakeInGroupe('ADMIN', $mondroit)) {
             $critical_errors[] = CopixI18N::get('kernel|kernel.error.noRights');
         } else {
             // On v�rifie que le membre demand� fait bien partie du groupe /* et qu'il n'est pas le propri�taire */
             $level = Kernel::getLevel('CLUB', $id, $user_type, $user_id);
             if ($level <= PROFILE_CCV_SHOW) {
                 $critical_errors[] = CopixI18N::get('kernel|kernel.error.noRights');
             }
         }
     }
     if ($critical_errors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $critical_errors), 'back' => CopixUrl::get('groupe||')));
     } else {
         // Tests sur les dates
         if ($req_debut) {
             if (CopixDateTime::timestampToDate($debut) === false) {
                 $errors[] = CopixI18N::get('groupe|groupe.error.formdatedeb');
             }
         }
         if ($req_fin) {
             if (CopixDateTime::timestampToDate($fin) === false) {
                 $errors[] = CopixI18N::get('groupe|groupe.error.formdatefin');
             }
         }
         if ($req_debut && $req_fin && $debut && $fin && $debut > $fin) {
             $errors[] = CopixI18N::get('groupe|groupe.error.inversiondate');
         }
         if ($droit && !$errors) {
             $dao = CopixDAOFactory::create("kernel|kernel_link_user2node");
             $his = $dao->get($user_type, $user_id, "CLUB", $id);
             $his->droit = $droit;
             $his->debut = $debut ? $debut : NULL;
             $his->fin = $fin ? $fin : NULL;
             $dao->update($his);
         }
         if ($errors) {
             return CopixActionGroup::process('groupe|groupe::getHomeAdminMember', array('id' => $id, 'user_type' => $user_type, 'user_id' => $user_id, 'droit' => $droit, 'debut' => $req_debut, 'fin' => $req_fin, 'errors' => $errors));
         }
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('groupe||getHomeAdminMembers', array("id" => $id)));
     }
 }