diff --git a/main/admin/resume_session.php b/main/admin/resume_session.php index 8a9e8670a6..05cd5d59bc 100644 --- a/main/admin/resume_session.php +++ b/main/admin/resume_session.php @@ -259,6 +259,7 @@ if ($session['nbr_courses']==0){ '.$course['nbr_users'].' '.Display::return_icon('course_home.gif', get_lang('Course')).' + '.Display::return_icon('user.png', get_lang('Edit'), '', 22).' '.Display::return_icon('statistics.gif', get_lang('Tracking')).'  '.Display::return_icon('edit.png', get_lang('Edit'), '', 22).' '.Display::return_icon('delete.png', get_lang('Delete')).' diff --git a/main/admin/session_course_edit.php b/main/admin/session_course_edit.php old mode 100755 new mode 100644 index 350c846356..fca493b1e9 --- a/main/admin/session_course_edit.php +++ b/main/admin/session_course_edit.php @@ -33,7 +33,7 @@ $tool_name=$course_info['name']; $interbreadcrumb[]=array('url' => 'index.php',"name" => get_lang('PlatformAdmin')); $interbreadcrumb[]=array('url' => "session_list.php","name" => get_lang("SessionList")); -$interbreadcrumb[]=array('url' => "../admin/resume_session.php?id_session=".Security::remove_XSS($_REQUEST['id_session']),"name" => get_lang('SessionOverview')); +$interbreadcrumb[]=array('url' => "resume_session.php?id_session=".$id_session,"name" => get_lang('SessionOverview')); $interbreadcrumb[]=array('url' => "session_course_list.php?id_session=$id_session","name" =>api_htmlentities($session_name,ENT_QUOTES,$charset)); $result = Database::query("SELECT s.name, c.title FROM $tbl_session_course sc,$tbl_session s,$tbl_course c WHERE sc.id_session=s.id AND sc.course_code=c.code AND sc.id_session='$id_session' AND sc.course_code='".addslashes($course_code)."'"); diff --git a/main/admin/session_course_list.php b/main/admin/session_course_list.php old mode 100755 new mode 100644 index 26c9ce959b..fa2c1696a3 --- a/main/admin/session_course_list.php +++ b/main/admin/session_course_list.php @@ -6,8 +6,9 @@ // name of the language file that needs to be included -$language_file='admin'; -$cidReset=true; +$language_file = 'admin'; +$cidReset = true; + require_once '../inc/global.inc.php'; // setting the section (for the tabs) @@ -21,19 +22,24 @@ $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $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); -$id_session=intval($_GET['id_session']); -$page=intval($_GET['page']); -$action=$_REQUEST['action']; -$sort=in_array($_GET['sort'],array('title','nbr_users'))?$_GET['sort']:'title'; +$id_session = intval($_GET['id_session']); + +if (empty($id_session)) { + api_not_allowed(); +} -$result=Database::query("SELECT name FROM $tbl_session WHERE id='$id_session'"); +$page = intval($_GET['page']); +$action = $_REQUEST['action']; +$sort = in_array($_GET['sort'],array('title','nbr_users'))?$_GET['sort']:'title'; -if(!list($session_name)=Database::fetch_row($result)) { +$result = Database::query("SELECT name FROM $tbl_session WHERE id='$id_session'"); + +if (!list($session_name)=Database::fetch_row($result)) { header('Location: session_list.php'); - exit(); + exit; } -if($action == 'delete') { +if ($action == 'delete') { $idChecked = $_REQUEST['idChecked']; if(is_array($idChecked) && count($idChecked)>0) { $my_temp = array(); @@ -53,16 +59,16 @@ if($action == 'delete') { exit(); } -$limit=20; -$from=$page * $limit; +$limit = 20; +$from = $page * $limit; -$result=Database::query("SELECT code,title,nbr_users FROM $tbl_session_rel_course,$tbl_course WHERE course_code=code AND id_session='$id_session' ORDER BY $sort LIMIT $from,".($limit+1)); +$result=Database::query("SELECT code,title,nbr_users FROM $tbl_session_rel_course, $tbl_course WHERE course_code=code AND id_session='$id_session' ORDER BY $sort LIMIT $from,".($limit+1)); $Courses=Database::store_result($result); -$nbr_results=sizeof($Sessions); $tool_name = api_htmlentities($session_name,ENT_QUOTES,$charset).' : '.get_lang('CourseListInSession'); $interbreadcrumb[]=array('url' => 'index.php',"name" => get_lang('PlatformAdmin')); $interbreadcrumb[]=array('url' => "session_list.php","name" => get_lang('SessionList')); +$interbreadcrumb[]=array('url' => "resume_session.php?id_session=".Security::remove_XSS($_REQUEST['id_session']),"name" => get_lang('SessionOverview')); Display::display_header($tool_name); api_display_tool_title($tool_name); @@ -95,5 +101,4 @@ echo ' '; -Display::display_footer(); -?> \ No newline at end of file +Display::display_footer(); \ No newline at end of file diff --git a/main/admin/session_course_user_list.php b/main/admin/session_course_user_list.php index 79fb7f4304..25c05ea4eb 100644 --- a/main/admin/session_course_user_list.php +++ b/main/admin/session_course_user_list.php @@ -6,23 +6,30 @@ /** * Code */ -$language_file='admin'; -$cidReset=true; +$language_file = array('admin', 'registration'); +$cidReset = true; require_once '../inc/global.inc.php'; api_protect_admin_script(true); -$tbl_user=Database::get_main_table(TABLE_MAIN_USER); -$tbl_course=Database::get_main_table(TABLE_MAIN_COURSE); -$tbl_session=Database::get_main_table(TABLE_MAIN_SESSION); -$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); - -$id_session=intval($_GET['id_session']); -$course_code=trim(stripslashes($_GET['course_code'])); -$page=intval($_GET['page']); -$action=$_REQUEST['action']; -$sort=in_array($_GET['sort'],array('lastname','firstname','username'))?$_GET['sort']:api_sort_by_first_name()?'firstname':'lastname'; -$idChecked = (is_array($_GET['idChecked']) ? $_GET['idChecked'] : (is_array($_POST['idChecked']) ? $_POST['idChecked'] : null)); + +$tbl_user = Database::get_main_table(TABLE_MAIN_USER); +$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); +$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); +$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); +$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); + +$id_session = intval($_GET['id_session']); +if (empty($id_session )) { + api_not_allowed(); +} + +$course_code = Database::escape_string(trim($_GET['course_code'])); +$page = intval($_GET['page']); +$action = $_REQUEST['action']; +$sort = in_array($_GET['sort'],array('lastname','firstname','username'))?$_GET['sort']:api_sort_by_first_name()?'firstname':'lastname'; +$idChecked = (is_array($_GET['idChecked']) ? $_GET['idChecked'] : (is_array($_POST['idChecked']) ? $_POST['idChecked'] : null)); + if (is_array($idChecked)) { $my_temp = array(); foreach ($idChecked as $id){ @@ -36,42 +43,64 @@ $sql = "SELECT s.name, c.title FROM $tbl_session_rel_course src INNER JOIN $tbl_course c ON c.code = src.course_code WHERE src.id_session='$id_session' AND src.course_code='".Database::escape_string($course_code)."' "; -$result=Database::query($sql); -if(!list($session_name,$course_title)=Database::fetch_row($result)) -{ +$result = Database::query($sql); + +if (!list($session_name,$course_title)=Database::fetch_row($result)) { header('Location: session_course_list.php?id_session='.$id_session); exit(); } -if($action == 'delete') { - if(is_array($idChecked) && count($idChecked)>0 ) { - $idChecked=implode(',',$idChecked); - Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='".addslashes($course_code)."' AND id_user IN($idChecked)"); - $nbr_affected_rows=Database::affected_rows(); - Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users-$nbr_affected_rows WHERE id_session='$id_session' AND course_code='".addslashes($course_code)."'"); - } - header('Location: '.api_get_self().'?id_session='.$id_session.'&course_code='.urlencode($course_code).'&sort='.$sort); - exit(); -} -$limit=20; -$from=$page * $limit; + + switch($action) { + case 'delete': + if (is_array($idChecked) && count($idChecked)>0 ) { + array_map('intval', $idChecked); + $idChecked = implode(',',$idChecked); + } + if (!empty($idChecked)) { + Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='".$course_code."' AND id_user IN($idChecked)"); + $nbr_affected_rows = Database::affected_rows(); + Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users-$nbr_affected_rows WHERE id_session='$id_session' AND course_code='".$course_code."'"); + } + header('Location: '.api_get_self().'?id_session='.$id_session.'&course_code='.urlencode($course_code).'&sort='.$sort); + exit(); + break; + case 'add': + SessionManager::subscribe_users_to_session_course($idChecked, $id_session, $course_code); + header('Location: '.api_get_self().'?id_session='.$id_session.'&course_code='.urlencode($course_code).'&sort='.$sort); + exit; + break; + } + + +$limit = 20; +$from = $page * $limit; $is_western_name_order = api_is_western_name_order(); + +//scru.status<>2 scru.course_code='".$course_code."' +$sql = "SELECT u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username, scru.id_user as is_subscribed + FROM $tbl_session_rel_user s INNER JOIN $tbl_user u ON (u.user_id=s.id_user) LEFT JOIN $tbl_session_rel_course_rel_user scru ON (u.user_id=scru.id_user AND scru.course_code = '".$course_code."' ) + WHERE s.id_session='$id_session' + ORDER BY $sort LIMIT $from,".($limit+1); -$result=Database::query("SELECT u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username FROM $tbl_session_rel_course_rel_user scru, $tbl_user u WHERE u.user_id=scru.id_user AND scru.id_session='$id_session' AND scru.status<>2 AND scru.course_code='".addslashes($course_code)."' ORDER BY $sort LIMIT $from,".($limit+1)); -$Users=Database::store_result($result); +$result = Database::query($sql); +$Users = Database::store_result($result); -$nbr_results=sizeof($Users); +$nbr_results = sizeof($Users); -$tool_name = get_lang('ListOfUsersSubscribedToCourse').' "'.api_htmlentities($course_title,ENT_QUOTES,$charset).'" '.get_lang('ForTheSession').' "'.api_htmlentities($session_name,ENT_QUOTES,$charset).'"'; +$tool_name = get_lang('Session').': "'.$session_name.'" - '.get_lang('Course').': "'.$course_title.'"'; -$interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools')); -$interbreadcrumb[]=array("url" => "session_list.php","name" => get_lang('SessionList')); -$interbreadcrumb[]=array("url" => "session_course_list.php?id_session=$id_session","name" => get_lang('ListOfCoursesOfSession')." "".api_htmlentities($session_name,ENT_QUOTES,$charset)."""); +$interbreadcrumb[] = array("url" => "index.php","name" => get_lang('PlatformAdmin')); +$interbreadcrumb[] = array("url" => "session_list.php","name" => get_lang('SessionList')); +$interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$id_session,"name" => get_lang('SessionOverview')); +//$interbreadcrumb[]=array("url" => "session_course_list.php?id_session=$id_session","name" => get_lang('ListOfCoursesOfSession')." "".api_htmlentities($session_name,ENT_QUOTES,$charset)."""); Display::display_header($tool_name); -api_display_tool_title($tool_name); + +//api_display_tool_title($tool_name); ?> +

$limit) { echo get_lang('Next'); } ?> -

