/**
  * Fonction qui fait la vérification sur les champs de saisie du formulaire d'import
  * @author Audrey Vassal <*****@*****.**>
  * @access: private
  * @return array $toReturn tableau qui contient les erreurs de saisie de l'utilisateur
  */
 public function _checkExport($obj)
 {
     $toReturn = array();
     $datedeb = $datedebTs = null;
     $datefin = $datefinTs = null;
     if (isset($obj->datedeb_export)) {
         $datedeb = $obj->datedeb_export;
         $datedebTs = CopixDateTime::dateToTimestamp($datedeb);
     }
     if (isset($obj->datefin_export)) {
         $datefin = $obj->datefin_export;
         $datefinTs = CopixDateTime::dateToTimestamp($datefin);
     }
     //vérification si les champs sont bien remplis
     if (!$datedeb) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodatedeb');
     }
     if (!$datefin) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.nodatefin');
     }
     //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 (!$obj->agenda) {
         $toReturn[] = CopixI18N::get('agenda|agenda.error.noagenda');
     }
     return $toReturn;
 }
 public function publish($id, $data)
 {
     $articleDAO = _dao('blog|blogarticle');
     $article = _record('blog|blogarticle');
     $article->id_blog = $id;
     $article->name_bact = $data['title'];
     $article->format_bact = 'wiki';
     $article->sumary_bact = $data['body'];
     $article->sumary_html_bact = smarty_modifier_blog_format_article($article->sumary_bact, $article->format_bact);
     $article->content_bact = '';
     $article->content_html_bact = smarty_modifier_blog_format_article($article->content_bact, $article->format_bact);
     $article->author_bact = 'Publication par mail...';
     $article->date_bact = CopixDateTime::dateToTimestamp(date('d/m/Y'));
     $article->time_bact = timeToBD(date('H:i'));
     $article->url_bact = killBadUrlChars($article->name_bact);
     $article->sticky_bact = 0;
     $article->is_online = 1;
     $articleDAO->insert($article);
     $article->url_bact = killBadUrlChars($article->id_bact . '-' . $article->name_bact);
     $articleDAO->update($article);
     return "yo" . print_r($article, true) . "yo";
 }
 /**
  * Fonction qui donne le nombre de jour écoulés entre deux dates+heure
  * @author Audrey Vassal <*****@*****.**>
  * @since 2006/07/28
  * @param date $pDateBegin au format jj/mm/aaaa
  * @param date $pDateEnd au format jj/mm/aaaa
  * @param date $pHeureDeb heure au format hh:mm
  * @param date $pHeureFin heure au format hh:mm
  * @return integer $nbDays nombre de jours qui se sont écoulés entre les deux dates
  */
 public function getNomberDaysBeetweenTwoDates($pDateBegin, $pDateEnd, $pHeureBegin, $pHeureEnd)
 {
     //Extraction des données
     //list($jour1, $mois1, $annee1) = explode('/', $pDateBegin);
     //list($jour2, $mois2, $annee2) = explode('/', $pDateEnd);
     $pDate = CopixDateTime::dateToTimestamp($pDateBegin);
     $jour1 = substr($pDate, 6, 2);
     $mois1 = substr($pDate, 4, 2);
     $annee1 = substr($pDate, 0, 4);
     $pDate = CopixDateTime::dateToTimestamp($pDateEnd);
     $jour2 = substr($pDate, 6, 2);
     $mois2 = substr($pDate, 4, 2);
     $annee2 = substr($pDate, 0, 4);
     list($heure1, $minutes1) = explode(':', $pHeureBegin);
     list($heure2, $minutes2) = explode(':', $pHeureEnd);
     //Calcul des timestamp
     $timestamp1 = mktime($heure1, $minutes1, 0, $mois1, $jour1, $annee1);
     $timestamp2 = mktime($heure2, $minutes2, 0, $mois2, $jour2, $annee2);
     $nbDays = ($timestamp2 - $timestamp1) / 86400;
     return $nbDays;
     //echo abs($timestamp2 - $timestamp1)/(86400*7); //Affichage du nombre de semaine : 3.85
 }
 /**
  * Validation d'un article.
  */
 public function doValidArticle()
 {
     CopixHTMLHeader::addJSLink(_resource("js/jquery/jquery.ui.datepicker-fr.js"));
     $id_blog = $this->getRequest('id_blog', null);
     $go = $this->getRequest('go', 'preview');
     //die ("go=$go");
     if ($id_blog == null) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.param'), 'back' => CopixUrl::get('blog|admin|listBlog')));
     }
     if (!BlogAuth::canMakeInBlog('ADMIN_ARTICLES', create_blog_object($id_blog))) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.cannotManageCategory'), 'back' => CopixUrl::get('blog|admin|listBlog')));
     }
     $tpl = new CopixTpl();
     // On r�cup�re l'utilisateur connect�
     $user = BlogAuth::getUserInfos();
     $articleDAO = CopixDAOFactory::create('blog|blogarticle');
     // Cat�gories coch�es...
     $tabSelectCat = array();
     if (_request('tabSelectCat')) {
         $tabSelectCat = (array) _request('tabSelectCat');
     }
     $id_bact = $this->getRequest('id_bact', null);
     if (strlen($id_bact) == 0) {
         $id_bact = null;
     }
     $showErrors = false;
     if ($id_bact != null) {
         // EDITION D'UN ARTICLE
         $article = $articleDAO->get($id_bact);
         $this->_validFromPostProperties($article);
         if (!$article->date_bact) {
             $article->date_bact = date('d/m/Y');
         }
         if (!$article->time_bact) {
             $article->time_bact = date('H:i');
         }
         $article->date_bact = CopixDateTime::dateToTimestamp($article->date_bact);
         $article->time_bact = timeToBD($article->time_bact);
         $article->author_bact = $user->userId;
         $tpl->assign('TITLE_PAGE', CopixI18N::get('blog.get.edit.article.title'));
         //print_r($article);
         $errors = $articleDAO->check($article);
         if (count($tabSelectCat) == 0) {
             $errors = array();
             array_push($errors, CopixI18N::get('blog.error.nocategoryselect'));
         }
         if ($errors != 1) {
             // Traitement des erreurs
             $showErrors = true;
         } elseif ($go == 'save') {
             // Modification dans la base
             $article->url_bact = killBadUrlChars($article->id_bact . '-' . $article->name_bact);
             $article->sumary_html_bact = smarty_modifier_blog_format_article($article->sumary_bact, $article->format_bact);
             $article->content_html_bact = smarty_modifier_blog_format_article($article->content_bact, $article->format_bact);
             $articleDAO->update($article);
             // Insertion dans la base blogarticle_blogarticlecategory
             $artctgDAO = CopixDAOFactory::create('blog|blogarticle_blogarticlecategory');
             $artctgDAO->deleteAndInsert($article->id_bact, $tabSelectCat);
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('blog|admin|showBlog', array("id_blog" => $id_blog, "kind" => $this->getRequest('kind', '0'))));
         }
     } else {
         // CREATION D'UN ARTICLE
         $article = CopixDAOFactory::createRecord('blogarticle');
         $this->_validFromPostProperties($article);
         if (!$article->date_bact) {
             $article->date_bact = date('d/m/Y');
         }
         if (!$article->time_bact) {
             $article->time_bact = date('H:i');
         }
         $article->date_bact = CopixDateTime::dateToTimestamp($article->date_bact);
         $article->time_bact = timeToBD($article->time_bact);
         $article->author_bact = $user->userId;
         $tpl->assign('TITLE_PAGE', CopixI18N::get('blog.get.create.article.title'));
         $errors = $articleDAO->check($article);
         if (count($tabSelectCat) == 0) {
             $errors = array();
             array_push($errors, CopixI18N::get('blog.error.nocategoryselect'));
         }
         if ($errors != 1) {
             // Traitement des erreurs
             $showErrors = true;
         } elseif ($go == 'save') {
             // Insertion dans la base
             $article->sumary_html_bact = smarty_modifier_blog_format_article($article->sumary_bact, $article->format_bact);
             $article->content_html_bact = smarty_modifier_blog_format_article($article->content_bact, $article->format_bact);
             $articleDAO->insert($article);
             $article->url_bact = killBadUrlChars($article->id_bact . '-' . $article->name_bact);
             $articleDAO->update($article);
             // Insertion dans la base blogarticle_blogarticlecategory
             $artctgDAO = CopixDAOFactory::create('blog|blogarticle_blogarticlecategory');
             $artctgDAO->deleteAndInsert($article->id_bact, $tabSelectCat);
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('blog|admin|showBlog', array("id_blog" => $id_blog, "kind" => $this->getRequest('kind', '0'))));
         }
     }
     // Pr�paration du filtre CATEGORIES
     $blogArticleCategoryDAO = CopixDAOFactory::create('blog|blogarticlecategory');
     $resArticleCategory = $blogArticleCategoryDAO->findAllOrder($id_blog);
     $tabArticleCategory = array();
     foreach ($resArticleCategory as $cat) {
         if (in_array($cat->id_bacg, $tabSelectCat)) {
             $cat->selected = true;
         } else {
             $cat->selected = false;
         }
         array_push($tabArticleCategory, $cat);
     }
     $article->time_bact = BDToTime($article->time_bact);
     $tpl->assign('BODY_ON_LOAD', "setDatePicker('#date_bact')");
     $tpl->assign('MAIN', CopixZone::process('EditArticle', array('id_blog' => $id_blog, 'id_bact' => $id_bact, 'article' => $article, 'kind' => $this->getRequest('kind', '0'), 'errors' => $errors, 'showErrors' => $showErrors, 'tabArticleCategory' => $tabArticleCategory, 'preview' => $go == 'preview' ? 1 : 0)));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * 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)));
     }
 }