Fix teacher list when adding/editing course - refs BT#13165

The new list is according to Enroll Teachers page
pull/2487/head
Angel Fernando Quiroz Campos 9 years ago
parent 8fb5334595
commit 910bc17127
  1. 30
      main/admin/course_add.php
  2. 14
      main/admin/course_edit.php
  3. 53
      main/inc/ajax/user_manager.ajax.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);

@ -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)) {

@ -1,7 +1,8 @@
<?php
/* For licensing terms, see /license.txt */
use Doctrine\Common\Collections\Criteria,
Chamilo\UserBundle\Entity\User;
Chamilo\UserBundle\Entity\User,
Doctrine\ORM\Query\Expr\Join;
/**
* Responses to AJAX calls
@ -214,6 +215,56 @@ switch ($action) {
];
}
header('Content-Type: application/json');
echo json_encode(['items' => $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;

Loading…
Cancel
Save