diff --git a/main/admin/course_add.php b/main/admin/course_add.php index 47d8ce4592..0569223425 100755 --- a/main/admin/course_add.php +++ b/main/admin/course_add.php @@ -23,26 +23,6 @@ $em = Database::getManager(); $courseCategoriesRepo = $em->getRepository('ChamiloCoreBundle:CourseCategory'); // Get all possible teachers. $accessUrlId = api_get_current_access_url_id(); -$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname'; -$table_user = Database::get_main_table(TABLE_MAIN_USER); -$sql = "SELECT user_id,lastname,firstname - FROM $table_user - WHERE status=1".$order_clause; -// Filtering teachers when creating a course. -if (api_is_multiple_url_enabled()) { - $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); - $sql = "SELECT u.user_id,lastname,firstname - FROM $table_user as u - INNER JOIN $access_url_rel_user_table url_rel_user - ON (u.user_id=url_rel_user.user_id) - WHERE url_rel_user.access_url_id=".$accessUrlId." AND status=1".$order_clause; -} - -$res = Database::query($sql); -$teachers = array(); -while ($obj = Database::fetch_object($res)) { - $teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname); -} // Build the form. $form = new FormValidator('update_course'); @@ -115,12 +95,14 @@ $form->addRule( CourseManager::MAX_COURSE_LENGTH_CODE ); -$form->addElement( - 'select', +$currentTeacher = api_get_user_entity(api_get_user_id()); + +$form->addSelectAjax( 'course_teachers', get_lang('CourseTeachers'), - $teachers, + [$currentTeacher->getId() => $currentTeacher->getCompleteNameWithUsername()], [ + 'url' => api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=teacher_to_basis_course', 'id' => 'course_teachers', 'multiple' => 'multiple' ] @@ -230,7 +212,7 @@ if (isset($default_course_visibility)) { } $values['subscribe'] = 1; $values['unsubscribe'] = 0; -$values['course_teachers'] = array(api_get_user_id()); +$values['course_teachers'] = [$currentTeacher->getId()]; $form->setDefaults($values); diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index aca392ed98..b69a12ebfe 100755 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -3,6 +3,7 @@ use Chamilo\CoreBundle\Entity\Repository\CourseCategoryRepository; use Chamilo\CoreBundle\Entity\CourseCategory; +use Chamilo\UserBundle\Entity\User; /** * @package chamilo.admin @@ -178,12 +179,19 @@ if ($countCategories >= 100) { ); } +$courseTeacherNames = []; -$form->addElement( - 'advmultiselect', +foreach ($course_teachers as $courseTeacherId) { + /** @var User $courseTeacher */ + $courseTeacher = UserManager::getRepository()->find($courseTeacherId); + $courseTeacherNames[$courseTeacher->getUserId()] = $courseTeacher->getCompleteNameWithUsername(); +} + +$form->addSelectAjax( 'course_teachers', get_lang('CourseTeachers'), - $allTeachers + $courseTeacherNames, + ['url' => api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=teacher_to_basis_course', 'multiple' => 'multiple'] ); $courseInfo['course_teachers'] = $course_teachers; if (array_key_exists('add_teachers_to_sessions_courses', $courseInfo)) { diff --git a/main/inc/ajax/user_manager.ajax.php b/main/inc/ajax/user_manager.ajax.php index c5d21bb44b..208ec3222d 100755 --- a/main/inc/ajax/user_manager.ajax.php +++ b/main/inc/ajax/user_manager.ajax.php @@ -1,7 +1,8 @@ $items]); + break; + case 'teacher_to_basis_course': + api_block_anonymous_users(false); + + $sortByFirstName = api_sort_by_first_name(); + $urlId = api_get_current_access_url_id(); + + $qb = UserManager::getRepository()->createQueryBuilder('u'); + $qb->where( + $qb->expr()->orX( + $qb->expr()->like('u.username', ':q'), + $qb->expr()->like('u.firstname', ':q'), + $qb->expr()->like('u.lastname', ':q') + ) + ); + + if (api_is_multiple_url_enabled()) { + $qb + ->innerJoin('ChamiloCoreBundle:AccessUrlRelUser', 'uru', Join::WITH, 'u.userId = uru.userId') + ->andWhere('uru.accessUrlId = '.$urlId); + } + + $qb + ->andWhere('u.status != '.DRH.' AND u.status != '.ANONYMOUS) + ->orderBy( + $sortByFirstName + ? 'u.firstname, u.firstname' + : 'u.firstname, u.lastname' + ) + ->setParameter('q', '%'.$_REQUEST['q'].'%'); + + $users = $qb->getQuery()->getResult(); + + if (!$users) { + echo json_encode([]); + break; + } + + $items = []; + + /** @var User $user */ + foreach ($users as $user) { + $items[] = [ + 'id' => $user->getId(), + 'text' => $user->getCompleteNameWithUsername() + ]; + } + header('Content-Type: application/json'); echo json_encode(['items' => $items]); break;