@@ -114,60 +142,68 @@ if($nbr_results > $limit) { $enreg) { - if($key == $limit) { +foreach ($Users as $key=>$enreg) { + if ($key == $limit) { break; } -?> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
- - - -| - $limit) { -?> - - + + + + | + $limit) { + ?> + +

diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index 39b943f0c4..4f742f7e4d 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -635,7 +635,9 @@ class SessionManager { } } } - + + //Replace with this new function + // // insert new users into session_rel_course_rel_user and ignore if they already exist foreach ($user_list as $enreg_user) { if(!in_array($enreg_user, $existingUsers)) { @@ -681,6 +683,39 @@ class SessionManager { Database::query($update_sql); } } + + function subscribe_users_to_session_course($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); + + if (empty($user_list) || empty($session_id) || empty($course_code)) { + return false; + } + + $session_id = intval($session_id); + $course_code = Database::escape_string($course_code); + $session_visibility = intval($session_visibility); + + $nbr_users = 0; + foreach ($user_list as $enreg_user) { + //if (!in_array($enreg_user, $existingUsers)) { + $enreg_user = intval($enreg_user); + $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user,visibility) + VALUES ('$session_id','$course_code','$enreg_user','$session_visibility')"; + Database::query($insert_sql); + if (Database::affected_rows()) { + $nbr_users++; + } + //} + } + // count users in this session-course relation + $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND status<>2"; + $rs = Database::query($sql); + list($nbr_users) = Database::fetch_array($rs); + // update the session-course relation to add the users total + $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'"; + Database::query($update_sql); + } /** * Unsubscribe user from session @@ -1564,6 +1599,7 @@ class SessionManager { function suscribe_sessions_to_promotion($promotion_id, $list) { $t = Database::get_main_table(TABLE_MAIN_SESSION); + $params = array(); $params['promotion_id'] = 0; Database::update($t, $params, array('promotion_id = ?'=>$promotion_id));