Allowing course order inside a session see BT#8316

1.9.x
Julio Montoya 11 years ago
parent fc22975709
commit 019987dacf
  1. 96
      main/admin/resume_session.php
  2. 124
      main/inc/lib/sessionmanager.lib.php
  3. 11
      main/inc/lib/usermanager.lib.php

@ -24,16 +24,15 @@ $interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmi
$interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('SessionList'));
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$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);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$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);
$sql = 'SELECT
name,
@ -74,7 +73,17 @@ $action = isset($_GET['action']) ? $_GET['action'] : null;
$url_id = api_get_current_access_url_id();
switch($action) {
switch ($action) {
case 'move_up':
SessionManager::moveUp($id_session, $_GET['course_code']);
header('Location: resume_session.php?id_session='.$id_session);
exit;
break;
case 'move_down':
SessionManager::moveDown($id_session, $_GET['course_code']);
header('Location: resume_session.php?id_session='.$id_session);
exit;
break;
case 'add_user_to_url':
$user_id = $_REQUEST['user_id'];
$result = UrlManager::add_user_to_url($user_id, $url_id);
@ -133,7 +142,9 @@ if (!empty($message)) {
echo $message;
}
echo Display::page_header(Display::return_icon('session.png', get_lang('Session')).' '.$session['name']);
echo Display::page_header(
Display::return_icon('session.png', get_lang('Session')).' '.$session['name']
);
$url = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL),
@ -243,8 +254,8 @@ echo Display::page_subheader(get_lang('CourseList').$url);
<tr>
<th width="35%"><?php echo get_lang('CourseTitle'); ?></th>
<th width="30%"><?php echo get_lang('CourseCoach'); ?></th>
<th width="20%"><?php echo get_lang('UsersNumber'); ?></th>
<th width="15%"><?php echo get_lang('Actions'); ?></th>
<th width="10%"><?php echo get_lang('UsersNumber'); ?></th>
<th width="25%"><?php echo get_lang('Actions'); ?></th>
</tr>
<?php
if ($session['nbr_courses'] == 0) {
@ -253,14 +264,22 @@ if ($session['nbr_courses'] == 0) {
</tr>';
} else {
// select the courses
$orderBy = "ORDER BY title";
if (SessionManager::orderCourseIsEnabled()) {
$orderBy = "ORDER BY position";
}
$sql = "SELECT code,title,visual_code, nbr_users
FROM $tbl_course,$tbl_session_rel_course
FROM $tbl_course, $tbl_session_rel_course
WHERE
course_code = code AND
id_session='$id_session'
ORDER BY title";
$result=Database::query($sql);
$courses=Database::store_result($result);
$orderBy";
$result = Database::query($sql);
$courses = Database::store_result($result);
$count = 0;
foreach ($courses as $course) {
//select the number of users
@ -274,7 +293,7 @@ if ($session['nbr_courses'] == 0) {
srcru.id_session = '".intval($id_session)."'";
$rs = Database::query($sql);
$course['nbr_users'] = Database::result($rs,0,0);
$course['nbr_users'] = Database::result($rs, 0, 0);
// Get coachs of the courses in session
@ -302,6 +321,36 @@ if ($session['nbr_courses'] == 0) {
$coach = get_lang('None');
}
$orderButtons = null;
if (SessionManager::orderCourseIsEnabled()) {
$upIcon = 'up.png';
$urlUp = api_get_self().'?id_session='.$id_session.'&course_code='.$course['code'].'&action=move_up&list='.$list;
if ($count == 0) {
$upIcon = 'up_na.png';
$urlUp = '#';
}
$orderButtons = Display::url(
Display::return_icon($upIcon, get_lang('MoveUp')),
$urlUp
);
$downIcon = 'down.png';
$downUrl = api_get_self().'?id_session='.$id_session.'&course_code='.$course['code'].'&action=move_down&list='.$list;
if ($count +1 == count($courses)) {
$downIcon = 'down_na.png';
$downUrl = '#';
}
$orderButtons .= Display::url(
Display::return_icon($downIcon, get_lang('MoveDown')),
$downUrl
);
}
$orig_param = '&origin=resume_session';
//hide_course_breadcrumb the parameter has been added to hide the name of the course, that appeared in the default $interbreadcrumb
echo '
@ -311,13 +360,16 @@ if ($session['nbr_courses'] == 0) {
<td>'.$course['nbr_users'].'</td>
<td>
<a href="'.api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('Course')).'</a>
'.$orderButtons.'
<a href="session_course_user_list.php?id_session='.$id_session.'&course_code='.$course['code'].'">'.Display::return_icon('user.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'/user/user_import.php?action=import&cidReq='.$course['code'].'&id_session='.$id_session.'">'.Display::return_icon('import_csv.png', get_lang('ImportUsersToACourse'), null, ICON_SIZE_SMALL).'</a>
<a href="../tracking/courseLog.php?id_session='.$id_session.'&cidReq='.$course['code'].$orig_param.'&hide_course_breadcrumb=1">'.Display::return_icon('statistics.gif', get_lang('Tracking')).'</a>&nbsp;
<a href="session_course_edit.php?id_session='.$id_session.'&page=resume_session.php&course_code='.$course['code'].''.$orig_param.'">'.Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_self().'?id_session='.$id_session.'&action=delete&idChecked[]='.$course['code'].'" onclick="javascript:if(!confirm(\''.get_lang('ConfirmYourChoice').'\')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>
</td>
</tr>';
$count++;
}
}
?>
@ -410,3 +462,9 @@ if ($session['nbr_users']==0) {
<?php
// footer
Display :: display_footer();
/*
ALTER TABLE session_rel_course ADD COLUMN position int;
ALTER TABLE session_rel_course ADD COLUMN category varchar(255);
*
*/

@ -1618,9 +1618,11 @@ class SessionManager
* @return bool
*/
public static function subscribe_users_to_session_course(
$user_list, $session_id, $course_code, $session_visibility = SESSION_VISIBLE_READ_ONLY
)
{
$user_list,
$session_id,
$course_code,
$session_visibility = SESSION_VISIBLE_READ_ONLY
) {
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
@ -1965,7 +1967,10 @@ class SessionManager
{
$tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$return_value = false;
$sql = "SELECT course_code FROM $tbl_session_course WHERE id_session = " . Database::escape_string($session_id) . " AND course_code = '" . Database::escape_string($course_id) . "'";
$sql = "SELECT course_code FROM $tbl_session_course
WHERE
id_session = " . Database::escape_string($session_id) . " AND
course_code = '" . Database::escape_string($course_id) . "'";
$result = Database::query($sql);
$num = Database::num_rows($result);
if ($num > 0) {
@ -2614,7 +2619,7 @@ class SessionManager
* @param string $course_name
* @return array list of courses
*/
public static function get_course_list_by_session_id($session_id, $course_name = '')
public static function get_course_list_by_session_id($session_id, $course_name = '', $orderBy = 'title')
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -2625,12 +2630,16 @@ class SessionManager
$sql = "SELECT * FROM $tbl_course c
INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code
WHERE src.id_session = '$session_id'";
if (!empty($course_name)) {
$course_name = Database::escape_string($course_name);
$sql .= " AND c.title LIKE '%$course_name%' ";
}
$sql .= "ORDER BY title;";
$orderBy = Database::escape_string($orderBy);
$sql .= "ORDER BY $orderBy";
$result = Database::query($sql);
$num_rows = Database::num_rows($result);
$courses = array();
@ -4467,4 +4476,107 @@ class SessionManager
return self::checkSubscribeDrhToSessionList($userSessionList);
}
}
/**
* Courses re-ordering in resume_session.php flag
*/
public static function orderCourseIsEnabled()
{
global $_configuration;
if (isset($_configuration['session_course_ordering']) &&
$_configuration['session_course_ordering']
) {
return true;
}
return false;
}
/**
* @param string $direction (up/down)
* @param int $sessionId
* @param string $courseCode
* @return bool
*/
public function move($direction, $sessionId, $courseCode)
{
if (!self::orderCourseIsEnabled()) {
return false;
}
$sessionId = intval($sessionId);
$courseCode = Database::escape_string($courseCode);
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$courseList = self::get_course_list_by_session_id($sessionId, null, 'position');
$position = array();
$count = 0;
foreach ($courseList as $course) {
if ($course['position'] == '') {
$course['position'] = $count;
}
$position[$course['code']] = $course['position'];
// Saving current order.
$sql = "UPDATE $table SET position = $count
WHERE id_session = $sessionId AND course_code = '".$course['code']."'";
Database::query($sql);
$count++;
}
$found = false;
switch ($direction) {
case 'up':
$courseList = array_reverse($courseList);
break;
case 'down':
break;
}
foreach ($courseList as $course) {
if ($found) {
$nextId = $course['code'];
$nextOrder = $course['position'];
break;
}
if ($courseCode == $course['code']) {
$thisCourseCode = $course['code'];
$thisOrder = $course['position'];
$found = true;
}
}
$sql1 = "UPDATE $table SET position = '".intval($nextOrder)."'
WHERE id_session = $sessionId AND course_code = '".$thisCourseCode."'";
$sql2 = "UPDATE $table SET position = '".intval($thisOrder)."'
WHERE id_session = $sessionId AND course_code = '".$nextId."'";
Database::query($sql1);
Database::query($sql2);
return true;
}
/**
* @param int $sessionId
* @param string $courseCode
* @return bool
*/
public function moveUp($sessionId, $courseCode)
{
return self::move('up', $sessionId, $courseCode);
}
/**
* @param int $sessionId
* @param string $courseCode
* @return bool
*/
public function moveDown($sessionId, $courseCode)
{
return self::move('down', $sessionId, $courseCode);
}
}

@ -2656,8 +2656,13 @@ class UserManager
INNER JOIN $tbl_session_course sc
ON (scu.id_session = sc.id_session AND scu.course_code = sc.course_code)
$join_access_url
WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url
ORDER BY code";
WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url";
$orderBy = " ORDER BY code ";
if (SessionManager::orderCourseIsEnabled()) {
$orderBy = ' ORDER BY position';
}
$sql .= $orderBy;
$result = Database::query($sql);
@ -2686,7 +2691,7 @@ class UserManager
s.id_coach = $user_id
)
$where_access_url
ORDER BY code";
$orderBy";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {

Loading…
Cancel
Save