Session: Use entities to get relations

pull/3844/head
Julio Montoya 5 years ago
parent 0bdacbb145
commit dae8ff1077
  1. 124
      public/main/admin/user_information.php
  2. 78
      public/main/inc/lib/sessionmanager.lib.php
  3. 4
      public/main/session/add_courses_to_session.php
  4. 3
      public/main/session/add_edit_users_to_session.php
  5. 3
      public/main/session/add_students_to_session.php
  6. 3
      public/main/session/add_teachers_to_session.php
  7. 3
      public/main/session/add_users_to_session.php
  8. 4
      public/main/session/add_users_to_session_course.php
  9. 86
      public/main/session/resume_session.php
  10. 3
      public/main/session/session_course_edit.php
  11. 3
      public/main/session/session_course_list.php
  12. 3
      public/main/session/session_course_user.php
  13. 3
      public/main/session/session_course_user_list.php
  14. 4
      public/main/session/session_edit.php
  15. 4
      public/main/session/session_user_edit.php
  16. 3
      public/main/session/session_user_import.php
  17. 20
      public/main/template/default/session/resume_session.html.twig

@ -11,6 +11,7 @@ use Chamilo\CoreBundle\Framework\Container;
* *
* @author Bart Mollet * @author Bart Mollet
*/ */
$cidReset = true; $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
@ -20,7 +21,6 @@ if (empty($userId)) {
api_not_allowed(true); api_not_allowed(true);
} }
$user = api_get_user_entity($userId); $user = api_get_user_entity($userId);
//$user = api_get_user_info($userId, true);
if (null === $user) { if (null === $user) {
api_not_allowed(true); api_not_allowed(true);
@ -145,7 +145,7 @@ $data = [
get_lang('Phone') => $user->getPhone(), get_lang('Phone') => $user->getPhone(),
get_lang('Course code') => $user->getOfficialCode(), get_lang('Course code') => $user->getOfficialCode(),
//get_lang('Online') => !empty($user['user_is_online']) ? Display::return_icon('online.png') : Display::return_icon('offline.png'), //get_lang('Online') => !empty($user['user_is_online']) ? Display::return_icon('online.png') : Display::return_icon('offline.png'),
get_lang('Status') => 1 == $user->getStatus() ? get_lang('Trainer') : get_lang('Learner'), get_lang('Status') => 1 === $user->getStatus() ? get_lang('Trainer') : get_lang('Learner'),
]; ];
$params = []; $params = [];
@ -229,7 +229,6 @@ foreach ($data as $label => $item) {
* Show social activity. * Show social activity.
*/ */
if ('true' === api_get_setting('allow_social_tool')) { if ('true' === api_get_setting('allow_social_tool')) {
$userObject = api_get_user_entity($userId);
$data = []; $data = [];
$messagesSent = ''; $messagesSent = '';
// Calculate values // Calculate values
@ -264,7 +263,9 @@ if ('true' === api_get_setting('allow_social_tool')) {
/** /**
* Show the sessions in which this user is subscribed. * Show the sessions in which this user is subscribed.
*/ */
$sessions = SessionManager::get_sessions_by_user($userId, true); //$sessions = SessionManager::get_sessions_by_user($userId, true);
$sessions = Container::getSessionRepository()->getSessionsByUser($user, api_get_url_entity());
$personal_course_list = []; $personal_course_list = [];
$courseToolInformationTotal = null; $courseToolInformationTotal = null;
$sessionInformation = ''; $sessionInformation = '';
@ -286,19 +287,24 @@ if (count($sessions) > 0) {
$csvContent[] = []; $csvContent[] = [];
$csvContent[] = [get_lang('Course sessions')]; $csvContent[] = [get_lang('Course sessions')];
foreach ($sessions as $session_item) { foreach ($sessions as $session) {
$data = []; $data = [];
$personal_course_list = []; $personal_course_list = [];
$id_session = $session_item['session_id']; $sessionId = $session->getId();
$csvContent[] = [$session_item['session_name']]; $csvContent[] = [$session->getName()];
$csvContent[] = $headerList; $csvContent[] = $headerList;
foreach ($session_item['courses'] as $my_course) { foreach ($session->getCourses() as $sessionRelCourse) {
$courseInfo = api_get_course_info_by_id($my_course['real_id']); $course = $sessionRelCourse->getCourse();
$courseId = $sessionRelCourse->getCourse()->getId();
$courseCode = $sessionRelCourse->getCourse()->getCode();
$courseUrl = api_get_course_url($courseCode);
$sessionStatus = SessionManager::get_user_status_in_course_session( $sessionStatus = SessionManager::get_user_status_in_course_session(
$userId, $userId,
$courseInfo['real_id'], $courseId,
$id_session $sessionId
); );
$status = null; $status = null;
switch ($sessionStatus) { switch ($sessionStatus) {
@ -313,39 +319,39 @@ if (count($sessions) > 0) {
$tools = Display::url( $tools = Display::url(
Display::return_icon('statistics.png', get_lang('Statistics')), Display::return_icon('statistics.png', get_lang('Statistics')),
api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?details=true&student='.$userId.'&id_session='.$id_session.'&course='.$courseInfo['code'] api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?details=true&student='.$userId.'&id_session='.$sessionId.'&course='.$courseCode
); );
$tools .= '&nbsp;<a href="course_information.php?code='.$courseInfo['code'].'&id_session='.$id_session.'">'. $tools .= '&nbsp;<a href="course_information.php?code='.$courseCode.'&id_session='.$sessionId.'">'.
Display::return_icon('info2.png', get_lang('Overview')).'</a>'. Display::return_icon('info2.png', get_lang('Overview')).'</a>'.
'<a href="'.$courseInfo['course_public_url'].'?id_session='.$id_session.'">'. '<a href="'.$courseUrl.'?id_session='.$sessionId.'">'.
Display::return_icon('course_home.png', get_lang('Course home')).'</a>'; Display::return_icon('course_home.png', get_lang('Course home')).'</a>';
if (!empty($my_course['status']) && STUDENT == $my_course['status']) { /*if (!empty($my_course['status']) && STUDENT == $my_course['status']) {
$tools .= '<a $tools .= '<a
href="user_information.php?action=unsubscribe_session_course&course_id='.$courseInfo['real_id'].'&user_id='.$userId.'&id_session='.$id_session.'">'. href="user_information.php?action=unsubscribe_session_course&course_id='.$courseId.'&user_id='.$userId.'&id_session='.$sessionId.'">'.
Display::return_icon('delete.png', get_lang('Delete')).'</a>'; Display::return_icon('delete.png', get_lang('Delete')).'</a>';
} }*/
$timeSpent = api_time_to_hms( $timeSpent = api_time_to_hms(
Tracking::get_time_spent_on_the_course( Tracking::get_time_spent_on_the_course(
$userId, $userId,
$courseInfo['real_id'], $courseId,
$id_session $sessionId
) )
); );
$totalForumMessages = CourseManager::getCountPostInForumPerUser( $totalForumMessages = Container::getForumPostRepository()->countUserForumPosts(
$userId, $user,
$courseInfo['real_id'], $course,
$id_session $session
); );
$row = [ $row = [
Display::url( Display::url(
$courseInfo['code'], $courseCode,
$courseInfo['course_public_url'].'?id_session='.$id_session $courseUrl.'?id_session='.$sessionId
), ),
$courseInfo['title'], $course->getTitle(),
$status, $status,
$timeSpent, $timeSpent,
$totalForumMessages, $totalForumMessages,
@ -355,20 +361,22 @@ if (count($sessions) > 0) {
$csvContent[] = array_map('strip_tags', $row); $csvContent[] = array_map('strip_tags', $row);
$data[] = $row; $data[] = $row;
$result = Tracking::getToolInformation( /*$result = Tracking::getToolInformation(
$userId, $userId,
$courseInfo, $courseInfo,
$id_session $sessionId
); );
if (!empty($result['html'])) { if (!empty($result['html'])) {
$courseToolInformationTotal .= $result['html']; $courseToolInformationTotal .= $result['html'];
$csvContent = array_merge($csvContent, $result['array']); $csvContent = array_merge($csvContent, $result['array']);
} }*/
} }
$dates = array_filter( $dates = array_filter(
[$session_item['access_start_date'], $session_item['access_end_date']] [
$session->getAccessStartDate()->format('Y-m-d H:i:s'),
$session->getAccessEndDate()->format('Y-m-d H:i:s'),
]
); );
$certificateLink = Display::url( $certificateLink = Display::url(
@ -378,15 +386,15 @@ if (count($sessions) > 0) {
[ [
'action' => 'export_to_pdf', 'action' => 'export_to_pdf',
'type' => 'achievement', 'type' => 'achievement',
'session_to_export' => $id_session, 'session_to_export' => $sessionId,
'student' => $userId, 'student' => $userId,
] ]
), ),
['target' => '_blank'] ['target' => '_blank']
); );
$sessionInformation .= Display::page_subheader( $sessionInformation .= Display::page_subheader(
'<a href="'.api_get_path(WEB_CODE_PATH).'session/resume_session.php?id_session='.$id_session.'">'. '<a href="'.api_get_path(WEB_CODE_PATH).'session/resume_session.php?id_session='.$sessionId.'">'.
$session_item['session_name'].'</a>', $session->getName().'</a>',
$certificateLink.' '.implode(' - ', $dates) $certificateLink.' '.implode(' - ', $dates)
); );
@ -404,16 +412,9 @@ if (count($sessions) > 0) {
} }
$courseToolInformationTotal = ''; $courseToolInformationTotal = '';
/** $courseRelUserList = Container::getCourseRepository()->getCoursesByUser($user, api_get_url_entity());
* Show the courses in which this user is subscribed.
*/ if (count($courseRelUserList) > 0) {
$sql = 'SELECT * FROM '.$table_course_user.' cu, '.$table_course.' c
WHERE
cu.user_id = '.$userId.' AND
cu.c_id = c.id AND
cu.relation_type <> '.COURSE_RELATION_TYPE_RRHH.' ';
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
$header = [ $header = [
[get_lang('Course code')], [get_lang('Course code')],
[get_lang('Title')], [get_lang('Title')],
@ -433,44 +434,41 @@ if (Database::num_rows($res) > 0) {
$data = []; $data = [];
$courseToolInformationTotal = null; $courseToolInformationTotal = null;
while ($course = Database::fetch_object($res)) { foreach ($courseRelUserList as $courseRelUser) {
$courseInfo = api_get_course_info_by_id($course->c_id); $course = $courseRelUser->getCourse();
$courseCode = $courseInfo['code']; $courseId = $course->getId();
$courseCode = $course->getCode();
$courseToolInformation = null; $courseToolInformation = null;
$courseUrl = api_get_course_url($courseCode);
$tools = Display::url( $tools = Display::url(
Display::return_icon('statistics.png', get_lang('Statistics')), Display::return_icon('statistics.png', get_lang('Statistics')),
api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?details=true&student='.$userId.'&id_session=0&course='.$courseCode api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?details=true&student='.$userId.'&id_session=0&course='.$courseCode
); );
$tools .= '&nbsp;<a href="course_information.php?code='.$courseCode.'">'. $tools .= '&nbsp;<a href="course_information.php?code='.$courseCode.'">'.
Display::return_icon('info2.png', get_lang('Overview')).'</a>'. Display::return_icon('info2.png', get_lang('Overview')).'</a>'.
'<a href="'.$courseInfo['course_public_url'].'">'. '<a href="'.$courseUrl.'">'.
Display::return_icon('course_home.png', get_lang('Course home')).'</a>'. Display::return_icon('course_home.png', get_lang('Course home')).'</a>'.
'<a href="course_edit.php?id='.$course->c_id.'">'. '<a href="course_edit.php?id='.$courseId.'">'.
Display::return_icon('edit.png', get_lang('Edit')).'</a>'; Display::return_icon('edit.png', get_lang('Edit')).'</a>';
if (STUDENT == $course->status) { if (STUDENT == $courseRelUser->getStatus()) {
$tools .= '<a href="user_information.php?action=unsubscribe&course_id='.$courseInfo['real_id'].'&user_id='.$userId.'">'. $tools .= '<a href="user_information.php?action=unsubscribe&course_id='.$courseId.'&user_id='.$userId.'">'.
Display::return_icon('delete.png', get_lang('Delete')).'</a>'; Display::return_icon('delete.png', get_lang('Delete')).'</a>';
} }
$timeSpent = api_time_to_hms( $timeSpent = api_time_to_hms(
Tracking::get_time_spent_on_the_course( Tracking::get_time_spent_on_the_course(
$userId, $userId,
$courseInfo['real_id'] $courseId
) )
); );
$totalForumMessages = CourseManager::getCountPostInForumPerUser( $totalForumMessages = Container::getForumPostRepository()->countUserForumPosts($user, $course);
$userId,
$course->id,
0
);
$row = [ $row = [
Display::url($courseCode, $courseInfo['course_public_url']), Display::url($courseCode, $courseUrl),
$course->title, $course->getTitle(),
STUDENT == $course->status ? get_lang('Learner') : get_lang('Trainer'), STUDENT == $courseRelUser->getStatus() ? get_lang('Learner') : get_lang('Trainer'),
$timeSpent, $timeSpent,
$totalForumMessages, $totalForumMessages,
$tools, $tools,
@ -479,13 +477,13 @@ if (Database::num_rows($res) > 0) {
$csvContent[] = array_map('strip_tags', $row); $csvContent[] = array_map('strip_tags', $row);
$data[] = $row; $data[] = $row;
$result = Tracking::getToolInformation( /*$result = Tracking::getToolInformation(
$userId, $userId,
$courseInfo, $courseInfo,
0 0
); );
$courseToolInformationTotal .= $result['html']; $courseToolInformationTotal .= $result['html'];
$csvContent = array_merge($csvContent, $result['array']); $csvContent = array_merge($csvContent, $result['array']);*/
} }
$courseInformation = Display::return_sortable_table( $courseInformation = Display::return_sortable_table(

@ -78,7 +78,7 @@ class SessionManager
'nbr_classes' => $session->getNbrClasses(), 'nbr_classes' => $session->getNbrClasses(),
'session_admin_id' => $session->getSessionAdmin()->getId(), 'session_admin_id' => $session->getSessionAdmin()->getId(),
'visibility' => $session->getVisibility(), 'visibility' => $session->getVisibility(),
'promotion_id' => $session->getPromotionId(), 'promotion_id' => $session->getPromotion() ? $session->getPromotion()->getId() : 0,
'display_start_date' => $session->getDisplayStartDate() 'display_start_date' => $session->getDisplayStartDate()
? $session->getDisplayStartDate()->format('Y-m-d H:i:s') ? $session->getDisplayStartDate()->format('Y-m-d H:i:s')
: null, : null,
@ -3576,12 +3576,19 @@ class SessionManager
return Database::affected_rows($result) > 0; return Database::affected_rows($result) > 0;
} }
$em = Database::getManager();
$sessionRelCourseRelUser = new SessionRelCourseRelUser();
$sessionRelCourseRelUser
->setSession(api_get_session_entity($sessionId))
->setCourse(api_get_course_entity($courseId))
->setUser(api_get_user_entity($userId))
->setStatus(2)
->setVisibility(1)
;
$em->persist($sessionRelCourseRelUser);
$em->flush();
$sql = "INSERT INTO $tblSessionRelCourseRelUser(session_id, c_id, user_id, status, visibility) return true;
VALUES($sessionId, $courseId, $userId, 2, 1)";
$result = Database::query($sql);
return Database::affected_rows($result) > 0;
} }
/** /**
@ -4762,7 +4769,7 @@ class SessionManager
return $row[0]; return $row[0];
} }
public static function cantEditSession(Session $session, bool $checkSession = true): bool public static function cantEditSession(?Session $session = null, bool $checkSession = true): bool
{ {
if (!self::allowToManageSessions()) { if (!self::allowToManageSessions()) {
return false; return false;
@ -4788,25 +4795,20 @@ class SessionManager
* *
* @return mixed | bool true if pass the check, api_not_allowed otherwise * @return mixed | bool true if pass the check, api_not_allowed otherwise
*/ */
public static function protectSession(Session $session, bool $checkSession = true) public static function protectSession(?Session $session = null, bool $checkSession = true)
{ {
if (!self::cantEditSession($session, $checkSession)) { if (!self::cantEditSession($session, $checkSession)) {
api_not_allowed(true); api_not_allowed(true);
} }
} }
/** public static function allowToManageSessions(): bool
* @return bool
*/
public static function allowToManageSessions()
{ {
if (self::allowManageAllSessions()) { if (self::allowManageAllSessions()) {
return true; return true;
} }
$setting = api_get_setting('allow_teachers_to_create_sessions'); if (api_is_teacher() && 'true' === api_get_setting('allow_teachers_to_create_sessions')) {
if (api_is_teacher() && 'true' === $setting) {
return true; return true;
} }
@ -7737,14 +7739,9 @@ class SessionManager
return $sessionList; return $sessionList;
} }
/** public static function getSessionVisibility(Session $session) : string
* @param array $sessionInfo
*
* @return string
*/
public static function getSessionVisibility($sessionInfo)
{ {
switch ($sessionInfo['visibility']) { switch ($session->getVisibility()) {
case 1: case 1:
return get_lang('Read only'); return get_lang('Read only');
case 2: case 2:
@ -7757,40 +7754,35 @@ class SessionManager
/** /**
* Returns a human readable string. * Returns a human readable string.
* *
* @param array $sessionInfo An array with all the session dates
* @param bool $showTime
*
* @return array * @return array
*/ */
public static function parseSessionDates($sessionInfo, $showTime = false) public static function parseSessionDates(Session $session, bool $showTime = false)
{ {
$displayDates = self::convertSessionDateToString( $displayDates = self::convertSessionDateToString(
$sessionInfo['display_start_date'], $session->getDisplayStartDate()->format('Y-m-d H:i:s'),
$sessionInfo['display_end_date'], $session->getDisplayEndDate()->format('Y-m-d H:i:s'),
$showTime, $showTime,
true true
); );
$accessDates = self::convertSessionDateToString( $accessDates = self::convertSessionDateToString(
$sessionInfo['access_start_date'], $session->getAccessStartDate()->format('Y-m-d H:i:s'),
$sessionInfo['access_end_date'], $session->getAccessEndDate()->format('Y-m-d H:i:s'),
$showTime, $showTime,
true true
); );
$coachDates = self::convertSessionDateToString( $coachDates = self::convertSessionDateToString(
$sessionInfo['coach_access_start_date'], $session->getCoachAccessStartDate()->format('Y-m-d H:i:s'),
$sessionInfo['coach_access_end_date'], $session->getCoachAccessEndDate()->format('Y-m-d H:i:s'),
$showTime, $showTime,
true true
); );
$result = [ return [
'access' => $accessDates, 'access' => $accessDates,
'display' => $displayDates, 'display' => $displayDates,
'coach' => $coachDates, 'coach' => $coachDates,
]; ];
return $result;
} }
/** /**
@ -9590,32 +9582,36 @@ class SessionManager
} }
} }
private static function allowed(Session $session): bool private static function allowed(?Session $session = null): bool
{ {
if (api_is_platform_admin()) { if (api_is_platform_admin()) {
return true; return true;
} }
if (null === $session) {
return false;
}
$userId = api_get_user_id(); $userId = api_get_user_id();
if (api_is_session_admin() && if (api_is_session_admin() &&
'true' !== api_get_setting('allow_session_admins_to_manage_all_sessions') 'true' !== api_get_setting('allow_session_admins_to_manage_all_sessions')
) { ) {
if ($userId !== $session->getSessionAdmin()->getId()) { if ($userId === $session->getSessionAdmin()->getId()) {
return false; return true;
} }
} }
if (api_is_teacher() && if (api_is_teacher() &&
'true' === api_get_setting('allow_teachers_to_create_sessions') 'true' === api_get_setting('allow_teachers_to_create_sessions')
) { ) {
if ($userId !== $session->getGeneralCoach()->getId()) { if ($userId === $session->getGeneralCoach()->getId()) {
return false; return true;
} }
} }
return true; return false;
} }
/** /**

@ -11,8 +11,8 @@ require_once __DIR__.'/../inc/global.inc.php';
$sessionId = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $sessionId = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
$add = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $add = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
$session = api_get_session_entity($sessionId);
SessionManager::protectSession($sessionId); SessionManager::protectSession($session);
$xajax = new xajax(); $xajax = new xajax();
$xajax->registerFunction(['search_courses', 'AddCourseToSession', 'search_courses']); $xajax->registerFunction(['search_courses', 'AddCourseToSession', 'search_courses']);

@ -18,7 +18,8 @@ if (empty($id_session)) {
} }
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
// setting breadcrumbs // setting breadcrumbs
$interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('Session list')]; $interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('Session list')];

@ -26,7 +26,8 @@ $form_sent = 0;
$errorMsg = ''; $errorMsg = '';
$users = $sessions = []; $users = $sessions = [];
$id = isset($_GET['id']) ? intval($_GET['id']) : 0; $id = isset($_GET['id']) ? intval($_GET['id']) : 0;
SessionManager::protectSession($id); $session = api_get_session_entity($id);
SessionManager::protectSession($session);
$htmlResult = ''; $htmlResult = '';
if (isset($_POST['form_sent']) && $_POST['form_sent']) { if (isset($_POST['form_sent']) && $_POST['form_sent']) {

@ -23,7 +23,8 @@ $form_sent = 0;
$errorMsg = ''; $errorMsg = '';
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0; $id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
SessionManager::protectSession($id); $session = api_get_session_entity($id);
SessionManager::protectSession($session);
$htmlResult = ''; $htmlResult = '';
if (isset($_POST['form_sent']) && $_POST['form_sent']) { if (isset($_POST['form_sent']) && $_POST['form_sent']) {

@ -15,7 +15,8 @@ $this_section = SECTION_PLATFORM_ADMIN;
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
// setting breadcrumbs // setting breadcrumbs
$interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('Session list')]; $interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('Session list')];

@ -21,8 +21,8 @@ if (empty($id_session) || empty($courseId)) {
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
$courseInfo = api_get_course_info_by_id($courseId); $courseInfo = api_get_course_info_by_id($courseId);
// setting breadcrumbs // setting breadcrumbs

@ -6,11 +6,9 @@ use Chamilo\CoreBundle\Entity\SequenceResource;
use Chamilo\CoreBundle\Entity\Session; use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\SessionRelCourse; use Chamilo\CoreBundle\Entity\SessionRelCourse;
use Chamilo\CoreBundle\Entity\SessionRelCourseRelUser; use Chamilo\CoreBundle\Entity\SessionRelCourseRelUser;
use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CoreBundle\Repository\SequenceRepository; use Chamilo\CoreBundle\Repository\SequenceRepository;
/**
* @author Bart Mollet, Julio Montoya lot of fixes
*/
$cidReset = true; $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
@ -35,17 +33,8 @@ $interbreadcrumb[] = [
$orig_param = '&origin=resume_session'; $orig_param = '&origin=resume_session';
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS); $tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$table_access_url_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$em = Database::getManager(); $em = Database::getManager();
$sessionCategory = $session->getCategory(); $sessionCategory = $session->getCategory();
@ -131,11 +120,10 @@ $sessionTitle = Display::page_subheader(get_lang('General properties').$url);
$sessionField = new ExtraField('session'); $sessionField = new ExtraField('session');
$extraFieldData = $sessionField->getDataAndFormattedValues($sessionId); $extraFieldData = $sessionField->getDataAndFormattedValues($sessionId);
$multiple_url_is_on = api_get_multiple_access_url();
$urlList = []; $urlList = [];
if ($multiple_url_is_on) { $isMultipleUrl = api_is_multiple_url_enabled();
$urlList = UrlManager::get_access_url_from_session($sessionId); if ($isMultipleUrl) {
$urlList = $session->getUrls();
} }
$url = Display::url( $url = Display::url(
@ -166,10 +154,12 @@ if (0 === $session->getNbrCourses()) {
/** @var SessionRelCourse $sessionRelCourse */ /** @var SessionRelCourse $sessionRelCourse */
foreach ($courses as $sessionRelCourse) { foreach ($courses as $sessionRelCourse) {
$course = $sessionRelCourse->getCourse(); $course = $sessionRelCourse->getCourse();
$courseId = $course->getId();
$courseCode = $course->getCode();
// Select the number of users // Select the number of users
$numberOfUsers = SessionManager::getCountUsersInCourseSession($course, $session); $numberOfUsers = SessionManager::getCountUsersInCourseSession($course, $session);
// Get coachs of the courses in session // Get coaches of the courses in session
$namesOfCoaches = []; $namesOfCoaches = [];
$coachSubscriptions = $session->getUserCourseSubscriptionsByStatus($course, Session::COACH); $coachSubscriptions = $session->getUserCourseSubscriptionsByStatus($course, Session::COACH);
@ -189,7 +179,7 @@ if (0 === $session->getNbrCourses()) {
), ),
!$count !$count
? '#' ? '#'
: api_get_self().'?id_session='.$sessionId.'&course_id='.$course->getId().'&action=move_up' : api_get_self().'?id_session='.$sessionId.'&course_id='.$courseId.'&action=move_up'
); );
$orderButtons .= Display::url( $orderButtons .= Display::url(
@ -199,11 +189,11 @@ if (0 === $session->getNbrCourses()) {
), ),
$count + 1 == count($courses) $count + 1 == count($courses)
? '#' ? '#'
: api_get_self().'?id_session='.$sessionId.'&course_id='.$course->getId().'&action=move_down' : api_get_self().'?id_session='.$sessionId.'&course_id='.$courseId.'&action=move_down'
); );
} }
$courseUrl = api_get_course_url($course->getCode(), $sessionId); $courseUrl = api_get_course_url($courseCode, $sessionId);
// hide_course_breadcrumb the parameter has been added to hide the name // hide_course_breadcrumb the parameter has been added to hide the name
// of the course, that appeared in the default $interbreadcrumb // of the course, that appeared in the default $interbreadcrumb
@ -222,34 +212,34 @@ if (0 === $session->getNbrCourses()) {
if ($allowSkills) { if ($allowSkills) {
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('skills.png', get_lang('Skills')), Display::return_icon('skills.png', get_lang('Skills')),
$codePath.'admin/skill_rel_course.php?session_id='.$sessionId.'&course_id='.$course->getId() $codePath.'admin/skill_rel_course.php?session_id='.$sessionId.'&course_id='.$courseId
); );
} }
$courseItem .= $orderButtons; $courseItem .= $orderButtons;
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('new_user.png', get_lang('Add a user')), Display::return_icon('new_user.png', get_lang('Add a user')),
$codePath."session/add_users_to_session_course.php?id_session=$sessionId&course_id=".$course->getId() $codePath."session/add_users_to_session_course.php?id_session=$sessionId&course_id=".$courseId
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('user.png', get_lang('Users')), Display::return_icon('user.png', get_lang('Users')),
$codePath."session/session_course_user_list.php?id_session=$sessionId&course_code=".$course->getCode() $codePath."session/session_course_user_list.php?id_session=$sessionId&course_code=".$courseCode
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('import_csv.png', get_lang('Import users list')), Display::return_icon('import_csv.png', get_lang('Import users list')),
$codePath."user/user_import.php?action=import&cid={$course->getId()}&sid=$sessionId" $codePath."user/user_import.php?action=import&cid={$courseId}&sid=$sessionId"
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('export_csv.png', get_lang('Export users of a course')), Display::return_icon('export_csv.png', get_lang('Export users of a course')),
$codePath."user/user_export.php?file_type=csv&course_session={$course->getCode()}:$sessionId&addcsvheader=1" $codePath."user/user_export.php?file_type=csv&course_session=$courseCode:$sessionId&addcsvheader=1"
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('statistics.gif', get_lang('Reporting')), Display::return_icon('statistics.gif', get_lang('Reporting')),
$codePath."tracking/courseLog.php?sid=$sessionId&cid={$course->getId()}$orig_param&hide_course_breadcrumb=1" $codePath."tracking/courseLog.php?sid=$sessionId&cid={$courseId}$orig_param&hide_course_breadcrumb=1"
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('teacher.png', get_lang('Edit coach')), Display::return_icon('teacher.png', get_lang('Edit coach')),
$codePath."session/session_course_edit.php?id_session=$sessionId&page=resume_session.php&course_code={$course->getCode()}$orig_param" $codePath."session/session_course_edit.php?id_session=$sessionId&page=resume_session.php&course_code={$courseCode}$orig_param"
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('folder_document.png', get_lang('File upload')), Display::return_icon('folder_document.png', get_lang('File upload')),
@ -257,12 +247,12 @@ if (0 === $session->getNbrCourses()) {
[ [
'class' => 'session-upload-file-btn', 'class' => 'session-upload-file-btn',
'data-session' => $sessionId, 'data-session' => $sessionId,
'data-course' => $course->getId(), 'data-course' => $courseId,
] ]
); );
$courseItem .= Display::url( $courseItem .= Display::url(
Display::return_icon('delete.png', get_lang('Delete')), Display::return_icon('delete.png', get_lang('Delete')),
api_get_self()."?id_session=$sessionId&action=delete&idChecked[]={$course->getCode()}", api_get_self()."?id_session=$sessionId&action=delete&idChecked[]={$courseCode}",
[ [
'onclick' => "javascript:if(!confirm('".get_lang('Please confirm your choice')."')) return false;", 'onclick' => "javascript:if(!confirm('".get_lang('Please confirm your choice')."')) return false;",
] ]
@ -289,53 +279,50 @@ $url .= Display::url(
); );
$userListToShow = Display::page_subheader(get_lang('User list').$url); $userListToShow = Display::page_subheader(get_lang('User list').$url);
$userList = SessionManager::get_users_by_session($sessionId); $sessionRelUsers = Container::getSessionRepository()->getUsersByAccessUrl($session, api_get_url_entity());
if (!empty($userList)) { if (!empty($sessionRelUsers)) {
$table = new HTML_Table( $table = new HTML_Table(['class' => 'table table-bordered', 'id' => 'session-user-list']);
['class' => 'table table-bordered', 'id' => 'session-user-list']
);
$table->setHeaderContents(0, 0, '#'); $table->setHeaderContents(0, 0, '#');
$table->setHeaderContents(0, 1, get_lang('User')); $table->setHeaderContents(0, 1, get_lang('User'));
$table->setHeaderContents(0, 2, get_lang('Status')); $table->setHeaderContents(0, 2, get_lang('Status'));
$table->setHeaderContents(0, 3, get_lang('Registration date')); $table->setHeaderContents(0, 3, get_lang('Registration date'));
$table->setHeaderContents(0, 4, get_lang('Detail')); $table->setHeaderContents(0, 4, get_lang('Detail'));
$row = 1; $row = 1;
foreach ($userList as $user) { foreach ($sessionRelUsers as $sessionRelUser) {
$userId = $user['user_id']; $user = $sessionRelUser->getUser();
$userInfo = api_get_user_info($userId); $userId = $user->getId();
$userLink = '<a href="'.$codePath.'admin/user_information.php?user_id='.$userId.'">'. $userLink = '<a href="'.$codePath.'admin/user_information.php?user_id='.$userId.'">'.
api_htmlentities($userInfo['complete_name_with_username']).'</a>'; api_htmlentities(UserManager::formatUserFullName($user)).'</a>';
$reportingLink = Display::url( $reportingLink = Display::url(
Display::return_icon('statistics.gif', get_lang('Reporting')), Display::return_icon('statistics.gif', get_lang('Reporting')),
$codePath.'mySpace/myStudents.php?student='.$user['user_id'].''.$orig_param.'&id_session=' $codePath.'mySpace/myStudents.php?student='.$userId.''.$orig_param.'&id_session='
.$sessionId .$sessionId
); );
$courseUserLink = Display::url( $courseUserLink = Display::url(
Display::return_icon('course.png', get_lang('Block user from courses in this session')), Display::return_icon('course.png', get_lang('Block user from courses in this session')),
$codePath.'session/session_course_user.php?id_user='.$user['user_id'].'&id_session=' $codePath.'session/session_course_user.php?id_user='.$userId.'&id_session='
.$sessionId .$sessionId
); );
$removeLink = Display::url( $removeLink = Display::url(
Display::return_icon('delete.png', get_lang('Delete')), Display::return_icon('delete.png', get_lang('Delete')),
api_get_self().'?id_session='.$sessionId.'&action=delete&user='.$user['user_id'], api_get_self().'?id_session='.$sessionId.'&action=delete&user='.$userId,
['onclick' => "javascript:if(!confirm('".get_lang('Please confirm your choice')."')) return false;"] ['onclick' => "javascript:if(!confirm('".get_lang('Please confirm your choice')."')) return false;"]
); );
$addUserToUrlLink = ''; $addUserToUrlLink = '';
if ($multiple_url_is_on) { /*if ($isMultipleUrl) {
if ($user['access_url_id'] != $url_id) { if ($user['access_url_id'] != $url_id) {
$userLink .= ' '.Display::return_icon('warning.png', get_lang('Users not added to the URL')); $userLink .= ' '.Display::return_icon('warning.png', get_lang('Users not added to the URL'));
$add = Display::return_icon('add.png', get_lang('Add a userToURL')); $add = Display::return_icon('add.png', get_lang('Add a userToURL'));
$addUserToUrlLink = '<a href="resume_session.php?action=add_user_to_url&id_session='.$sessionId $addUserToUrlLink = '<a href="resume_session.php?action=add_user_to_url&id_session='.$sessionId
.'&user_id='.$user['user_id'].'">'.$add.'</a>'; .'&user_id='.$user['user_id'].'">'.$add.'</a>';
} }
} }*/
$editUrl = null; $editUrl = null;
/* /*
@ -347,7 +334,7 @@ if (!empty($userList)) {
); );
}*/ }*/
$link = $reportingLink.$courseUserLink.$removeLink.$addUserToUrlLink.$editUrl; $link = $reportingLink.$courseUserLink.$removeLink.$addUserToUrlLink.$editUrl;
switch ($user['relation_type']) { switch ($sessionRelUser->getRelationType()) {
case 1: case 1:
$status = get_lang('Human Resources Manager'); $status = get_lang('Human Resources Manager');
$link = Display::url( $link = Display::url(
@ -359,7 +346,7 @@ if (!empty($userList)) {
$status = get_lang('Learner'); $status = get_lang('Learner');
} }
$registered = !empty($user['registered_at']) ? Display::dateToStringAgoAndLongDate($user['registered_at']) : ''; $registered = Display::dateToStringAgoAndLongDate($sessionRelUser->getRegisteredAt());
$table->setCellContents($row, 0, $row); $table->setCellContents($row, 0, $row);
$table->setCellContents($row, 1, $userLink); $table->setCellContents($row, 1, $userLink);
@ -389,7 +376,6 @@ if (!empty($requirementAndDependencies['dependencies'])) {
$dependencies .= implode(', ', array_column($requirementAndDependencies['dependencies'], 'admin_link')); $dependencies .= implode(', ', array_column($requirementAndDependencies['dependencies'], 'admin_link'));
} }
$promotion = $session->getPromotion();
$programmedAnnouncement = new ScheduledAnnouncement(); $programmedAnnouncement = new ScheduledAnnouncement();
$programmedAnnouncement = $programmedAnnouncement->allowed(); $programmedAnnouncement = $programmedAnnouncement->allowed();
@ -398,10 +384,8 @@ $tpl->assign('session_header', $sessionHeader);
$tpl->assign('title', $sessionTitle); $tpl->assign('title', $sessionTitle);
$tpl->assign('session', $session); $tpl->assign('session', $session);
$tpl->assign('programmed_announcement', $programmedAnnouncement); $tpl->assign('programmed_announcement', $programmedAnnouncement);
$tpl->assign('session_category', is_null($sessionCategory) ? null : $sessionCategory->getName()); $tpl->assign('session_dates', SessionManager::parseSessionDates($session, true));
//$tpl->assign('session_dates', SessionManager::parseSessionDates($sessionInfo, true)); $tpl->assign('session_visibility', SessionManager::getSessionVisibility($session));
//$tpl->assign('session_visibility', SessionManager::getSessionVisibility($sessionInfo));
$tpl->assign('promotion', $promotion);
$tpl->assign('url_list', $urlList); $tpl->assign('url_list', $urlList);
$tpl->assign('extra_fields', $extraFieldData); $tpl->assign('extra_fields', $extraFieldData);
$tpl->assign('course_list', $courseListToShow); $tpl->assign('course_list', $courseListToShow);

@ -10,7 +10,8 @@ $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
$course_code = $_GET['course_code']; $course_code = $_GET['course_code'];
$course_info = api_get_course_info($_REQUEST['course_code']); $course_info = api_get_course_info($_REQUEST['course_code']);

@ -10,7 +10,8 @@ require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
// Database Table Definitions // Database Table Definitions
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);

@ -14,7 +14,8 @@ require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$tool_name = get_lang('Edit session courses by user'); $tool_name = get_lang('Edit session courses by user');
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
$id_user = intval($_GET['id_user']); $id_user = intval($_GET['id_user']);

@ -14,7 +14,8 @@ $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); $session = api_get_session_entity($id_session);
SessionManager::protectSession($session);
if (empty($id_session)) { if (empty($id_session)) {
api_not_allowed(); api_not_allowed();

@ -18,8 +18,8 @@ $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$id = (int) $_GET['id']; $id = (int) $_GET['id'];
SessionManager::protectSession($id); $session = api_get_session_entity($id);
SessionManager::protectSession($session);
$sessionInfo = SessionManager::fetch($id); $sessionInfo = SessionManager::fetch($id);
// Sets to local time to show it correctly when you edit a session // Sets to local time to show it correctly when you edit a session

@ -9,8 +9,8 @@ require_once __DIR__.'/../inc/global.inc.php';
$sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null; $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null;
$userId = isset($_GET['user_id']) ? $_GET['user_id'] : null; $userId = isset($_GET['user_id']) ? $_GET['user_id'] : null;
SessionManager::protectSession($sessionId); $session = api_get_session_entity($sessionId);
SessionManager::protectSession($session);
$sessionInfo = api_get_session_info($sessionId); $sessionInfo = api_get_session_info($sessionId);
if (empty($sessionInfo)) { if (empty($sessionInfo)) {

@ -11,7 +11,8 @@ set_time_limit(0);
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$session_id = isset($_GET['id_session']) ? intval($_GET['id_session']) : null; $session_id = isset($_GET['id_session']) ? intval($_GET['id_session']) : null;
SessionManager::protectSession($session_id); $session = api_get_session_entity($session_id);
SessionManager::protectSession($session);
$form_sent = 0; $form_sent = 0;
$tool_name = get_lang('Import users'); $tool_name = get_lang('Import users');

@ -8,16 +8,16 @@
<table id="session-properties" class="table table-bordered"> <table id="session-properties" class="table table-bordered">
<tr> <tr>
<td>{{ 'Created by'|get_lang }}</td> <td>{{ 'Created by'|get_lang }}</td>
<td>{{ session_admin.complete_name_with_message_link }}</td> <td>{{ session.sessionAdmin | user_complete_name_with_link }}</td>
</tr> </tr>
<tr> <tr>
<td>{{ 'General coach' | get_lang}} :</td> <td>{{ 'General coach' | get_lang}} :</td>
<td>{{ general_coach.complete_name_with_message_link }}</td> <td>{{ session.generalCoach | user_complete_name_with_link }}</td>
</tr> </tr>
{% if session_category %} {% if session.category %}
<tr> <tr>
<td>{{ 'Session category' | get_lang}} </td> <td>{{ 'Session category' | get_lang}} </td>
<td>{{ session_category }}</td> <td>{{ session.category.name }}</td>
</tr> </tr>
{% endif %} {% endif %}
@ -52,7 +52,7 @@
<tr> <tr>
<td>{{ 'Show description' | get_lang}} </td> <td>{{ 'Show description' | get_lang}} </td>
<td> <td>
{% if session.show_description == 1 %} {% if session.showDescription == 1 %}
{{ 'Yes' | get_lang}} {{ 'Yes' | get_lang}}
{% else %} {% else %}
{{ 'No' | get_lang}} {{ 'No' | get_lang}}
@ -65,20 +65,20 @@
{{ session_visibility }} {{ session_visibility }}
</td> </td>
</tr> </tr>
{% if promotion %} {% if session.promotion %}
<tr> <tr>
<td>{{ 'Career' | get_lang}}</td> <td>{{ 'Career' | get_lang}}</td>
<td> <td>
<a href="{{ _p.web_main }}admin/career_dashboard.php?filter={{ promotion.career.id }}&submit=&_qf__filter_form="> <a href="{{ _p.web_main }}admin/career_dashboard.php?filter={{ session.promotion.career.id }}&submit=&_qf__filter_form=">
{{ promotion.career.name }} {{ session.promotion.career.name }}
</a> </a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>{{ 'Promotion' | get_lang}}</td> <td>{{ 'Promotion' | get_lang}}</td>
<td> <td>
<a href="{{ _p.web_main }}admin/promotions.php?action=edit&id={{ promotion.id }}"> <a href="{{ _p.web_main }}admin/promotions.php?action=edit&id={{ session.promotion.id }}">
{{ promotion.name }} {{ session.promotion.name }}
</a> </a>
</td> </td>
</tr> </tr>

Loading…
Cancel
Save