Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/inc/ajax/session.ajax.php

249 lines
8.4 KiB

<?php
/* For licensing terms, see /license.txt */
use Chamilo\UserBundle\Entity\User;
/**
* Responses to AJAX calls.
*/
require_once __DIR__.'/../global.inc.php';
$action = $_REQUEST['a'];
switch ($action) {
case 'get_user_sessions':
if (api_is_platform_admin() || api_is_session_admin()) {
$user_id = (int) $_POST['user_id'];
$list_sessions = SessionManager::get_sessions_by_user($user_id, true);
if (!empty($list_sessions)) {
foreach ($list_sessions as $session_item) {
echo $session_item['session_name'].'<br />';
}
} else {
echo get_lang('NoSessionsForThisUser');
}
unset($list_sessions);
}
break;
case 'order':
api_protect_admin_script();
$allowOrder = api_get_configuration_value('session_list_order');
if ($allowOrder) {
$order = isset($_GET['order']) ? $_GET['order'] : [];
$order = json_decode($order);
if (!empty($order)) {
$table = Database::get_main_table(TABLE_MAIN_SESSION);
foreach ($order as $data) {
if (isset($data->order) && isset($data->id)) {
$orderId = (int) $data->order;
$sessionId = (int) $data->id;
$sql = "UPDATE $table SET position = $orderId WHERE id = $sessionId ";
Database::query($sql);
}
}
}
}
break;
case 'search_session':
if (api_is_platform_admin()) {
$sessions = SessionManager::get_sessions_list(
[
's.name' => [
'operator' => 'LIKE',
'value' => "%".$_REQUEST['q']."%",
],
]
);
$list = [
'items' => [],
];
if (empty($sessions)) {
echo json_encode([]);
break;
}
foreach ($sessions as $session) {
$list['items'][] = [
'id' => $session['id'],
'text' => $session['name'],
];
}
echo json_encode($list);
}
break;
case 'search_session_all':
if (api_is_platform_admin()) {
$results = SessionManager::get_sessions_list(
[
's.name' => ['operator' => 'like', 'value' => "%".$_REQUEST['q']."%"],
'c.id' => ['operator' => '=', 'value' => $_REQUEST['course_id']],
]
);
$results2 = [];
if (!empty($results)) {
foreach ($results as $item) {
$item2 = [];
foreach ($item as $id => $internal) {
if ($id == 'id') {
$item2[$id] = $internal;
}
if ($id == 'name') {
$item2['text'] = $internal;
}
}
$results2[] = $item2;
}
$results2[] = ['T', 'text' => 'TODOS', 'id' => 'T'];
echo json_encode($results2);
} else {
echo json_encode([['T', 'text' => 'TODOS', 'id' => 'T']]);
}
}
break;
case 'search_session_by_course':
if (api_is_platform_admin()) {
$results = SessionManager::get_sessions_list(
[
's.name' => ['operator' => 'like', 'value' => "%".$_REQUEST['q']."%"],
'c.id' => ['operator' => '=', 'value' => $_REQUEST['course_id']],
]
);
$json = [
'items' => [
['id' => 'T', 'text' => get_lang('All')],
],
];
if (!empty($results)) {
foreach ($results as $item) {
$item2 = [];
foreach ($item as $id => $internal) {
if ($id == 'id') {
$item2[$id] = $internal;
}
if ($id == 'name') {
$item2['text'] = $internal;
}
}
$json['items'][] = $item2;
}
}
echo json_encode($json);
}
break;
case 'session_info':
$sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : '';
$sessionInfo = api_get_session_info($sessionId);
$extraFieldValues = new ExtraFieldValue('session');
$extraField = new ExtraField('session');
$values = $extraFieldValues->getAllValuesByItem($sessionId);
$load = isset($_GET['load_empty_extra_fields']) ? true : false;
if ($load) {
$allExtraFields = $extraField->get_all();
$valueList = array_column($values, 'id');
foreach ($allExtraFields as $extra) {
if (!in_array($extra['id'], $valueList)) {
$values[] = [
'id' => $extra['id'],
'variable' => $extra['variable'],
'value' => '',
'field_type' => $extra['field_type'],
];
}
}
}
$sessionInfo['extra_fields'] = $values;
if (!empty($sessionInfo)) {
echo json_encode($sessionInfo);
}
break;
case 'get_description':
if (isset($_GET['session'])) {
$sessionInfo = api_get_session_info($_GET['session']);
echo '<h2>'.$sessionInfo['name'].'</h2>';
echo '<div class="home-course-intro"><div class="page-course"><div class="page-course-intro">';
echo $sessionInfo['show_description'] == 1 ? $sessionInfo['description'] : get_lang('None');
echo '</div></div></div>';
}
break;
case 'search_general_coach':
SessionManager::protectSession(null, false);
api_protect_limit_for_session_admin();
if (api_is_anonymous()) {
echo '';
break;
}
$list = [
'items' => [],
];
$usersRepo = UserManager::getRepository();
$users = $usersRepo->searchUsersByStatus($_GET['q'], COURSEMANAGER, api_get_current_access_url_id());
/** @var User $user */
foreach ($users as $user) {
$list['items'][] = [
'id' => $user->getId(),
'text' => $user->getCompleteName(),
];
}
header('Content-Type: application/json');
echo json_encode($list);
break;
case 'get_courses_inside_session':
$userId = api_get_user_id();
$isAdmin = api_is_platform_admin();
if ($isAdmin) {
$sessionList = SessionManager::get_sessions_list();
$sessionIdList = array_column($sessionList, 'id');
} else {
$sessionList = SessionManager::get_sessions_by_user($userId);
$sessionIdList = array_column($sessionList, 'session_id');
}
$sessionId = isset($_GET['session_id']) ? (int) $_GET['session_id'] : 0;
$courseList = [];
if (empty($sessionId)) {
$preCourseList = CourseManager::get_courses_list_by_user_id(
$userId,
false,
true
);
$courseList = array_column($preCourseList, 'real_id');
} else {
if ($isAdmin) {
$courseList = SessionManager::getCoursesInSession($sessionId);
} else {
if (in_array($sessionId, $sessionIdList)) {
$courseList = SessionManager::getCoursesInSession($sessionId);
}
}
}
$courseListToSelect = [];
if (!empty($courseList)) {
// Course List
foreach ($courseList as $courseId) {
$courseInfo = api_get_course_info_by_id($courseId);
$courseListToSelect[] = [
'id' => $courseInfo['real_id'],
'name' => $courseInfo['title'],
];
}
}
echo json_encode($courseListToSelect);
break;
default:
echo '';
}
exit;