public function testToXXXX() { CopixI18N::setLang('fr'); $this->assertEquals('19761225', CopixDateTime::dateToYYYYMMDD('25/12/1976')); $this->assertFalse(CopixDateTime::dateToYYYYMMDD('215/a2/1976')); $this->assertFalse(CopixDateTime::dateToYYYYMMDD('215/a276')); $this->assertEquals('19761225150000', CopixDateTime::DateTimeToyyyymmddhhiiss('25/12/1976 15:00:00')); $this->assertEquals('19761225100106', CopixDateTime::timestampToyyyymmddhhiiss(220352466)); CopixI18N::setLang('en'); $this->assertEquals('19761225', CopixDateTime::dateToYYYYMMDD('12/25/1976')); $this->assertFalse(CopixDateTime::dateToYYYYMMDD('25/a2/1976')); $this->assertNull(CopixDateTime::dateToYYYYMMDD(null)); $this->assertEquals('19761225150000', CopixDateTime::DateTimeToyyyymmddhhiiss('12/25/1976 03:00:00 pm')); $this->assertEquals('19761225030000', CopixDateTime::DateTimeToyyyymmddhhiiss('12/25/1976 03:00:00 am')); $this->assertEquals('19761225', CopixDateTime::timestampToyyyymmdd(220316400)); }
/** * Methode qui fait les tests sur la $pValue * * @param mixed $pValue La valeur * Paramètres pouvant être passée : * date_format : format de la date * date_sup et date_inf permettre de définir un intervalle de date * entre lesquelles la date doit être située */ protected function _validate($pValue) { $toReturn = array(); if ($pValue === null) { return true; } // Paramètres d'intervalle de date $date_sup = CopixDateTime::dateToYYYYMMDD($this->getParam('max')); $date_inf = CopixDateTime::dateToYYYYMMDD($this->getParam('min')); if (($date = CopixDateTime::dateToYYYYMMDD($pValue)) === false) { return _i18n('copix:copixdatetime.validator.invaliddate', $pValue); } if (!is_null($date_sup)) { if ($date_sup < $date) { $toReturn[] = _i18n('copix:copixdatetime.validator.datesup', array($pValue, $this->getParam('max'))); } } if (!is_null($date_inf)) { if ($date_inf > $date) { $toReturn[] = _i18n('copix:copixdatetime.validator.dateinf', array($pValue, $this->getParam('min'))); } } return empty($toReturn) ? true : $toReturn; }
/** * Fonction appelée lorsque l'on clique sur le bouton 'import' * Appel la méthode privée _validFromFormImportParams * vérifie les infos saisies dans le formulaire * stock l'objet en session * @author Audrey Vassal <*****@*****.**> */ public function doExport() { $serviceAuth = new AgendaAuth(); $serviceExport = new ExportService(); $agendaService = new AgendaService(); $dateService = new DateService(); //demande de mettre l'objet à jour en fonction des valeurs saisies dans le formulaire if (!($exportParams = $this->_getSessionExport())) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.cannotFindSession'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine'))); } //on vérifie les droits des utilisateurs sur la liste des agendas sélectionnés foreach ((array) $this->getRequest('agenda') as $id_agenda) { //on vérifie si l'utilisateur a les droits d'écriture sur un des agendas affiché if ($serviceAuth->getCapability($id_agenda) < $serviceAuth->getRead()) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.enableToWrite'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine'))); } } $this->_validFromFormExportParams($exportParams); $errors = $this->_checkExport($exportParams); if (count($errors) > 0) { $this->_setSessionExport($exportParams); return CopixActionGroup::process('agenda|ImportExport::getPrepareExport', array('e' => 1, 'errors' => $errors)); } else { //var_dump($exportParams); //die(); //on récupère tous les évènements des agendas cochés dans la période demandée foreach ((array) _request('agenda') as $idAgenda) { $arEventsPeriode[$idAgenda] = $agendaService->checkEventOfAgendaInBdd($idAgenda, CopixDateTime::dateToYYYYMMDD($exportParams->datedeb_export), CopixDateTime::dateToYYYYMMDD($exportParams->datefin_export)); } //on classe ces évènements par jour $arEventByDay = $agendaService->getEventsByDay($arEventsPeriode, CopixDateTime::dateToYYYYMMDD($exportParams->datedeb_export), CopixDateTime::dateToYYYYMMDD($exportParams->datefin_export)); //on ordonne les évènements par ordre croissant d'heure de début d'évènement dans la journée //var_dump($arEventByDay); $arEventByDay = $agendaService->getEventsInOrderByDay($arEventByDay); $content = $serviceExport->getFileICal($arEventByDay, CopixDateTime::dateToTimestamp($exportParams->datedeb_export), CopixDateTime::dateToTimestamp($exportParams->datefin_export)); } //on vide la session $this->_setSessionExport(null); return _arContent($content, array('filename' => 'agenda.ics', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.ics'))); }
public function processValidateMultipleStudentsListing() { $ppo = new CopixPPO(); // Récupération des paramètres $ppo->nodeId = _request('id_node', null); $ppo->nodeType = _request('type_node', null); $nodeInfos = Kernel::getNodeInfo($ppo->nodeType, $ppo->nodeId, true); if (is_null($ppo->nodeId) || is_null($ppo->nodeType)) { return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree'))); } $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe'); if (!$classroomDAO->get($ppo->nodeId)) { return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree'))); } _currentUser()->assertCredential('module:classroom|' . $ppo->nodeId . '|student|create@gestionautonome'); // Récupération des informations du formulaire $keys = _request('keys', array()); // Elèves de la liste à créer (checkbox de confirmation) $logins = _request('logins', array()); // Logins des élèves (possibilité de changer le login généré) $passwords = _request('passwords', array()); // Passwords des élèves (possibilité de changer le mot de passe généré) $levels = _request('levels', array()); // Niveau des élèves dans la classe // Récupération des élèves déjà créés en session if (!($ppo->studentsSuccess = _sessionGet('gestionautonome|addMultipleStudents|success'))) { $ppo->studentsSuccess = array(); } // RAZ des créations en erreur _sessionSet('gestionautonome|addMultipleStudents|error', array()); // DAO $studentDAO = _ioDAO('kernel_bu_eleve'); $studentRegistrationDAO = _ioDAO('kernel|kernel_bu_eleve_inscription'); $studentAdmissionDAO = _ioDAO('kernel|kernel_bu_eleve_admission'); $studentAssignmentDAO = _ioDAO('kernel_bu_eleve_affectation'); $dbuserDAO = _ioDAO('kernel|kernel_copixuser'); $dbLinkDAO = _ioDAO('kernel_link_bu2user'); $classDAO = _ioDAO('kernel|kernel_bu_ecole_classe'); $personDAO = _ioDAO('kernel_bu_responsable'); $personLinkDAO = _ioDAO('kernel_bu_responsables'); $schoolClassLevelDAO = _ioDAO('kernel|kernel_bu_ecole_classe_niveau'); $node_infos = Kernel::getNodeInfo($ppo->nodeType, $ppo->nodeId, false); // Récupération des élèves en création $studentsInSession = _sessionGet('gestionautonome|addMultipleStudents'); // Récupération des données nécessaires à l'ajout des enregistrements inscription / adhésion / admission $class = $classDAO->get($ppo->nodeId); $schoolClassLevels = $schoolClassLevelDAO->getByClass($ppo->nodeId); $classType = $schoolClassLevels[0]->type; $schoolId = $class->ecole; // Récupération de l'année scolaire if (is_null($grade = _sessionGet('grade'))) { $grade = Kernel::getAnneeScolaireCourante()->id_as; } // Boucle sur les élèves de la liste à créer $students = array(); foreach ($keys as $key) { // La création n'est possible que si le login est disponible if (!is_null($logins[$key]) && !is_null($passwords[$key]) && Kernel::isLoginAvailable($logins[$key])) { $students[$key] = $studentsInSession[$key]; $students[$key]['login'] = $logins[$key]; // Récupération des logins pour les élèves en création $students[$key]['password'] = $passwords[$key]; // Récupération des passwords pour les élèves en création $students[$key]['level'] = $levels[$key]; // Récupération des niveaux pour les élèves en création $students[$key]['type_nom'] = Kernel::Code2Name('USER_ELE'); $students[$key]['node_nom'] = Kernel::Code2Name($ppo->nodeType) . " " . $node_infos['nom']; // Création de l'élève $ppo->student = _record('kernel_bu_eleve'); $ppo->student->numero = ''; $ppo->student->nom = $students[$key]['lastname']; $ppo->student->prenom1 = $students[$key]['firstname']; $ppo->student->id_sexe = $students[$key]['gender']; $ppo->student->date_nais = isset($students[$key]['birthdate']) ? CopixDateTime::dateToYYYYMMDD(strip_tags(trim($students[$key]['birthdate']))) : ''; $ppo->student->flag = 0; $ppo->student->ele_last_update = CopixDateTime::timestampToYYYYMMDDHHIISS(time()); $studentDAO->insert($ppo->student); $students[$key]['id'] = $ppo->student->idEleve; // Création du compte dbuser $dbuser = _record('kernel|kernel_copixuser'); $dbuser->login_dbuser = $students[$key]['login']; $dbuser->password_dbuser = md5($students[$key]['password']); $dbuser->email_dbuser = ''; $dbuser->enabled_dbuser = 1; $dbuserDAO->insert($dbuser); // Création du link bu2user $dbLink = _record('kernel_link_bu2user'); $dbLink->user_id = $dbuser->id_dbuser; $dbLink->bu_type = 'USER_ELE'; $dbLink->bu_id = $ppo->student->idEleve; $dbLinkDAO->insert($dbLink); // Inscription de l'élève dans l'école $studentRegistration = _record('kernel|kernel_bu_eleve_inscription'); $studentRegistration->eleve = $ppo->student->idEleve; $studentRegistration->annee_scol = $grade; $studentRegistration->date_preinscript = CopixDateTime::timestampToYYYYMMDD(time()); $studentRegistration->date_effet_preinscript = CopixDateTime::timestampToYYYYMMDD(time()); $studentRegistration->date_inscript = CopixDateTime::timestampToYYYYMMDD(time()); $studentRegistration->date_effet_inscript = CopixDateTime::timestampToYYYYMMDD(time()); $studentRegistration->etablissement = $schoolId; $studentRegistration->etablissement_refus = 0; $studentRegistration->id_niveau = $students[$key]['level']; $studentRegistration->id_typ_cla = $classType; $studentRegistration->vaccins_aj = 0; $studentRegistration->attente = 0; $studentRegistration->derogation_dem = 0; $studentRegistration->temporaire = 0; $studentRegistration->current_inscr = 1; $studentRegistrationDAO->insert($studentRegistration); // Admission de l'élève dans l'école $studentAdmission = _record('kernel|kernel_bu_eleve_admission'); $studentAdmission->admission_eleve = $ppo->student->idEleve; $studentAdmission->admission_etablissement = $schoolId; $studentAdmission->admission_annee_scol = $grade; $studentAdmission->admission_id_niveau = $students[$key]['level']; $studentAdmission->admission_etat_eleve = 1; $studentAdmission->admission_date = CopixDateTime::timestampToYYYYMMDD(time()); $studentAdmission->admission_date_effet = CopixDateTime::timestampToYYYYMMDD(time()); $studentAdmission->admission_code_radiation = 0; $studentAdmission->admission_previsionnel = 0; $studentAdmissionDAO->insert($studentAdmission); // Affectation de l'élève dans les classes $studentAssignment = _record('kernel_bu_eleve_affectation'); $studentAssignment->eleve = $ppo->student->idEleve; $studentAssignment->annee_scol = $grade; $studentAssignment->classe = $ppo->nodeId; $studentAssignment->niveau = $students[$key]['level']; $studentAssignment->dateDebut = CopixDateTime::timestampToYYYYMMDD(time()); $studentAssignment->current = 1; $studentAssignment->previsionnel_cl = 0; $studentAssignmentDAO->insert($studentAssignment); // Récupération des responsables sélectionnés pour l'élève $personsKeys = _request('person-keys' . $key, array()); $personsLogins = _request('logins' . $key, array()); // Récupération des logins des responsables de l'élève $personsPasswords = _request('passwords' . $key, array()); // Récupération des passwords des responsables de l'élève $students[$key]['person'] = array(); foreach ($personsKeys as $personKey) { // La création du responsable n'est possible que si le login est disponible if (!is_null($personsLogins[$personKey]) && !is_null($personsPasswords[$personKey]) && Kernel::isLoginAvailable($personsLogins[$personKey])) { $students[$key]['person'][$personKey] = $studentsInSession[$key]['person'][$personKey]; $students[$key]['person'][$personKey]['login'] = $personsLogins[$personKey]; $students[$key]['person'][$personKey]['password'] = $personsPasswords[$personKey]; $students[$key]['person'][$personKey]['type_nom'] = Kernel::Code2Name('USER_RES'); $students[$key]['person'][$personKey]['node_nom'] = Kernel::Code2Name($ppo->nodeType) . " " . $node_infos['nom']; // Création du responsable $ppo->person = _record('kernel_bu_responsable'); $ppo->person->nom = $students[$key]['person'][$personKey]['lastname']; $ppo->person->prenom1 = $students[$key]['person'][$personKey]['firstname']; $ppo->person->id_sexe = $students[$key]['person'][$personKey]['gender']; $personDAO->insert($ppo->person); $students[$key]['person'][$personKey]['id'] = $ppo->person->numero; // Création du compte dbuser $dbuser = _record('kernel|kernel_copixuser'); $dbuser->login_dbuser = $students[$key]['person'][$personKey]['login']; $dbuser->password_dbuser = md5($students[$key]['person'][$personKey]['password']); $dbuser->email_dbuser = ''; $dbuser->enabled_dbuser = 1; $dbuserDAO->insert($dbuser); // Création du link bu2user $dbLink = _record('kernel_link_bu2user'); $dbLink->user_id = $dbuser->id_dbuser; $dbLink->bu_type = 'USER_RES'; $dbLink->bu_id = $ppo->person->numero; $dbLinkDAO->insert($dbLink); // Création de l'association personne->rôle $newPersonLink = _record('kernel_bu_responsables'); $newPersonLink->id_beneficiaire = $ppo->student->idEleve; $newPersonLink->type_beneficiaire = 'eleve'; $newPersonLink->id_responsable = $ppo->person->numero; $newPersonLink->type = 'responsable'; $newPersonLink->auth_parentale = '0'; $newPersonLink->id_par = $students[$key]['person'][$personKey]['id_par']; $personLinkDAO->insert($newPersonLink); } } // Récupération de l'élève (et de ses responsables) dans le tableau des élèves créés avec succès $ppo->studentsSuccess[] = $students[$key]; } else { // Ajout de l'élève (et de ses responsables) dans le tableau des créations en erreur $ppo->studentsError[] = $students[$key]; } } // Si des créations ont bien eu lieu, les mettre en session pour affichage de confirmation if (!empty($ppo->studentsSuccess)) { _sessionSet('gestionautonome|addMultipleStudents|success', $ppo->studentsSuccess); } // Si des créations sont en erreur, les mettre en session pour possibilité de recréation après correction des erreurs if (!empty($ppo->studentsError)) { _sessionSet('gestionautonome|addMultipleStudents|error', $ppo->studentsError); $ppo->students = $ppo->studentsError; _sessionSet('gestionautonome|addMultipleStudents', $ppo->studentsError); // Récupération des niveaux de la classe $classSchoolLevelDAO = _ioDAO('kernel|kernel_bu_ecole_classe_niveau'); $classLevelDAO = _ioDAO('kernel|kernel_bu_classe_niveau'); $classSchoolLevels = $classSchoolLevelDAO->getByClass($ppo->nodeId); $ppo->levelNames = array(); $ppo->levelIds = array(); foreach ($classSchoolLevels as $classSchoolLevel) { $level = $classLevelDAO->get($classSchoolLevel->niveau); $ppo->levelNames[] = $level->niveau_court; $ppo->levelIds[] = $level->id_n; } // Flag pour affichage du message d'erreur $ppo->error = 1; // Get vocabulary catalog to use $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog'); $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId); // Breadcrumbs $breadcrumbs = Kernel::generateBreadcrumbs($nodeInfos); $breadcrumbs[] = array('txt' => CopixCustomI18N::get('gestionautonome|gestionautonome.message.add%%structure_element_persons%%list', array('catalog' => $ppo->vocabularyCatalog->id_vc))); $ppo->breadcrumbs = Kernel::PetitPoucet($breadcrumbs, ' » '); $ppo->TITLE_PAGE = CopixConfig::get('gestionautonome|moduleTitle'); // Get vocabulary catalog to use $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog'); $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId); return _arPPO($ppo, 'add_multiple_students_listing.tpl'); } // Mise en session des comptes créés $passwordsList = _sessionGet('modules|gestionautonome|passwordsList'); if (!is_array($passwordsList)) { $passwordsList = array(); } foreach ($ppo->studentsSuccess as $student) { $studentAr = array('lastname' => $student['lastname'], 'firstname' => $student['firstname'], 'login' => $student['login'], 'password' => $student['password'], 'bu_type' => 'USER_ELE', 'bu_id' => $student['id'], 'type_nom' => Kernel::Code2Name('USER_ELE'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $student['gender']); $passwordsList['USER_ELE'][$student['id']] = $studentAr; // Enregistrement des personnes if (!empty($student['person'])) { foreach ($student['person'] as $person) { $personAr = array('lastname' => $person['lastname'], 'firstname' => $person['firstname'], 'login' => $person['login'], 'password' => $person['password'], 'bu_type' => 'USER_RES', 'bu_id' => $person['id'], 'type_nom' => Kernel::Code2Name('USER_RES'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $person['gender']); $passwordsList['USER_RES'][$person['id']] = $personAr; } } } $passwordsList = _sessionSet('modules|gestionautonome|passwordsList', $passwordsList); return _arRedirect(CopixUrl::get('gestionautonome||showMultipleAccountsListing')); }
/** * Fonction qui est appel�e lorsque l'on valide la saisie d'un �v�nement * Met � jour l'objet avec les donn�es du formulaire * V�rifie les informations saisies dans le formulaire * @author Audrey Vassal <*****@*****.**> * @return redirige vers l'action "getVueSemaine" de l'actiongroup agenda */ public function doValid() { $serviceAuth = new AgendaAuth(); //initialisation des cases � cocher if (!($toValid = $this->_getSessionEvent())) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.cannotFindSession'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine'))); } //demande de mettre l'objet � jour en fonction des valeurs saisies dans le formulaire $this->_validFromForm($toValid); //var_dump($toValid); //on v�rifie les droits if ($serviceAuth->getCapability($toValid->id_agenda) < $serviceAuth->getWriteAgenda()) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.enableToWrite'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine'))); } $errors = $this->_check($toValid); //var_dump($toValid); if (count($errors) > 0) { //s'il y a des erreurs $this->_setSessionEvent($toValid); return CopixActionGroup::process('agenda|Event::getEdit', array('e' => 1, 'errors' => $errors)); } else { $daoEvent =& CopixDAOFactory::getInstanceOf('event'); $record = _record('event'); $criteres = _daoSp(); $criteres->addCondition('id_event', '=', $toValid->id_event); $resultat = $daoEvent->findBy($criteres); $modif = false; if (count($resultat) > 0) { //modification $record = $resultat[0]; $modif = true; } //on fait l'enregistrement en base if (isset($toValid->endrepeat_event) && $toValid->endrepeat_event == 'nbfois' && $toValid->nb_fois != null) { //on determine la date de fin dans le cas o� il s'agit d'une r�p�tion n fois $obj = new AgendaService(); $dateFin = $obj->getDateEndRepeatByNbFois($toValid->nb_fois, $toValid->repeat_event, $toValid->datefin_event); } //die ("dateFin=$dateFin"); $record->id_agenda = $toValid->id_agenda; $record->title_event = $toValid->title_event; $record->desc_event = $toValid->desc_event; $record->place_event = $toValid->place_event; //$record->datedeb_event = CopixDateTime::dateToTimestamp ($toValid->datedeb_event);//convertion des dates au format bdd $record->datedeb_event = CopixDateTime::dateToYYYYMMDD($toValid->datedeb_event, '/'); //$record->datefin_event = CopixDateTime::dateToTimestamp ($toValid->datefin_event);//convertion des dates au format bdd $record->datefin_event = CopixDateTime::dateToYYYYMMDD($toValid->datefin_event, '/'); $record->heuredeb_event = $toValid->heuredeb_event; $record->heurefin_event = $toValid->heurefin_event; $record->alldaylong_event = isset($toValid->alldaylong_event) ? $toValid->alldaylong_event : 0; //si il y a r�p�tition de l'�v�nement if (isset($toValid->repeat) && $toValid->repeat == 1) { $record->everyday_event = $toValid->repeat_event == 'everyday_event' && $toValid->repeat == 1 ? 1 : 0; $record->everyweek_event = $toValid->repeat_event == 'everyweek_event' && $toValid->repeat == 1 ? 1 : 0; $record->everymonth_event = $toValid->repeat_event == 'everymonth_event' && $toValid->repeat == 1 ? 1 : 0; $record->everyyear_event = $toValid->repeat_event == 'everyyear_event' && $toValid->repeat == 1 ? 1 : 0; //date de fin de r�p�tition (� voir selon ce qui est coch�) if (isset($dateFin)) { $record->endrepeatdate_event = CopixDateTime::dateToYYYYMMDD($dateFin, '/'); } elseif (isset($toValid->dateendrepeat_event) && $toValid->endrepeat_event == 'date') { $record->endrepeatdate_event = CopixDateTime::dateToTimestamp($toValid->dateendrepeat_event); } else { $record->endrepeatdate_event = $toValid->endrepeat_event == '99999999' ? $toValid->endrepeat_event : null; } } else { $record->everyday_event = 0; $record->everyweek_event = 0; $record->everymonth_event = 0; $record->everyyear_event = 0; $record->endrepeatdate_event = null; } if ($modif == true) { //on fait une modification $daoEvent->update($record); } else { //on fait un ajout $daoEvent->insert($record); //if (!$record-id_event) // return CopixActionGroup::process('agenda|Event::getEdit', array('e'=>1, 'errors'=>$errors)); } //var_dump($record); //die("a"); //on vide la session $this->_setSessionEvent(null); return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('agenda|agenda|vueSemaine')); } }