/** * AJAX ONLY ! - Mise à jour d'une affectation d'élève ou d'enseignant */ public function processUpdateAssignment() { // Récupération des paramètres $userType = _request('user_type', null); $userId = _request('user_id', null); $classroomId = _request('classroom_id', null); $classroomLevel = _request('classroom_level', 0); $oldClassroomId = _request('old_classroom_id', null); // Paramètres obligatoires if (is_null($userType) || is_null($userId) || is_null($classroomId)) { return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 400 Bad Request'), 'Une erreur est survenue'); } // Récupération de la classe $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe'); if (!($classroom = $classroomDAO->get($classroomId))) { return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 404 Not found'), 'Classe non trouvée'); } // Récupération du user $userDAO = _ioDAO('kernel|kernel_copixuser'); $user = $userDAO->getUserByBuIdAndBuType($userId, $userType); if (false === $user) { return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 404 Not found'), 'Utilisateur non trouvé'); } // Récupération du contexte en session $filters = _sessionGet('gestionautonome|assignments_management_filters'); // Affectation d'un élève _classInclude('gestionautonome|GestionAutonomeService'); if ($userType == 'USER_ELE') { // Contrôle de la limite d'enseignants par classe if (!GestionAutonomeService::isStudentsLimitByClassroomReached($classroomId)) { // Contrôle des droits _currentUser()->assertCredential('module:classroom|' . $classroomId . '|student|update@gestionautonome'); if ($filters['mode'] == 'changeClassroom') { GestionAutonomeService::removeStudentAssignments($userId, $classroom->annee_scol); } GestionAutonomeService::addStudentAssignment($userId, $classroom, $classroomLevel); } } else { // Contrôle de la limite d'enseignants par classe if (!GestionAutonomeService::isTeachersLimitByClassroomReached($classroomId)) { // Contrôle des droits _currentUser()->assertCredential('module:classroom|' . $classroomId . '|teacher|update@gestionautonome'); $personEntityDAO = _ioDAO('kernel|kernel_bu_personnel_entite'); GestionAutonomeService::addPersonAssignmentOnClassroom($userId, $classroom, DAOKernel_bu_personnel_entite::ROLE_TEACHER); } } return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/html; charset=utf-8', 'HTTP/1.1 200 OK'), CopixZone::process('gestionautonome|manageAssignments')); }