/** * AJAX ONLY ! - Suppression d'une affectation */ public function processRemoveAssignment() { // Récupération des paramètres $userType = _request('user_type', null); $userId = _request('user_id', null); $classroomId = _request('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é'); } // Suppression de l'affectation _classInclude('gestionautonome|GestionAutonomeService'); if ($userType == 'USER_ELE') { // Contrôle des droits _currentUser()->assertCredential('module:classroom|' . $classroomId . '|student|update@gestionautonome'); GestionAutonomeService::removeStudentAssignment($userId, $classroomId); } else { // Contrôle des droits _currentUser()->assertCredential('module:classroom|' . $classroomId . '|teacher|update@gestionautonome'); GestionAutonomeService::removePersonnelAssignment($userId, $classroomId, 'CLASSE'); } return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/html; charset=utf-8', 'HTTP/1.1 200 OK'), CopixZone::process('gestionautonome|manageAssignments')); }
public function _createContent(&$toReturn) { $ppo = new CopixPPO(); // Récupération des paramètres $id = $this->getParam('node_id'); $ppo->type = $this->getParam('node_type'); $ppo->tab = $this->getParam('tab') ? $this->getParam('tab') : 0; // Récupération de l'utilisateur connecté $ppo->user = _currentUser(); if (!is_null($ppo->type) && !is_null($id)) { $ppo->parent = Kernel::getNodeInfo($ppo->type, $id); $personnelDAO = _ioDAO('kernel|kernel_bu_personnel'); switch ($ppo->type) { case 'BU_GRVILLE': $ppo->persons = $personnelDAO->findCitiesAgentsByCitiesGroupId($id); break; case 'BU_VILLE': $ppo->persons = $personnelDAO->findCityAgentsByCityId($id); break; case 'BU_ECOLE': $personEntityDAO = _ioDAO('kernel|kernel_bu_personnel_entite'); $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe'); $classnames = array(); $ppo->persons = $personnelDAO->findAdministrationStaffAndPrincipalBySchoolId($id); foreach ($ppo->persons as $person) { // Pour les enseignants, on récupère leurs affectations pour déterminer s'il est possible de les désaffecter de l'école if ($person->role == DAOKernel_bu_personnel_entite::ROLE_TEACHER && $personEntityDAO->hasTeacherRoleInSchool($person->numero, $id, true)) { $person->hasTeacherRoleInSchool = true; // Récupération du nom des classes ou il est affecté $classnames = array(); $personEntities = $personEntityDAO->getTeacherRoleInSchool($person->numero, $id, true); foreach ($personEntities as $personEntity) { $class = $classroomDAO->get($personEntity->pers_entite_reference); $classnames[] = $class->nom; } $person->classrooms = implode(', ', $classnames); } else { $person->hasTeacherRoleInSchool = false; } } break; case 'BU_CLASSE': // Récupération des enseignants $ppo->persons = $personnelDAO->findTeachersByClassroomId($id); // Récupération des élèves $studentDAO = _ioDAO('kernel|kernel_bu_ele'); $ppo->students = $studentDAO->getStudentsByClass($id); // Récupération des parents $responsableDAO = _ioDAO('kernel|kernel_bu_res'); $ppo->responsables = $responsableDAO->getParentsInClasse($id); _classInclude('gestionautonome|GestionAutonomeService'); $ppo->isTeachersLimitByClassroomReached = false; if (GestionAutonomeService::hasTeachersLimitByClassroom()) { $ppo->isTeachersLimitByClassroomReached = count($ppo->persons) >= CopixConfig::get('gestionautonome|teachersLimitByClassroom'); } $ppo->isStudentsLimitByClassroomReached = false; if (GestionAutonomeService::hasStudentsLimitByClassroom()) { $ppo->isStudentsLimitByClassroomReached = count($ppo->students) >= CopixConfig::get('gestionautonome|studentsLimitByClassroom'); } break; } } // Récupération du catalogue de vocabulaire à utiliser $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog'); $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->type, $id); // Récupération de l'année scolaire suivante $ppo->nextGrade = _ioDAO('kernel|kernel_bu_annee_scolaire')->getNextGrade(_sessionGet('grade')); $toReturn = $this->_usePPO($ppo, '_persons_data.tpl'); }
public function _createContent(&$toReturn) { $ppo = new CopixPPO(); // Récupération du context en session $ppo->filters = _sessionGet('gestionautonome|assignments_management_filters'); $ppo->openedClassrooms = _sessionGet('gestionautonome|assignments_management_classroom_state'); // Initialisation des tableaux des affectations $originAssignments = array(); $destinationAssignments = array(); $withoutAssignments = array(); $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe'); $groups = _currentUser()->getGroups(); $studentDAO = _ioDAO('kernel|kernel_bu_ele'); $personnelDAO = _ioDAO('kernel|kernel_bu_personnel'); // Récupération des éléves ou des enseignants if ($ppo->filters['searchMode'] === 'byStructure') { if ($ppo->filters['originUserType'] == 'USER_ELE') { if ($ppo->filters['mode'] == 'changeClassroom') { $originAssignments = $studentDAO->findStudentsForAssignment($ppo->filters['originGrade'], array('cityGroup' => $ppo->filters['originCityGroup'], 'city' => $ppo->filters['originCity'], 'school' => $ppo->filters['originSchool'], 'classroom' => $ppo->filters['originClassroom'], 'level' => $ppo->filters['originLevel'], 'lastname' => $ppo->filters['originLastname'], 'firstname' => $ppo->filters['originFirstname'])); } else { $originAssignments = $studentDAO->findForManageAssignments($ppo->filters['originGrade'], $ppo->filters); } } elseif ($ppo->filters['originUserType'] === 'USER_ENS') { $originAssignments = $personnelDAO->findTeachersAssignedToSchoolByStructure($ppo->filters['originGrade'], $ppo->filters['originSchool'], $ppo->filters['originClassroom'], $ppo->filters['originLevel'], $ppo->filters['originFirstname'], $ppo->filters['originLastname']); } } elseif ($ppo->filters['searchMode'] === 'byName' && ($ppo->filters['originFirstnameSearch'] || $ppo->filters['originLastnameSearch'])) { if ($ppo->filters['originUserTypeSearch'] == 'USER_ELE') { if ($ppo->filters['mode'] === 'changeClassroom') { $originAssignments = $studentDAO->findStudentsForAssignmentByName($ppo->filters['originGrade'], $ppo->filters['originFirstnameSearch'], $ppo->filters['originLastnameSearch']); } else { $originAssignments = $studentDAO->findForManageAssignmentsByName($ppo->filters['originGrade'], $ppo->filters['destinationGrade'], $ppo->filters['originFirstnameSearch'], $ppo->filters['originLastnameSearch']); } } elseif ($ppo->filters['originUserTypeSearch'] === 'USER_ENS') { $originAssignments = $personnelDAO->findTeachersByName($ppo->filters['originGrade'], $ppo->filters['originFirstnameSearch'], $ppo->filters['originLastnameSearch']); } } if ($ppo->filters['originUserTypeSearch'] == 'USER_ELE' || $ppo->filters['originUserTypeSearch'] == 'USER_ELE') { $destinationAssignments = $studentDAO->findAssigned(array('grade' => $ppo->filters['destinationGrade'], 'cityGroup' => $ppo->filters['destinationCityGroup'], 'city' => $ppo->filters['destinationCity'], 'school' => $ppo->filters['destinationSchool'], 'classroom' => $ppo->filters['destinationClassroom'], 'level' => $ppo->filters['destinationLevel']), !_currentUser()->testCredential('module:school|' . $ppo->filters['destinationSchool'] . '|teacher|update@gestionautonome') ? $groups['gestionautonome|iconitogrouphandler'] : null); } if ($ppo->filters['originUserTypeSearch'] == 'USER_ENS' || $ppo->filters['originUserTypeSearch'] == 'USER_ENS') { $destinationAssignments = $personnelDAO->findTeachersAssignedToClassroomByStructure($ppo->filters['destinationGrade'], $ppo->filters['destinationSchool'], $ppo->filters['destinationClassroom'], $ppo->filters['destinationLevel']); } foreach ($originAssignments as $originAssignment) { if ($ppo->filters['originUserType'] == 'USER_ELE' && $originAssignment->current || $ppo->filters['originUserType'] == 'USER_ENS' && $originAssignment->nom_classe != '') { if ($ppo->filters['originUserType'] == 'USER_ENS') { // Regroupement des enseignants dans la même classe. Pas de distinction des niveaux $ppo->originAssignments[''][$originAssignment->id_classe][$originAssignment->user_id] = $originAssignment; } elseif ($ppo->filters['originUserType'] == 'USER_ELE') { $ppo->originAssignments[$originAssignment->id_niveau][$originAssignment->id_classe][] = $originAssignment; } $ppo->classrooms[$originAssignment->id_classe] = $originAssignment->nom_classe; $ppo->classroomLevels[$originAssignment->id_niveau] = $originAssignment->nom_niveau; } elseif (is_null($ppo->filters['originClassroom']) || $ppo->filters['mode'] != 'changeClassroom') { $ppo->classrooms[0] = 'Sans affectation'; $withoutAssignments[] = $originAssignment; } } foreach ($withoutAssignments as $withoutAssignment) { $ppo->originAssignments[''][0][] = $withoutAssignment; } // Construction du tableau des affectations de destination pour l'affichage if (!isset($ppo->filters['destinationClassroom'])) { if ($ppo->filters['originUserType'] == 'USER_ELE') { if (isset($ppo->filters['destinationLevel']) && !is_null($ppo->filters['destinationLevel'])) { // On récupère toutes les classes disponibles pour l'école et le niveau de classe sélectionnés if (_currentUser()->testCredential('module:school|' . $ppo->filters['destinationSchool'] . '|classroom|create@gestionautonome')) { $destinationClassrooms = $classroomDAO->getBySchoolAndLevel($ppo->filters['destinationSchool'], $ppo->filters['destinationLevel'], $ppo->filters['destinationGrade']); } else { $destinationClassrooms = $classroomDAO->findBySchoolIdAndUserGroups($ppo->filters['destinationSchool'], $groups['gestionautonome|iconitogrouphandler'], $ppo->filters['destinationGrade'], $ppo->filters['destinationLevel']); } foreach ($destinationClassrooms as $destinationClassroom) { $classroomLevel = _ioDAO('kernel|kernel_bu_classe_niveau')->get($ppo->filters['destinationLevel']); $ppo->destinationAssignments[$ppo->filters['destinationLevel']][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; $ppo->classroomLevels[$ppo->filters['destinationLevel']] = $classroomLevel->niveau_court; } } else { // On récupère toutes les classes disponibles pour l'école if (_currentUser()->testCredential('module:school|' . $ppo->filters['destinationSchool'] . '|classroom|create@gestionautonome')) { $destinationClassrooms = $classroomDAO->getBySchool($ppo->filters['destinationSchool'], $ppo->filters['destinationGrade']); } else { $destinationClassrooms = $classroomDAO->findBySchoolIdAndUserGroups($ppo->filters['destinationSchool'], $groups['gestionautonome|iconitogrouphandler'], $ppo->filters['destinationGrade']); } foreach ($destinationClassrooms as $destinationClassroom) { $levels = $destinationClassroom->getLevels(); foreach ($levels as $level) { $ppo->destinationAssignments[$level->id_n][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; $ppo->classroomLevels[$level->id_n] = $level->niveau_court; } } } } else { if (isset($ppo->filters['destinationLevel']) && !is_null($ppo->filters['destinationLevel'])) { if (_currentUser()->testCredential('module:school|' . $ppo->filters['destinationSchool'] . '|classroom|create@gestionautonome')) { $destinationClassrooms = $classroomDAO->getBySchoolAndLevel($ppo->filters['destinationSchool'], $ppo->filters['destinationLevel'], $ppo->filters['destinationGrade']); } else { $destinationClassrooms = $classroomDAO->findBySchoolIdAndUserGroups($ppo->filters['destinationSchool'], $groups['gestionautonome|iconitogrouphandler'], $ppo->filters['destinationGrade'], $ppo->filters['destinationLevel']); } } else { if (_currentUser()->testCredential('module:school|' . $ppo->filters['destinationSchool'] . '|classroom|create@gestionautonome')) { $destinationClassrooms = $classroomDAO->getBySchool($ppo->filters['destinationSchool'], $ppo->filters['destinationGrade']); } else { $destinationClassrooms = $classroomDAO->findBySchoolIdAndUserGroups($ppo->filters['destinationSchool'], $groups['gestionautonome|iconitogrouphandler'], $ppo->filters['destinationGrade']); } } foreach ($destinationClassrooms as $destinationClassroom) { $ppo->destinationAssignments[''][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; } } } else { // Récupération de la classe sélectionnée par les filtres $destinationClassroom = $classroomDAO->get($ppo->filters['destinationClassroom']); if ($ppo->filters['originUserType'] == 'USER_ELE') { if (isset($ppo->filters['destinationLevel']) && !is_null($ppo->filters['destinationLevel'])) { $classroomLevel = _ioDAO('kernel|kernel_bu_classe_niveau')->get($ppo->filters['destinationLevel']); $ppo->destinationAssignments[$classroomLevel->id_n][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; $ppo->classroomLevels[$classroomLevel->id_n] = $classroomLevel->niveau_court; } else { $levels = $destinationClassroom->getLevels(); foreach ($levels as $level) { $ppo->destinationAssignments[$level->id_n][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; $ppo->classroomLevels[$level->id_n] = $level->niveau_court; } } } else { $ppo->destinationAssignments[''][$destinationClassroom->id] = array(); $ppo->classrooms[$destinationClassroom->id] = $destinationClassroom->nom; } } // Ajout des affectations au tableau des affectations de destination destiné à l'affichage foreach ($destinationAssignments as $destinationAssignment) { if ($ppo->filters['originUserType'] == 'USER_ENS') { // Regroupement des enseignants dans la même classe. Pas de distinction des niveaux $ppo->destinationAssignments[''][$destinationAssignment->id_classe][$destinationAssignment->user_id] = $destinationAssignment; } elseif ($ppo->filters['originUserType'] == 'USER_ELE') { $ppo->destinationAssignments[$destinationAssignment->id_niveau][$destinationAssignment->id_classe][] = $destinationAssignment; } $ppo->classrooms[$destinationAssignment->id_classe] = $destinationAssignment->nom_classe; $ppo->classroomLevels[$destinationAssignment->id_niveau] = $destinationAssignment->nom_niveau; } // Gestion des limites _classInclude('gestionautonome|GestionAutonomeService'); $ppo->personsLimitByClassroom = 0; if ($ppo->filters['originUserType'] == 'USER_ENS') { if (GestionAutonomeService::hasTeachersLimitByClassroom()) { $ppo->personsLimitByClassroom = CopixConfig::get('gestionautonome|teachersLimitByClassroom'); } } elseif ($ppo->filters['originUserType'] == 'USER_ELE') { if (GestionAutonomeService::hasStudentsLimitByClassroom()) { $ppo->personsLimitByClassroom = CopixConfig::get('gestionautonome|studentsLimitByClassroom'); } } $ppo->totalPersonsByClassroom = array(); foreach ($ppo->destinationAssignments as $level) { foreach ($level as $classroomId => $persons) { if (!array_key_exists($classroomId, $ppo->totalPersonsByClassroom)) { $ppo->totalPersonsByClassroom[$classroomId] = 0; } $ppo->totalPersonsByClassroom[$classroomId] += count($persons); } } if (CopixConfig::exists('|can_search_by_name') && CopixConfig::get('|can_search_by_name')) { $ppo->can_search_by_name = true; } else { $ppo->can_search_by_name = false; } $toReturn = $this->_usePPO($ppo, '_manage_assignments.tpl'); }