Should implement feature BT#4871 in order to move users from one session to another

skala
Julio Montoya 13 years ago
parent 8f52ef6d9e
commit 8a2be47639
  1. 104
      main/admin/add_users_to_session.php
  2. 69
      main/admin/change_user_session.php
  3. 170
      main/admin/resume_session.php
  4. 4
      main/admin/session_course_user.php
  5. 129
      main/admin/session_course_user_list.php
  6. 2
      main/admin/user_move_stats.php
  7. 7
      main/inc/lib/course.lib.php
  8. 293
      main/inc/lib/sessionmanager.lib.php
  9. 49
      main/inc/lib/usermanager.lib.php
  10. 5
      main/inc/lib/userportal.lib.php
  11. 2
      user_portal.php

@ -30,8 +30,6 @@ $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('Sessi
$interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$id_session,"name" => get_lang('SessionOverview'));
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$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);
@ -44,9 +42,9 @@ if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
$add_type = Security::remove_XSS($_REQUEST['add_type']);
}
//checking for extra field with filter on
//Checking for extra field with filter on
$extra_field_list= UserManager::get_extra_fields();
$extra_field_list = UserManager::get_extra_fields();
$new_field_list = array();
if (is_array($extra_field_list)) {
foreach ($extra_field_list as $extra_field) {
@ -181,11 +179,11 @@ function search_users($needle, $type) {
return $xajax_response;
}
$xajax -> processRequests();
$xajax->processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
<script>
function add_user_to_session (code, content) {
document.getElementById("user_to_add").value = "";
document.getElementById("ajax_list_users_single").innerHTML = "";
@ -212,9 +210,9 @@ function remove_item(origin) {
}
function validate_filter() {
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
}
function checked_in_no_session(checked) {
@ -235,17 +233,17 @@ function change_select(val) {
$form_sent=0;
$errorMsg=$firstLetterUser=$firstLetterSession='';
$UserList=$SessionList=array();
$sessions=array();
$noPHP_SELF=true;
$sessions = array();
$noPHP_SELF = true;
if($_POST['form_sent']) {
if ($_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$firstLetterUser = $_POST['firstLetterUser'];
$firstLetterSession = $_POST['firstLetterSession'];
$UserList = $_POST['sessionUsersList'];
if (!is_array($UserList)) {
$UserList=array();
$UserList=array();
}
if ($form_sent == 1) {
@ -271,7 +269,10 @@ if ($ajax_search) {
INNER JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
AND $tbl_session_rel_user.id_session = ".intval($id_session)."
WHERE u.status<>".DRH." AND u.status<>6 $order_clause";
WHERE u.status<>".DRH." AND
u.status<>6 AND
$tbl_session_rel_user.moved_to = 0
$order_clause";
if ($_configuration['multiple_access_urls']) {
$tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@ -283,7 +284,10 @@ if ($ajax_search) {
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
AND $tbl_session_rel_user.id_session = ".intval($id_session)."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE access_url_id = $access_url_id AND u.status<>".DRH." AND u.status<>6
WHERE access_url_id = $access_url_id AND
u.status<>".DRH." AND
u.status<>6 AND
$tbl_session_rel_user.moved_to = 0
$order_clause";
}
}
@ -298,7 +302,7 @@ if ($ajax_search) {
$use_extra_fields = false;
if (is_array($extra_field_list)) {
if (is_array($new_field_list) && count($new_field_list)>0 ) {
$result_list=array();
$result_list = array();
foreach ($new_field_list as $new_field) {
$varname = 'field_'.$new_field['variable'];
if (UserManager::is_extra_field_available($new_field['variable'])) {
@ -345,18 +349,26 @@ if ($ajax_search) {
$sql = "SELECT user_id, lastname, firstname, username, id_session
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
$where_filter AND u.status<>".DRH." AND u.status<>6
ON $tbl_session_rel_user.id_user = u.user_id AND
$tbl_session_rel_user.id_session = '$id_session' AND
$tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
$where_filter AND
u.status<>".DRH." AND
u.status<>6
$order_clause";
} else {
$sql = "SELECT user_id, lastname, firstname, username, id_session
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
WHERE u.status<>".DRH." AND u.status<>6
ON $tbl_session_rel_user.id_user = u.user_id AND
$tbl_session_rel_user.id_session = '$id_session' AND
$tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
WHERE u.status<>".DRH." AND
u.status<>6
$order_clause";
}
if ($_configuration['multiple_access_urls']) {
$tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
@ -364,30 +376,39 @@ if ($ajax_search) {
$sql = "SELECT u.user_id, lastname, firstname, username, id_session
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE access_url_id = $access_url_id $where_filter AND u.status<>".DRH." AND u.status<>6
ON $tbl_session_rel_user.id_user = u.user_id AND
$tbl_session_rel_user.id_session = '$id_session' AND
$tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE access_url_id = $access_url_id $where_filter AND
u.status<>".DRH." AND
u.status<>6
$order_clause";
}
}
$result = Database::query($sql);
$users = Database::store_result($result,'ASSOC');
foreach ($users as $uid => $user) {
if ($user['id_session'] != $id_session) {
$nosessionUsersList[$user['user_id']] = array('fn'=>$user['firstname'],'ln'=>$user['lastname'],'un'=>$user['username']) ;
unset($users[$uid]);
}
}
}
unset($users); //clean to free memory
//filling the correct users in list
$sql="SELECT user_id, lastname, firstname, username, id_session
//Filling the correct users in list
$sql = "SELECT user_id, lastname, firstname, username, id_session
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
WHERE u.status<>".DRH." AND u.status<>6 $order_clause";
ON $tbl_session_rel_user.id_user = u.user_id AND
$tbl_session_rel_user.id_session = '$id_session' AND
$tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
WHERE u.status <> ".DRH." AND
u.status <> 6 AND
$tbl_session_rel_user.moved_to = 0
$order_clause";
if ($_configuration['multiple_access_urls']) {
$tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@ -398,12 +419,16 @@ if ($ajax_search) {
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE access_url_id = $access_url_id AND u.status<>".DRH." AND u.status<>6
WHERE access_url_id = $access_url_id AND
u.status<>".DRH." AND
u.status<>6 AND
$tbl_session_rel_user.moved_to = 0
$order_clause";
}
}
$result=Database::query($sql);
$users=Database::store_result($result,'ASSOC');
$result = Database::query($sql);
$users = Database::store_result($result,'ASSOC');
foreach ($users as $uid => $user) {
if ($user['id_session'] == $id_session) {
$sessionUsersList[$user['user_id']] = $user;
@ -416,6 +441,7 @@ if ($ajax_search) {
unset($users); //clean to free memory
}
if ($add_type == 'multiple') {
$link_add_type_unique = '<a href="'.api_get_self().'?id_session='.$id_session.'&add='.Security::remove_XSS($_GET['add']).'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
$link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
@ -428,6 +454,7 @@ if ($add_type == 'multiple') {
<div class="actions">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>&nbsp;|&nbsp;<?php echo $link_add_group; ?>
</div>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?page=<?php echo Security::remove_XSS($_GET['page']); ?>&id_session=<?php echo $id_session; ?><?php if(!empty($_GET['add'])) echo '&add=true' ; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
<?php echo '<legend>'.$tool_name.' ('.$session_info['name'].') </legend>'; ?>
<?php
@ -562,7 +589,6 @@ unset($sessionUsersList);
} else {
//@todo see that the call to "valide()" doesn't duplicate the onsubmit of the form (necessary to avoid delete on "enter" key pressed)
echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('SubscribeUsersToSession').'</button>';
}
?>
</td>
@ -570,11 +596,10 @@ unset($sessionUsersList);
</table>
</form>
<script type="text/javascript">
<script>
<!--
function moveItem(origin , destination){
for(var i = 0 ; i<origin.options.length ; i++) {
for (var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
origin.options[i]=null;
@ -587,7 +612,6 @@ function moveItem(origin , destination){
}
function sortOptions(options) {
newOptions = new Array();
for (i = 0 ; i<options.length ; i++)
newOptions[i] = options[i];
@ -618,9 +642,7 @@ function valide(){
function loadUsersInSelect(select){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
@ -633,7 +655,6 @@ function loadUsersInSelect(select){
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
nosessionUsers = makepost(document.getElementById('origin_users'));
sessionUsers = makepost(document.getElementById('destination_users'));
nosessionClasses = makepost(document.getElementById('origin_classes'));
@ -648,8 +669,7 @@ function loadUsersInSelect(select){
}
}
function makepost(select){
function makepost(select) {
var options = select.options;
var ret = "";
for (i = 0 ; i<options.length ; i++)

@ -0,0 +1,69 @@
<?php
/* For licensing terms, see /license.txt */
$language_file = 'admin';
$cidReset = true;
require_once '../inc/global.inc.php';
$user_id = intval($_REQUEST['user_id']);
$session_id = intval($_REQUEST['id_session']);
if (empty($user_id) && empty($session_id)) {
api_not_allowed(true);
}
SessionManager::protect_session_edit($session_id);
if (api_is_platform_admin()) {
$sessions = SessionManager::get_sessions_admin();
} else {
$sessions = SessionManager::get_sessions_by_coach(api_get_session_id());
}
$message = null;
$session_to_select = array();
foreach ($sessions as $session) {
if ($session_id != $session['id']) {
$session_to_select[$session['id']] = $session['name'];
}
}
$session_name = api_get_session_name($session_id);
$user_info = api_get_user_info($user_id);
$form = new FormValidator('change_user_session', 'post', api_get_self());
$form->addElement('hidden', 'user_id', $user_id);
$form->addElement('hidden', 'id_session', $session_id);
$form->addElement('header', get_lang('ChangeUserSession'));
$form->addElement('label', get_lang('User'), '<b>'.$user_info['complete_name'].'</b>');
$form->addElement('label', get_lang('CurrentSession'), $session_name);
$form->addElement('select', 'reason_id', get_lang('Action'), SessionManager::get_session_change_user_reasons());
$form->addElement('select', 'new_session_id', get_lang('SessionDestination'), $session_to_select);
$form->addRule('new_session_id', get_lang('Required'), 'required');
$form->addElement('button', 'submit', get_lang('Change'));
$content = $form->return_form();
if ($form->validate()) {
$values = $form->getSubmitValues();
$result = SessionManager::change_user_session($values['user_id'], $values['id_session'], $values['new_session_id'], $values['reason_id']);
if ($result) {
$message = Display::return_message(get_lang('UserSessionWasChanged'));
}
header('Location: resume_session.php?id_session='.$values['id_session']);
exit;
}
$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='.$session_id,'name' => get_lang('SessionOverview'));
$interbreadcrumb[] = array('url' => '#','name' => get_lang('ChangeUserSession'));
$tpl = new Template();
$tpl->assign('message', $message);
$tpl->assign('content', $content);
$tpl->display_one_col_template();

@ -23,42 +23,18 @@ $tool_name = get_lang('SessionOverview');
$interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
$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);
$sql = 'SELECT name, nbr_courses, nbr_users, nbr_classes, DATE_FORMAT(date_start,"%d-%m-%Y") as date_start, DATE_FORMAT(date_end,"%d-%m-%Y") as date_end, lastname, firstname, username, session_admin_id, nb_days_access_before_beginning, nb_days_access_after_end, session_category_id, visibility
FROM '.$tbl_session.' LEFT JOIN '.$tbl_user.' ON id_coach = user_id
WHERE '.$tbl_session.'.id='.$id_session;
$rs = Database::query($sql);
$session = Database::store_result($rs);
$session = $session[0];
$sql = 'SELECT name FROM '.$tbl_session_category.' WHERE id = "'.intval($session['session_category_id']).'"';
$rs = Database::query($sql);
$session_category = '';
if (Database::num_rows($rs)>0) {
$rows_session_category = Database::store_result($rs);
$rows_session_category = $rows_session_category[0];
$session_category = $rows_session_category['name'];
$session = SessionManager::get_session_info($id_session);
$session_cat_info = SessionManager::get_session_category($session['session_category_id']);
$session_category = null;
if (!empty($session_cat_info)) {
$session_category = $session_cat_info['name'];
}
$action = $_GET['action'];
$url_id = api_get_current_access_url_id();
switch($action) {
switch ($action) {
case 'add_user_to_url':
$user_id = $_REQUEST['user_id'];
$result = UrlManager::add_user_to_url($user_id, $url_id);
@ -68,39 +44,11 @@ switch($action) {
}
break;
case 'delete':
$idChecked = $_GET['idChecked'];
if(is_array($idChecked)) {
$my_temp = array();
foreach ($idChecked as $id){
$my_temp[]= Database::escape_string($id);// forcing the escape_string
}
$idChecked = $my_temp;
$idChecked="'".implode("','",$idChecked)."'";
Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND course_code IN($idChecked)");
$nbr_affected_rows=Database::affected_rows();
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code IN($idChecked)");
Database::query("UPDATE $tbl_session SET nbr_courses=nbr_courses-$nbr_affected_rows WHERE id='$id_session'");
}
if(!empty($_GET['class'])){
Database::query("DELETE FROM $tbl_session_rel_class WHERE session_id='$id_session' AND class_id=".Database::escape_string($_GET['class']));
$nbr_affected_rows=Database::affected_rows();
Database::query("UPDATE $tbl_session SET nbr_classes=nbr_classes-$nbr_affected_rows WHERE id='$id_session'");
if (isset($_GET['course_code_to_delete'])) {
SessionManager::delete_course_in_session($id_session, $_GET['course_code_to_delete']);
}
if (!empty($_GET['user'])) {
Database::query("DELETE FROM $tbl_session_rel_user WHERE relation_type<>".SESSION_RELATION_TYPE_RRHH." AND id_session='$id_session' AND id_user=".intval($_GET['user']));
$nbr_affected_rows=Database::affected_rows();
Database::query("UPDATE $tbl_session SET nbr_users=nbr_users-$nbr_affected_rows WHERE id='$id_session'");
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND id_user=".intval($_GET['user']));
$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'");
SessionManager::unsubscribe_user_from_session($id_session, $_GET['user']);
}
break;
}
@ -183,7 +131,7 @@ echo Display::page_subheader(get_lang('GeneralProperties').$url);
<?php
$multiple_url_is_on = api_get_multiple_access_url();
$multiple_url_is_on = api_is_multiple_url_enabled();
if ($multiple_url_is_on) {
echo '<tr><td>';
@ -220,60 +168,26 @@ if ($session['nbr_courses'] == 0){
echo '<tr>
<td colspan="4">'.get_lang('NoCoursesForThisSession').'</td>
</tr>';
} else {
// select the courses
$sql = "SELECT code,title,visual_code, nbr_users
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);
} else {
$courses = SessionManager::get_course_list_by_session_id($id_session);
foreach ($courses as $course) {
//select the number of users
$sql = " SELECT count(*) FROM $tbl_session_rel_user sru, $tbl_session_rel_course_rel_user srcru
WHERE srcru.id_user = sru.id_user AND srcru.id_session = sru.id_session AND srcru.course_code = '".Database::escape_string($course['code'])."'
AND sru.relation_type<>".SESSION_RELATION_TYPE_RRHH." AND srcru.id_session = '".intval($id_session)."'";
$rs = Database::query($sql);
$course['nbr_users'] = Database::result($rs,0,0);
// Get coachs of the courses in session
$sql = "SELECT user.lastname,user.firstname,user.username FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
WHERE session_rcru.id_user = user.user_id AND session_rcru.id_session = '".intval($id_session)."' AND session_rcru.course_code ='".Database::escape_string($course['code'])."' AND session_rcru.status=2";
$rs = Database::query($sql);
$coachs = array();
if (Database::num_rows($rs) > 0) {
while($info_coach = Database::fetch_array($rs)) {
$coachs[] = api_get_person_name($info_coach['firstname'], $info_coach['lastname']).' ('.$info_coach['username'].')';
}
} else {
$coach = get_lang('None');
}
if (count($coachs) > 0) {
$coach = implode('<br />',$coachs);
} else {
$coach = get_lang('None');
}
$count_users = SessionManager::get_count_users_in_course_session($course['code'], $id_session);
$coaches = SessionManager::get_session_course_coaches_to_string($course['code'], $id_session);
$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 '
<tr>
<td>'.Display::url($course['title'].' ('.$course['visual_code'].')', api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$id_session),'</td>
<td>'.$coach.'</td>
<td>'.$course['nbr_users'].'</td>
<td>'.$coaches.'</td>
<td>'.$count_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>
<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>
<a href="'.api_get_self().'?id_session='.$id_session.'&action=delete&course_code_to_delete='.$course['code'].'" onclick="javascript:if(!confirm(\''.get_lang('ConfirmYourChoice').'\')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>
</td>
</tr>';
}
@ -297,19 +211,28 @@ echo Display::page_subheader(get_lang('UserList').$url);
<th>
<?php echo get_lang('User'); ?>
</th>
<th>
<?php echo get_lang('Information'); ?>
</th>
<th>
<?php echo get_lang('MovedAt'); ?>
</th>
<th>
<?php echo get_lang('Destination'); ?>
</th>
<th>
<?php echo get_lang('Actions'); ?>
</th>
</tr>
<?php
if ($session['nbr_users']==0) {
if ($session['nbr_users'] == 0) {
echo '<tr>
<td colspan="2">'.get_lang('NoUsersForThisSession').'</td>
</tr>';
} else {
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
/*$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
*
if ($multiple_url_is_on) {
$sql = "SELECT u.user_id, lastname, firstname, username, access_url_id
FROM $tbl_user u
@ -327,13 +250,33 @@ if ($session['nbr_users']==0) {
}
$result = Database::query($sql);
$users = Database::store_result($result);
$users = Database::store_result($result);*/
$orig_param = '&origin=resume_session&id_session='.$id_session; // change breadcrumb in destination page
foreach ($users as $user){
$users = SessionManager::get_users_by_session($id_session, 0);
$reasons = SessionManager::get_session_change_user_reasons();
if (!empty($users))
foreach ($users as $user) {
$user_link = '';
if (!empty($user['user_id'])) {
$user_link = '<a href="'.api_get_path(WEB_CODE_PATH).'admin/user_information.php?user_id='.intval($user['user_id']).'">'.api_htmlentities(api_get_person_name($user['firstname'], $user['lastname']),ENT_QUOTES,$charset).' ('.$user['username'].')</a>';
}
$information = null;
$origin_destination = null;
$row_class = null;
$moved_date = '-';
if (isset($user['moved_to']) && !empty($user['moved_to'])) {
$information = $reasons[$user['moved_status']];
$session_info = SessionManager::fetch($user['moved_to']);
$moved_date = isset($user['moved_at']) && $user['moved_at'] != '0000-00-00 00:00:00' ? api_get_local_time($user['moved_at']) : '-';
$url = api_get_path(WEB_CODE_PATH).'admin/resume_session.php?id_session='.$session_info['id'];
$origin_destination = Display::url($session_info['name'], $url);
$row_class = 'row_odd';
}
$link_to_add_user_in_url = '';
@ -344,13 +287,17 @@ if ($session['nbr_users']==0) {
$link_to_add_user_in_url = '<a href="resume_session.php?action=add_user_to_url&id_session='.$id_session.'&user_id='.$user['user_id'].'">'.$add.'</a>';
}
}
echo '<tr>
<td width="90%">
echo '<tr class="'.$row_class.'">
<td width="50%">
'.$user_link.'
</td>
<td>
<td>'.$information.'</td>
<td>'.$moved_date.'</td>
<td>'.$origin_destination.'</td>
<td>
<a href="../mySpace/myStudents.php?student='.$user['user_id'].''.$orig_param.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>&nbsp;
<a href="session_course_user.php?id_user='.$user['user_id'].'&id_session='.$id_session.'">'.Display::return_icon('course.gif', get_lang('BlockCoursesForThisUser')).'</a>&nbsp;
<a href="change_user_session.php?user_id='.$user['user_id'].'&id_session='.$id_session.'">'.Display::return_icon('user.png', get_lang('ChangeUserSession')).'</a>&nbsp;
<a href="'.api_get_self().'?id_session='.$id_session.'&action=delete&user='.$user['user_id'].'" onclick="javascript:if(!confirm(\''.get_lang('ConfirmYourChoice').'\')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>
'.$link_to_add_user_in_url.'
</td>
@ -360,5 +307,4 @@ if ($session['nbr_users']==0) {
?>
</table>
<?php
// footer
Display :: display_footer();

@ -93,7 +93,8 @@ if ($_POST['formSent']) {
}
}
}
foreach($existingCourses as $existingCourse) {
foreach ($existingCourses as $existingCourse) {
//$sql_insert_rel_course= "INSERT INTO $tbl_session_rel_course(id_session,course_code, id_coach) VALUES('$id_session','$enreg_course','$id_coach')";
if(!in_array($existingCourse['code'], $CourseList)){
$existingCourse = Database::escape_string($existingCourse['code']);
@ -121,6 +122,7 @@ if (!empty($_GET['msg'])) {
// the form header
$session_info = SessionManager::fetch($id_session);
$user_info = api_get_user_info($id_user);
echo '<legend>'.$tool_name.': '.$session_info['name'].' - '.$user_info['complete_name'].'</legend>';
$nosessionCourses = $sessionCourses = array();

@ -11,21 +11,20 @@ $cidReset = true;
require_once '../inc/global.inc.php';
$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']);
SessionManager::protect_session_edit($id_session);
if (empty($id_session )) {
api_not_allowed();
if (empty($id_session)) {
api_not_allowed(true);
}
$course_info = api_get_course_info($_GET['course_code']);
if (empty($course_info)) {
api_not_allowed(true);
}
$course_code = Database::escape_string(trim($_GET['course_code']));
$course_code = $course_info['code'];
$page = intval($_GET['page']);
$action = $_REQUEST['action'];
$default_sort = api_sort_by_first_name() ? 'firstname':'lastname';
@ -42,32 +41,19 @@ if (is_array($idChecked)) {
$idChecked = $my_temp;
}
$sql = "SELECT s.name, c.title FROM $tbl_session_rel_course src
INNER JOIN $tbl_session s ON s.id = src.id_session
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);
$session_info = SessionManager::fetch($id_session);
$courses = SessionManager::get_course_list_by_session_id($id_session);
if (!list($session_name,$course_title)=Database::fetch_row($result)) {
if (!isset($courses[$course_info['real_id']])) {
header('Location: session_course_list.php?id_session='.$id_session);
exit();
}
switch($action) {
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."'");
}
SessionManager::unsubscribe_user_from_course_session($id_session, $idChecked, $course_code);
header('Location: '.api_get_self().'?id_session='.$id_session.'&course_code='.urlencode($course_code).'&sort='.$sort);
exit();
exit;
break;
case 'add':
SessionManager::subscribe_users_to_session_course($idChecked, $id_session, $course_code);
@ -81,29 +67,30 @@ $limit = 20;
$from = $page * $limit;
$is_western_name_order = api_is_western_name_order();
//scru.status<>2 scru.course_code='".$course_code."'
$Users = SessionManager::get_users_in_course_session($course_code, $id_session, $sort, $direction, $from, $limit);
/*
$sql = "SELECT DISTINCT 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'
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 $direction LIMIT $from,".($limit+1);
*/
if ($direction == 'desc') {
$direction = 'asc';
} else {
$direction = 'desc';
}
$result = Database::query($sql);
$Users = Database::store_result($result);
$nbr_results = sizeof($Users);
$tool_name = get_lang('Session').': '.$session_name.' - '.get_lang('Course').': '.$course_title;
$tool_name = get_lang('Session').': '.$session_info['name'].' - '.get_lang('Course').': '.$course_info['title'];
$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')." &quot;".api_htmlentities($session_name,ENT_QUOTES,$charset)."&quot;");
Display::display_header($tool_name);
@ -149,38 +136,38 @@ if($nbr_results > $limit) {
<?php
$i=0;
foreach ($Users as $key=>$enreg) {
if ($key == $limit) {
break;
}
?>
<tr class="<?php echo $i?'row_odd':'row_even'; ?>">
<td><input type="checkbox" name="idChecked[]" value="<?php echo $enreg['user_id']; ?>"></td>
<?php if ($is_western_name_order) { ?>
<td><?php echo api_htmlentities($enreg['firstname'],ENT_QUOTES,$charset); ?></td>
<td><?php echo api_htmlentities($enreg['lastname'],ENT_QUOTES,$charset); ?></td>
<?php } else { ?>
<td><?php echo api_htmlentities($enreg['lastname'],ENT_QUOTES,$charset); ?></td>
<td><?php echo api_htmlentities($enreg['firstname'],ENT_QUOTES,$charset); ?></td>
<?php } ?>
<td><?php echo api_htmlentities($enreg['username'],ENT_QUOTES,$charset); ?></td>
<td>
<?php if ($enreg['is_subscribed']) { ?>
<a href="<?php echo api_get_self(); ?>?id_session=<?php echo $id_session; ?>&course_code=<?php echo urlencode($course_code); ?>&sort=<?php echo $sort; ?>&action=delete&idChecked[]=<?php echo $enreg['user_id']; ?>" onclick="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;">
<?php Display::display_icon('delete.png', get_lang('Delete')); ?>
</a>
<?php } else { ?>
<a href="<?php echo api_get_self(); ?>?id_session=<?php echo $id_session; ?>&course_code=<?php echo urlencode($course_code); ?>&sort=<?php echo $sort; ?>&action=add&idChecked[]=<?php echo $enreg['user_id']; ?>" onclick="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;">
<?php Display::display_icon('add.png', get_lang('Add'), array(), ICON_SIZE_SMALL); ?>
</a>
<?php } ?>
</td>
</tr>
<?php
$i=$i ? 0 : 1;
if (!empty($Users)) {
foreach ($Users as $key=>$enreg) {
if ($key == $limit) {
break;
}
?>
<tr class="<?php echo $i?'row_odd':'row_even'; ?>">
<td><input type="checkbox" name="idChecked[]" value="<?php echo $enreg['user_id']; ?>"></td>
<?php if ($is_western_name_order) { ?>
<td><?php echo api_htmlentities($enreg['firstname'],ENT_QUOTES,$charset); ?></td>
<td><?php echo api_htmlentities($enreg['lastname'],ENT_QUOTES,$charset); ?></td>
<?php } else { ?>
<td><?php echo api_htmlentities($enreg['lastname'],ENT_QUOTES,$charset); ?></td>
<td><?php echo api_htmlentities($enreg['firstname'],ENT_QUOTES,$charset); ?></td>
<?php } ?>
<td><?php echo api_htmlentities($enreg['username'],ENT_QUOTES,$charset); ?></td>
<td>
<?php if ($enreg['is_subscribed']) { ?>
<a href="<?php echo api_get_self(); ?>?id_session=<?php echo $id_session; ?>&course_code=<?php echo urlencode($course_code); ?>&sort=<?php echo $sort; ?>&action=delete&idChecked[]=<?php echo $enreg['user_id']; ?>" onclick="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;">
<?php Display::display_icon('delete.png', get_lang('Delete')); ?>
</a>
<?php } else { ?>
<a href="<?php echo api_get_self(); ?>?id_session=<?php echo $id_session; ?>&course_code=<?php echo urlencode($course_code); ?>&sort=<?php echo $sort; ?>&action=add&idChecked[]=<?php echo $enreg['user_id']; ?>" onclick="javascript:if(!confirm('<?php echo get_lang('ConfirmYourChoice'); ?>')) return false;">
<?php Display::display_icon('add.png', get_lang('Add'), array(), ICON_SIZE_SMALL); ?>
</a>
<?php } ?>
</td>
</tr>
<?php
$i=$i ? 0 : 1;
}
}
unset($Users);
?>
@ -216,4 +203,4 @@ unset($Users);
<button class="save" type="submit"> <?php echo get_lang('Ok'); ?></button>
</form>
<?php
Display::display_footer();
Display::display_footer();

@ -105,7 +105,7 @@ if (isset($_REQUEST['load_ajax'])) {
if (empty($result) || !in_array($user_id, array_keys($result))) {
if ($debug) echo 'User added to the session';
//Registering user to the new session
SessionManager::suscribe_users_to_session($new_session_id,array($user_id),false);
SessionManager::suscribe_users_to_session($new_session_id, array($user_id), false);
}
//Begin with the import process

@ -714,9 +714,10 @@ class CourseManager {
}
} else {
$students_in_course = SessionManager::get_users_by_session($session_id, '0');
foreach($students_in_course as $user_item) {
$students_in_courses[$user_item['user_id']] = $user_item['user_id'];
foreach ($students_in_course as $user_item) {
if ($user_item['moved_to'] == 0) {
$students_in_courses[$user_item['user_id']] = $user_item['user_id'];
}
}
}
}

@ -11,10 +11,35 @@
* Code
*/
class SessionManager {
private function __construct() {
class SessionManager {
//See BT#4871
CONST SESSION_CHANGE_USER_REASON_SCHEDULE = 1;
CONST SESSION_CHANGE_USER_REASON_CLASSROOM = 2;
CONST SESSION_CHANGE_USER_REASON_LOCATION = 3;
CONST SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION = 4;
private function __construct() {
}
public static function get_session_info($session_id) {
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$sql = 'SELECT name, nbr_courses, nbr_users, nbr_classes,
DATE_FORMAT(date_start,"%d-%m-%Y") as date_start,
DATE_FORMAT(date_end,"%d-%m-%Y") as date_end, lastname, firstname, username, session_admin_id,
nb_days_access_before_beginning,
nb_days_access_after_end,
session_category_id,
visibility
FROM '.$tbl_session.' LEFT JOIN '.$tbl_user.' ON id_coach = user_id
WHERE '.$tbl_session.'.id='.$session_id;
$rs = Database::query($sql);
$session = Database::store_result($rs);
return $session[0];
}
/**
* Fetches a session from the database
* @param int Session ID
@ -218,12 +243,12 @@ class SessionManager {
* Gets the admin session list callback of the admin/session_list.php page
* @param array order and limit keys
*/
public static function get_sessions_admin($options) {
public static function get_sessions_admin($options = array()) {
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$where = 'WHERE 1=1 ';
$where = 'WHERE 1 = 1 ';
$user_id = api_get_user_id();
if (api_is_session_admin() && api_get_setting('allow_session_admins_to_manage_all_sessions') == 'false') {
@ -273,9 +298,11 @@ class SessionManager {
if (!empty($options['where'])) {
$query .= ' WHERE '.$options['where'];
}
$query .= " ORDER BY ".$options['order']." LIMIT ".$options['limit'];
if (!empty($options['order']) && !empty($options['limit'])) {
$query .= " ORDER BY ".$options['order']." LIMIT ".$options['limit'];
}
$result = Database::query($query);
$formatted_sessions = array();
if (Database::num_rows($result)) {
@ -724,13 +751,15 @@ class SessionManager {
/**
* Unsubscribe user from session
*
* @param int Session id
* @param int User id
* @return bool True in case of success, false in case of error
* @param int session id
* @param int user id
* @param int reason of unsubscription see function get_session_change_user_reasons()
* @return bool true in case of success, false in case of error
*/
public static function unsubscribe_user_from_session($session_id, $user_id) {
$session_id = (int)$session_id;
$user_id = (int)$user_id;
$session_id = intval($session_id);
$user_id = intval($user_id);
$reason_id = intval($reason_id);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -742,26 +771,52 @@ class SessionManager {
$return = Database::affected_rows();
// Update number of users
$update_sql = "UPDATE $tbl_session SET nbr_users= nbr_users - $return WHERE id='$session_id' ";
$update_sql = "UPDATE $tbl_session SET nbr_users = nbr_users - $return WHERE id='$session_id' ";
Database::query($update_sql);
// Get the list of courses related to this session
$course_list = SessionManager::get_course_list_by_session_id($session_id);
if(!empty($course_list)) {
if (!empty($course_list)) {
foreach($course_list as $course) {
$course_code = $course['code'];
// Delete user from course
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'");
if(Database::affected_rows()) {
// Update number of users in this relation
Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users - 1 WHERE id_session='$session_id' AND course_code='$course_code'");
}
}
}
}
return true;
}
/**
*
* @param int $session_id
* @param array user id list
* @param string $course_code
*/
static function unsubscribe_user_from_course_session($session_id, $user_list, $course_code) {
$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 (is_array($user_list) && count($user_list)>0 ) {
array_map('intval', $user_list);
$user_list = implode(',', $user_list);
}
$session_id = intval($session_id);
$course_code = Database::escape_string($course_code);
if (!empty($user_list)) {
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='".$course_code."' AND id_user IN($user_list)");
$nbr_affected_rows = Database::affected_rows();
Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users-$nbr_affected_rows WHERE id_session='$session_id' AND course_code='".$course_code."'");
}
}
/** Subscribes courses to the given session and optionally (default) unsubscribes previous users
* @author Carlos Vargas from existing code
@ -1519,19 +1574,36 @@ class SessionManager {
if (empty($id)) {
return array();
}
$id = intval($id);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$sql = "SELECT $tbl_user.user_id, lastname, firstname, username
FROM $tbl_user INNER JOIN $tbl_session_rel_user
ON $tbl_user.user_id = $tbl_session_rel_user.id_user
AND $tbl_session_rel_user.id_session = $id";
$id = intval($id);
if (api_is_multiple_url_enabled()) {
$url_id = api_get_current_access_url_id();
$sql = "SELECT u.user_id, lastname, firstname, username, access_url_id, moved_to, moved_status, moved_at
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user su
ON u.user_id = su.id_user AND su.relation_type<>".SESSION_RELATION_TYPE_RRHH."
LEFT OUTER JOIN $tbl_session_rel_user uu ON (uu.user_id = u.user_id)
WHERE su.id_session = $id AND (access_url_id = $url_id OR access_url_id is null )";
} else {
$sql = "SELECT u.user_id, lastname, firstname, username, moved_to, moved_status, moved_at
FROM $tbl_user u INNER JOIN $tbl_session_rel_user su
ON u.user_id = su.id_user AND
su.id_session = $id
";
}
if (isset($with_status) && $with_status != '') {
$with_status = intval($with_status);
$sql .= " WHERE relation_type = $with_status ";
}
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
$sql .= $order_clause;
$result = Database::query($sql);
while ($row = Database::fetch_array($result,'ASSOC')) {
@ -1790,4 +1862,179 @@ class SessionManager {
$result = Database::query($sql);
return Database::store_result($result);
}
/* Add those changes in a table */
static function get_session_change_user_reasons() {
return array (
self::SESSION_CHANGE_USER_REASON_SCHEDULE => get_lang('ScheduleChange'),
self::SESSION_CHANGE_USER_REASON_CLASSROOM => get_lang('ClassRoomChange'),
self::SESSION_CHANGE_USER_REASON_LOCATION => get_lang('LocationChange'),
self::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION => get_lang('EnrollmentAnnulation'),
);
}
static function get_session_change_user_reason($id) {
$reasons = self::get_session_change_user_reasons();
return isset($reasons[$id]) ? $reasons[$id] : null;
}
static function change_user_session($user_id, $old_session_id, $new_session_id, $reason_id) {
if (!empty($user_id) && !empty($old_session_id) && !empty($new_session_id)) {
$user_id = intval($user_id);
$old_session_id = intval($old_session_id);
$new_session_id = intval($new_session_id);
$reason_id = intval($reason_id);
//self::unsubscribe_user_from_session($old_session_id, $user_id, $reason_id);
//$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$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 = Database::get_main_table(TABLE_MAIN_SESSION);
// Update number of users
$update_sql = "UPDATE $tbl_session SET nbr_users = nbr_users - 1 WHERE id = '$old_session_id' ";
Database::query($update_sql);
// Get the list of courses related to this session
$course_list = SessionManager::get_course_list_by_session_id($old_session_id);
if (!empty($course_list)) {
foreach ($course_list as $course) {
$course_code = $course['code'];
// Delete user from course
//Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'");
//if (Database::affected_rows()) {
// Update number of users in this relation
$sql = "UPDATE $tbl_session_rel_course SET nbr_users = nbr_users - 1 WHERE id_session = '$old_session_id' AND course_code='$course_code'";
Database::query($sql);
//}
}
}
//Deal with reasons
switch ($reason_id) {
case self::SESSION_CHANGE_USER_REASON_SCHEDULE:
case self::SESSION_CHANGE_USER_REASON_CLASSROOM:
case self::SESSION_CHANGE_USER_REASON_LOCATION:
break;
case self::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION:
UserManager::deactivate_users(array($user_id));
break;
}
//Adding to the new session
self::suscribe_users_to_session($new_session_id, array($user_id), null, false);
$now = api_get_utc_datetime();
$sql = "UPDATE $tbl_session_rel_user SET moved_to = '$new_session_id', moved_at = '$now'
WHERE id_session = '$old_session_id' AND id_user ='$user_id'";
Database::query($sql);
$sql = "UPDATE $tbl_session_rel_user SET moved_status = $reason_id
WHERE id_session = '$old_session_id' AND id_user ='$user_id'";
Database::query($sql);
return true;
}
return;
}
static function get_users_in_course_session($course_code, $id_session, $sort, $direction, $from = null, $limit = null) {
$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_user = Database::get_main_table(TABLE_MAIN_USER);
$course_code = Database::escape_string($course_code);
$id_session = Database::escape_string($id_session);
$from = intval($from);
$limit = intval($limit);
$is_western_name_order = api_is_western_name_order();
//Select the number of users
$sql = " SELECT DISTINCT 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 sru INNER JOIN $tbl_user u ON (u.user_id=sru.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 sru.id_session = '$id_session' AND
sru.moved_to = 0 AND
sru.relation_type<>".SESSION_RELATION_TYPE_RRHH;
$sql .= " ORDER BY $sort $direction ";
if (!empty($from) && !empty($limit)) {
$sql .= " LIMIT $from, $limit";
}
$result = Database::query($sql);
if (Database::num_rows($result)) {
return Database::store_result($result);
}
return false;
}
static function get_count_users_in_course_session($course_code, $id_session) {
$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);
//Select the number of users
$sql = " SELECT count(*) FROM $tbl_session_rel_user sru, $tbl_session_rel_course_rel_user srcru
WHERE srcru.id_user = sru.id_user AND
srcru.id_session = sru.id_session AND
srcru.course_code = '".Database::escape_string($course_code)."' AND
srcru.id_session = '".intval($id_session)."' AND
sru.moved_to = 0 AND
sru.relation_type<>".SESSION_RELATION_TYPE_RRHH;
$result = Database::query($sql);
if (Database::num_rows($result)) {
return Database::result($result,0,0);
}
return 0;
}
static function get_session_course_coaches($course_code, $session_id) {
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
// Get coachs of the courses in session
$sql = "SELECT user.user_id FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
WHERE session_rcru.id_user = user.user_id AND
session_rcru.id_session = '".intval($session_id)."' AND
session_rcru.course_code ='".Database::escape_string($course_code)."' AND
session_rcru.status=2";
$result = Database::query($sql);
return Database::store_result($result);
}
static function get_session_course_coaches_to_string($course_code, $session_id) {
$coaches = self::get_session_course_coaches($course_code, $session_id);
if (!empty($coaches)) {
$coach_list = array();
foreach ($coaches as $coach_info) {
$user_info = api_get_user_info($coach_info['user_id']);
$coach_list[] = $user_info['complete_name'];
}
if (!empty($coach_list)) {
return implode(', ', $coach_list);
}
}
return get_lang('None');
}
static function delete_course_in_session($id_session, $course_code) {
$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);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$id_session = intval($id_session);
$course_code = Database::escape_string($course_code);
if (!empty($id_session) && !empty($course_code)) {
Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND course_code IN($course_code)");
$nbr_affected_rows=Database::affected_rows();
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code IN($course_code)");
Database::query("UPDATE $tbl_session SET nbr_courses=nbr_courses-$nbr_affected_rows WHERE id='$id_session'");
}
}
}

@ -390,14 +390,11 @@ class UserManager {
* @return boolean
* @author Laurent Opprecht
*/
static function deactivate_users($ids = array())
{
static function deactivate_users($ids = array()) {
if (empty($ids)) {
return false;
}
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$ids = is_array($ids) ? $ids : func_get_args();
$ids = array_map('intval', $ids);
$ids = implode(',', $ids);
@ -1929,36 +1926,41 @@ class UserManager {
public static function get_sessions_by_category($user_id, $is_time_over = false) {
// Database Table Definitions
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_category = Database :: get_main_table(TABLE_MAIN_SESSION_CATEGORY);
if ($user_id != strval(intval($user_id))) return array();
$categories = array();
$now = api_get_utc_datetime();
// Get the list of sessions per user
$condition_date_end = "";
if ($is_time_over) {
$condition_date_end = " AND (session.date_end < CURDATE() AND session.date_end != '0000-00-00') ";
$condition_date_end = " AND ( (session.date_end < '$now' AND session.date_end != '0000-00-00') OR moved_to <> 0) ";
} else {
$condition_date_end = " AND (session.date_end >= CURDATE() OR session.date_end = '0000-00-00') ";
$condition_date_end = " AND (session.date_end >= '$now' OR session.date_end = '0000-00-00') AND moved_to = 0 ";
}
//ORDER BY session_category_id, date_start, date_end
$sql = "SELECT DISTINCT session.id, session.name, session.date_start, session.date_end, session_category_id,
session_category.name as session_category_name,
session_category.date_start session_category_date_start,
session_category.date_end session_category_date_end,
nb_days_access_before_beginning
nb_days_access_before_beginning,
moved_to,
moved_status
FROM $tbl_session as session LEFT JOIN $tbl_session_category session_category ON (session_category_id = session_category.id)
INNER JOIN $tbl_session_course_user as session_rel_course_user ON (session_rel_course_user.id_session = session.id)
WHERE (
session_rel_course_user.id_user = $user_id OR session.id_coach = $user_id
) $condition_date_end
ORDER BY session_category_name, name";
FROM $tbl_session as session LEFT JOIN $tbl_session_category session_category ON (session_category_id = session_category.id)
INNER JOIN $tbl_session_course_user as scu ON (scu.id_session = session.id)
INNER JOIN $tbl_session_user su ON su.id_session = session.id AND su.id_user = scu.id_user
WHERE (
scu.id_user = $user_id OR session.id_coach = $user_id
) $condition_date_end
ORDER BY session_category_name, name";
//var_dump($sql);
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) {
@ -1974,6 +1976,9 @@ class UserManager {
$categories[$row['session_category_id']]['sessions'][$row['id']]['nb_days_access_before_beginning'] = $row['nb_days_access_before_beginning'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['courses'] = UserManager::get_courses_list_by_session($user_id, $row['id']);
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_to'] = $row['moved_to'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_status'] = $row['moved_status'];
}
}
return $categories;
@ -2012,10 +2017,10 @@ class UserManager {
$personal_course_list_sql = "SELECT course.code, course_rel_user.status course_rel_status, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM ".$tbl_course_user." course_rel_user
LEFT JOIN ".$tbl_course." course
ON course.code = course_rel_user.course_code
LEFT JOIN ".$tbl_user_course_category." user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
LEFT JOIN ".$tbl_course." course
ON course.code = course_rel_user.course_code
LEFT JOIN ".$tbl_user_course_category." user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
$join_access_url
WHERE course_rel_user.user_id = '".$user_id."' AND
course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH." $where_access_url

@ -857,7 +857,7 @@ class IndexManager {
*
* */
function return_courses_and_sessions($user_id) {
$session_categories = array();
$session_categories = array();
$load_history = (isset($_GET['history']) && intval($_GET['history']) == 1) ? true : false;
if ($load_history) {
@ -953,7 +953,8 @@ class IndexManager {
}
$params['title'] = $session_link;
$params['subtitle'] = $extra_info;
$params['subtitle'] = $extra_info.SessionManager::get_session_change_user_reason($session['moved_status']);
$params['right_actions'] = '';
if (api_is_platform_admin()) {

@ -156,7 +156,7 @@ $user_id = api_get_user_id();
$courses_and_sessions = $controller->return_courses_and_sessions($user_id);
//Show the chamilo mascot
if (empty($courses_and_sessions)) {
if (empty($courses_and_sessions) && !isset($_GET['history'])) {
$controller->tpl->assign('welcome_to_course_block', $controller->return_welcome_to_course_block());
}

Loading…
Cancel
Save