diff --git a/main/admin/dashboard_add_sessions_to_user.php b/main/admin/dashboard_add_sessions_to_user.php
index 17dead9d41..96e38829be 100644
--- a/main/admin/dashboard_add_sessions_to_user.php
+++ b/main/admin/dashboard_add_sessions_to_user.php
@@ -36,6 +36,7 @@ $interbreadcrumb[] = array('url' => 'user_list.php','name' => get_lang('UserList
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
+$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
// initializing variables
$id_session=intval($_GET['id_session']);
@@ -63,7 +64,7 @@ if (!api_is_platform_admin() && !api_is_session_admin()) {
}
function search_sessions($needle,$type) {
- global $_configuration, $tbl_session, $user_id;
+ global $_configuration, $tbl_session_rel_access_url, $tbl_session, $user_id;
$xajax_response = new XajaxResponse();
$return = '';
@@ -79,8 +80,13 @@ function search_sessions($needle,$type) {
$without_assigned_sessions = " AND s.id NOT IN(".implode(',',$assigned_sessions_id).")";
}
- $sql = "SELECT s.id, s.name FROM $tbl_session s
+ if ($_configuration['multiple_access_urls']) {
+ $sql = " SELECT s.id, s.name FROM $tbl_session s LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id)
+ WHERE s.name LIKE '$needle%' $without_assigned_sessions AND access_url_id = ".api_get_current_access_url_id()."";
+ } else {
+ $sql = "SELECT s.id, s.name FROM $tbl_session s
WHERE s.name LIKE '$needle%' $without_assigned_sessions ";
+ }
$rs = Database::query($sql);
@@ -189,11 +195,16 @@ if (isset($_POST['firstLetterSession'])) {
$needle = "$needle%";
}
-$sql = " SELECT s.id, s.name FROM $tbl_session s
- WHERE s.name LIKE '$needle%' $without_assigned_sessions
- ORDER BY s.name
- ";
-
+if ($_configuration['multiple_access_urls']) {
+ $sql = " SELECT s.id, s.name FROM $tbl_session s LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id)
+ WHERE s.name LIKE '$needle%' $without_assigned_sessions AND access_url_id = ".api_get_current_access_url_id()."
+ ORDER BY s.name";
+} else {
+ $sql = " SELECT s.id, s.name FROM $tbl_session s
+ WHERE s.name LIKE '$needle%' $without_assigned_sessions
+ ORDER BY s.name
+ ";
+}
$result = Database::query($sql);
?>
diff --git a/main/admin/resume_session.php b/main/admin/resume_session.php
index 19302d6454..3f4f780310 100644
--- a/main/admin/resume_session.php
+++ b/main/admin/resume_session.php
@@ -57,11 +57,11 @@ if (Database::num_rows($rs)>0) {
$action = $_GET['action'];
-$url_id = api_get_current_access_url_id();
+$url_id = api_get_current_access_url_id();
switch($action) {
- case 'add_user_to_url':
+ case 'add_user_to_url':
$user_id = $_REQUEST['user_id'];
$result = UrlManager::add_user_to_url($user_id, $url_id);
$user_info = api_get_user_info($user_id);
@@ -121,7 +121,7 @@ echo Display::page_header(Display::return_icon('session.png', get_lang('Session'
';
@@ -2385,18 +2450,18 @@ class Tracking {
| '.get_lang('Course').' |
'.Display::tag('th', get_lang('PublishedExercises'), array('class'=>'head')).'
'.Display::tag('th', get_lang('NewExercises'), array('class'=>'head')).'
- '.Display::tag('th', get_lang('MyAverage'), array('class'=>'head')).'
- '.Display::tag('th', get_lang('AverageExerciseResult'), array('class'=>'head')).'
+ '.Display::tag('th', get_lang('MyAverage'), array('class'=>'head')).'
+ '.Display::tag('th', get_lang('AverageExerciseResult'), array('class'=>'head')).'
'.Display::tag('th', get_lang('TimeSpentInTheCourse'), array('class'=>'head')).'
'.Display::tag('th', get_lang('LPProgress') , array('class'=>'head')).'
'.Display::tag('th', get_lang('Score').Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array ('align' => 'absmiddle', 'hspace' => '3px')), array('class'=>'head')).'
- '.Display::tag('th', get_lang('LastConnexion'), array('class'=>'head')).'
+ '.Display::tag('th', get_lang('LastConnexion'), array('class'=>'head')).'
'.Display::tag('th', get_lang('Details'), array('class'=>'head')).'
';
foreach ($course_list as $course_data) {
$course_code = $course_data['code'];
- $course_title = $course_data['title'];
+ $course_title = $course_data['title'];
//All exercises in the course @todo change for a real count
$exercises = get_all_exercises($course_data, $session_id_from_get);
@@ -2406,27 +2471,27 @@ class Tracking {
}
//Count of user results
//$done_exercises = get_best_exercise_results_by_course($course_code, $session_id_from_get);
-
+
//From course exercises NOT from LP exercises!!!
- //$done_exercises = get_count_exercises_attempted_by_course($course_code, $session_id_from_get);
+ //$done_exercises = get_count_exercises_attempted_by_course($course_code, $session_id_from_get);
$answered_exercises = 0;
- foreach($exercises as $exercise_item) {
- $attempts = count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $course_code, $session_id_from_get);
+ foreach($exercises as $exercise_item) {
+ $attempts = count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $course_code, $session_id_from_get);
if ($attempts > 1) {
$answered_exercises++;
}
}
-
+
$unanswered_exercises = $count_exercises - $answered_exercises;
-
+
//Average
$average = get_average_score_by_course($course_code, $session_id_from_get);
$my_average = get_average_score_by_course_by_user(api_get_user_id(), $course_code, $session_id_from_get);
-
- $stats_array[$course_code] = array( 'exercises' => $count_exercises,
+
+ $stats_array[$course_code] = array( 'exercises' => $count_exercises,
'unanswered_exercises_by_user' => $unanswered_exercises,
- 'done_exercises' => $done_exercises,
- 'average' => $average,
+ 'done_exercises' => $done_exercises,
+ 'average' => $average,
'my_average' => $my_average);
$weighting = 0;
@@ -2450,8 +2515,8 @@ class Tracking {
$html .= Display::tag('td', $stats_array[$course_code]['unanswered_exercises_by_user']);
//$html .= Display::tag('td', $stats_array[$course_code]['done_exercises']);
$html .= Display::tag('td', convert_to_percentage($stats_array[$course_code]['my_average']));
-
- $html .= Display::tag('td', $stats_array[$course_code]['average'] == 0 ? '-' : '('.convert_to_percentage($stats_array[$course_code]['average']).')');
+
+ $html .= Display::tag('td', $stats_array[$course_code]['average'] == 0 ? '-' : '('.convert_to_percentage($stats_array[$course_code]['average']).')');
$html .= Display::tag('td', $time, array('align'=>'center'));
if (is_numeric($progress)) {
@@ -2465,8 +2530,8 @@ class Tracking {
$percentage_score = $percentage_score.'%';
} else {
$percentage_score = '0%';
- }
- //Score
+ }
+ //Score
$html .= Display::tag('td', $percentage_score, array('align'=>'center'));
$html .= Display::tag('td', $last_connection, array('align'=>'center'));
@@ -2485,9 +2550,9 @@ class Tracking {
if (!empty($session_graph[$session_id_from_get])) {
//$html .= Display::div($session_graph[$session_id_from_get], array('id'=>'session_graph','class'=>'chart-session', 'style'=>'position:relative; text-align: center;') );
- }
+ }
}
- }
+ }
return $html;
}
@@ -2500,69 +2565,69 @@ class Tracking {
*/
function show_course_detail($user_id, $course_code, $session_id) {
$html = '';
- if (isset($course_code)) {
+ if (isset($course_code)) {
$user_id = intval($user_id);
$session_id = intval($session_id);
$course = Database::escape_string($course_code);
$course_info = CourseManager::get_course_information($course);
-
- //$course_id = $course_info['real_id'];
+
+ //$course_id = $course_info['real_id'];
//$session_name = api_get_session_name($session_id);
-
+
$html .= Display::page_subheader($course_info['title']);
-
+
$html .= '';
-
+
//Course details
$html .= '
| '.get_lang('Exercices').' |
- '.get_lang('Attempts').' |
+ '.get_lang('Attempts').' |
'.get_lang('BestAttempt').' |
'.get_lang('Ranking').' |
'.get_lang('BestResultInCourse').' |
- '.get_lang('Statistics').' '.Display :: return_icon('info3.gif', get_lang('OnlyBestResultsPerStudent'), array('align' => 'absmiddle', 'hspace' => '3px')).' |
+ '.get_lang('Statistics').' '.Display :: return_icon('info3.gif', get_lang('OnlyBestResultsPerStudent'), array('align' => 'absmiddle', 'hspace' => '3px')).' |
';
-
+
if (empty($session_id)) {
$user_list = UserManager::get_user_list();
- } else {
- $user_list = SessionManager::get_users_by_session($session_id);
+ } else {
+ $user_list = SessionManager::get_users_by_session($session_id);
}
-
- //$exercise_list = get_all_exercises($course_info, $session_id, true);
+
+ //$exercise_list = get_all_exercises($course_info, $session_id, true);
// Show exercise results of invisible exercises? see BT#4091
$exercise_list = get_all_exercises($course_info, $session_id, false);
-
- $to_graph_exercise_result = array();
-
+
+ $to_graph_exercise_result = array();
+
if (!empty($exercise_list)) {
$score = $weighting = $exe_id = 0;
foreach ($exercise_list as $exercices) {
-
+
$exercise_obj = new Exercise($course_info['real_id']);
$exercise_obj->read($exercices['id']);
$visible_return = $exercise_obj->is_visible();
-
+
//user can see the exercise results even if the exercise was set to invisible?
/*if ($visible_return['value'] == false) {
continue;
}*/
-
+
$score = $weighting = $attempts = 0;
-
+
//Getting count of attempts by user
$attempts = count_exercise_attempts_by_user(api_get_user_id(), $exercices['id'], $course_info['code'], $session_id);
-
+
$html .= '';
$url = api_get_path(WEB_CODE_PATH)."exercice/overview.php?cidReq={$course_info['code']}&id_session=$session_id&exerciseId={$exercices['id']}";
-
+
if ($visible_return['value'] == true) {
$exercices['title'] = Display::url($exercices['title'], $url, array('target'=>SESSION_LINK_TARGET));
}
-
+
$html .= Display::tag('td', $exercices['title']);
-
+
//Exercise configuration show results or show only score
if ($exercices['results_disabled'] == 0 || $exercices['results_disabled'] == 2) {
//For graphics
@@ -2572,20 +2637,20 @@ class Tracking {
$latest_attempt_url = '';
$best_score = $position = $percentage_score_result = '-';
$graph = $normal_graph = null;
-
+
//Getting best results
$best_score_data = get_best_attempt_in_course($exercices['id'], $course_info['code'], $session_id);
$best_score = show_score($best_score_data['exe_result'], $best_score_data['exe_weighting']);
-
+
if ($attempts > 0) {
$exercise_stat = get_best_attempt_by_user(api_get_user_id(), $exercices['id'], $course_info['code'], $session_id);
if (!empty($exercise_stat)) {
-
+
//Always getting the BEST attempt
$score = $exercise_stat['exe_result'];
$weighting = $exercise_stat['exe_weighting'];
$exe_id = $exercise_stat['exe_id'];
-
+
//$latest_attempt_url .= ' '.Display::return_icon('quiz.gif', get_lang('Quiz')).' ';
$latest_attempt_url .= '../exercice/exercise_show.php?origin=myprogress&id='.$exe_id.'&cidReq='.$course_info['code'].'&id_session='.$session_id;
$percentage_score_result = Display::url(show_score($score, $weighting), $latest_attempt_url);
@@ -2594,27 +2659,27 @@ class Tracking {
$my_score = $score/$weighting;
}
$position = get_exercise_result_ranking($my_score, $exe_id, $exercices['id'], $course_info['code'], $session_id, $user_list);
-
+
$graph = self::generate_exercise_result_thumbnail_graph($to_graph_exercise_result[$exercices['id']]);
$normal_graph = self::generate_exercise_result_graph($to_graph_exercise_result[$exercices['id']]);
}
}
-
+
$html .= Display::div($normal_graph, array('id'=>'main_graph_'.$exercices['id'],'class'=>'dialog', 'style'=>'display:none') );
-
+
if (empty($graph)) {
$graph = '-';
} else {
$graph = Display::url($graph, '#', array('id'=>$exercices['id'], 'class'=>'opener'));
}
-
+
$html .= Display::tag('td', $attempts, array('align'=>'center'));
$html .= Display::tag('td', $percentage_score_result, array('align'=>'center'));
$html .= Display::tag('td', $position, array('align'=>'center'));
$html .= Display::tag('td', $best_score, array('align'=>'center'));
$html .= Display::tag('td', $graph, array('align'=>'center'));
//$html .= Display::tag('td', $latest_attempt_url, array('align'=>'center', 'width'=>'25'));
-
+
} else {
// Exercise configuration NO results
$html .= Display::tag('td', $attempts, array('align'=>'center'));
@@ -2629,9 +2694,9 @@ class Tracking {
$html .= '
| '.get_lang('NoEx').' |
';
}
$html .= '
';
-
-
- //LP table results
+
+
+ //LP table results
$html .='';
$html .= Display::tag('th', get_lang('Learnpaths'), array('class'=>'head', 'style'=>'color:#000'));
$html .= Display::tag('th', get_lang('LatencyTimeSpent'), array('class'=>'head', 'style'=>'color:#000'));
@@ -2640,12 +2705,12 @@ class Tracking {
$html .= Display::tag('th', get_lang('LastConnexion'), array('class'=>'head', 'style'=>'color:#000'));
$html .= '';
- $list = new LearnpathList(api_get_user_id(), $course_info['code'], $session_id, 'publicated_on ASC', true);
+ $list = new LearnpathList(api_get_user_id(), $course_info['code'], $session_id, 'publicated_on ASC', true);
$lp_list = $list->get_flat_list();
-
+
if (!empty($lp_list) > 0) {
foreach($lp_list as $lp_id => $learnpath) {
-
+
$progress = Tracking::get_avg_student_progress($user_id, $course, array($lp_id), $session_id);
$last_connection_in_lp = Tracking::get_last_connection_time_in_lp($user_id, $course, $lp_id, $session_id);
$time_spent_in_lp = Tracking::get_time_spent_in_lp($user_id, $course, array($lp_id), $session_id);
@@ -2659,7 +2724,7 @@ class Tracking {
$time_spent_in_lp = api_time_to_hms($time_spent_in_lp);
$html .= '';
- $url = api_get_path(WEB_CODE_PATH)."newscorm/lp_controller.php?cidReq={$course_code}&id_session=$session_id&lp_id=$lp_id&action=view";
+ $url = api_get_path(WEB_CODE_PATH)."newscorm/lp_controller.php?cidReq={$course_code}&id_session=$session_id&lp_id=$lp_id&action=view";
$html .= Display::tag('td', Display::url($learnpath['lp_name'], $url, array('target'=>SESSION_LINK_TARGET)));
$html .= Display::tag('td', $time_spent_in_lp, array('align'=>'center'));
if (is_numeric($progress)) {
@@ -2683,7 +2748,7 @@ class Tracking {
';
}
$html .='
';
- }
+ }
return $html;
}
@@ -2728,7 +2793,7 @@ class Tracking {
$graph->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',8);
$graph->setGraphArea(65,50,$main_width-20, $main_height-140);
-
+
$graph->drawFilledRoundedRectangle(7,7,$main_width-7,$main_height-7,5,240,240,240);
$graph->drawRoundedRectangle(5,5,$main_width-5,$main_height -5,5,230,230,230);
$graph->drawGraphArea(255,255,255,TRUE);
@@ -2748,7 +2813,7 @@ class Tracking {
// Finish the graph
$graph->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',10);
$graph->drawLegend($main_width - 150,70,$data_set->GetDataDescription(),255,255,255);
-
+
$graph->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',11);
$graph->drawTitle(50, 30, get_lang('ExercisesInTimeProgressChart'), 50,50,50,$main_width-110, true);
@@ -2788,7 +2853,7 @@ class Tracking {
if (empty($attempts)) {
return null;
}
-
+
foreach ($attempts as $attempt) {
if (api_get_user_id() == $attempt['exe_user_id']) {
if ($attempt['exe_weighting'] != 0 ) {
@@ -2857,7 +2922,7 @@ class Tracking {
//var_dump($my_final_array, $final_array); echo '
';
//echo ''; var_dump($my_exercise_result, $exercise_result,$x_axis);
-
+
$cache = new pCache();
// Dataset definition
@@ -2866,7 +2931,7 @@ class Tracking {
$data_set->AddPoint($my_final_array,"Serie2");
//$data_set->AddPoint($x_axis,"Serie3");
$data_set->AddAllSeries();
-
+
// Initialise the graph
$main_width = 80;
@@ -3020,7 +3085,7 @@ class Tracking {
//SCALE_NORMAL, SCALE_START0, SCALE_ADDALLSTART0
$main_graph->drawScale($data_set->GetData(),$data_set->GetDataDescription(),SCALE_ADDALLSTART0, 150,150,150,TRUE,0,1,TRUE);
-
+
$main_graph->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
@@ -3090,7 +3155,7 @@ class TrackingCourseLog {
$table_item_property = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$table_session = Database :: get_main_table(TABLE_MAIN_SESSION);
-
+
$session_id = intval($session_id);
$sql = "SELECT
@@ -3101,8 +3166,8 @@ class TrackingCourseLog {
insert_date as col5,
visibility as col6
FROM $table_item_property track_resource, $table_user user
- WHERE track_resource.c_id = $course_id AND
- track_resource.insert_user_id = user.user_id AND
+ WHERE track_resource.c_id = $course_id AND
+ track_resource.insert_user_id = user.user_id AND
id_session = $session_id ";
if (isset($_GET['keyword'])) {
@@ -3156,7 +3221,7 @@ class TrackingCourseLog {
if (!empty($recorset)) {
$obj = Database::fetch_object($recorset);
-
+
$name_session = '';
$coach_name = '';
if (!empty($obj)) {
@@ -3501,7 +3566,7 @@ class TrackingCourseLog {
$user_ids = intval($user_ids);
$condition_user = " WHERE user.user_id = $user_ids ";
}
-
+
if (!empty($_GET['user_keyword'])) {
$keyword = trim(Database::escape_string($_GET['user_keyword']));
$condition_user .= " AND (user.firstname LIKE '%".$keyword."%' OR user.lastname LIKE '%".$keyword."%' OR user.username LIKE '%".$keyword."%' OR user.email LIKE '%".$keyword."%' ) ";
@@ -3523,7 +3588,7 @@ class TrackingCourseLog {
if (!in_array($direction, array('ASC','DESC'))) {
$direction = 'ASC';
}
-
+
$column = intval($column);
if ($is_western_name_order) {
@@ -3545,28 +3610,28 @@ class TrackingCourseLog {
$users = array ();
$t = time();
$row = array();
-
+
$course_info = api_get_course_info($course_code);
-
+
$total_surveys = 0;
-
+
$total_exercises = get_all_exercises($course_info, $session_id);
-
+
if (empty($session_id)) {
$survey_user_list = array();
$survey_list = survey_manager::get_surveys($course_code, $session_id);
-
+
$total_surveys = count($survey_list);
$survey_data = array();
foreach ($survey_list as $survey) {
$user_list = survey_manager::get_people_who_filled_survey($survey['survey_id'], false, $course_info['real_id']);
-
+
foreach ($user_list as $user_id) {
isset($survey_user_list[$user_id]) ? $survey_user_list[$user_id]++ : $survey_user_list[$user_id] = 1;
}
}
}
-
+
while ($user = Database::fetch_array($res, 'ASSOC')) {
$user['official_code'] = $user['col0'];
if ($is_western_name_order) {
@@ -3578,7 +3643,7 @@ class TrackingCourseLog {
}
$user['username'] = $user['col3'];
$user['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $course_code, $session_id));
-
+
$avg_student_score = Tracking::get_avg_student_score($user['user_id'], $course_code, array(), $session_id);
$avg_student_progress = Tracking::get_avg_student_progress($user['user_id'], $course_code, array(), $session_id);
@@ -3586,20 +3651,20 @@ class TrackingCourseLog {
$avg_student_progress=0;
}
$user['average_progress'] = $avg_student_progress.'%';
-
- $total_user_exercise = Tracking::get_exercise_student_progress($total_exercises, $user['user_id'], $course_code, $session_id);
+
+ $total_user_exercise = Tracking::get_exercise_student_progress($total_exercises, $user['user_id'], $course_code, $session_id);
$user['exercise_progress'] = $total_user_exercise;
-
+
$total_user_exercise = Tracking::get_exercise_student_average_best_attempt($total_exercises, $user['user_id'], $course_code, $session_id);
- $user['exercise_average_best_attempt'] = $total_user_exercise;
-
+ $user['exercise_average_best_attempt'] = $total_user_exercise;
+
if (is_numeric($avg_student_score)) {
$user['student_score'] = $avg_student_score.'%';
} else {
$user['student_score'] = $avg_student_score;
}
-
+
$user['count_assignments'] = Tracking::count_student_assignments($user['user_id'], $course_code, $session_id);
$user['count_messages'] = Tracking::count_student_messages($user['user_id'], $course_code, $session_id);
$user['first_connection'] = Tracking::get_first_connection_date_on_the_course($user['user_id'], $course_code, $session_id);
@@ -3607,7 +3672,7 @@ class TrackingCourseLog {
// we need to display an additional profile field
$user['additional'] = '';
-
+
if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
if (isset($additional_user_profile_info[$user['user_id']]) && is_array($additional_user_profile_info[$user['user_id']])) {
$user['additional'] = implode(', ', $additional_user_profile_info[$user['user_id']]);
@@ -3617,16 +3682,16 @@ class TrackingCourseLog {
if (empty($session_id)) {
$user['survey'] = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0) .' / '.$total_surveys;
}
-
+
$user['link'] = '
';
// store columns in array $users
-
+
$is_western_name_order = api_is_western_name_order();
$user_row = array();
-
+
$user_row[]= $user['official_code']; //0
-
+
if ($is_western_name_order) {
$user_row[]= $user['lastname'];
$user_row[]= $user['firstname'];
@@ -3635,34 +3700,34 @@ class TrackingCourseLog {
$user_row[]= $user['lastname'];
}
$user_row[]= $user['username']; // hubr
- $user_row[]= $user['time']; //3
- $user_row[]= $user['average_progress'];
+ $user_row[]= $user['time']; //3
+ $user_row[]= $user['average_progress'];
$user_row[]= $user['exercise_progress'];
+
+ $user_row[]= $user['exercise_average_best_attempt'];
- $user_row[]= $user['exercise_average_best_attempt'];
-
-
+
$user_row[]= $user['student_score'];
$user_row[]= $user['count_assignments'];
$user_row[]= $user['count_messages']; //8
-
+
if (empty($session_id)) {
$user_row[]= $user['survey'];
}
-
+
$user_row[]= $user['first_connection'];
- $user_row[]= $user['last_connection'];
+ $user_row[]= $user['last_connection'];
if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
- $user_row[]= $user['additional'];
+ $user_row[]= $user['additional'];
}
-
+
$user_row[]= $user['link'];
-
+
$users[] = $user_row;
-
+
if ($export_csv) {
if (empty($session_id)) {
- $user_row[11] = strip_tags($user_row[11]);
+ $user_row[11] = strip_tags($user_row[11]);
$user_row[12] = strip_tags($user_row[12]);
unset($user_row[14]);
unset($user_row[15]);
@@ -3672,7 +3737,7 @@ class TrackingCourseLog {
unset($user_row[13]);
unset($user_row[14]);
}
-
+
$csv_content[] = $user_row;
}
}
diff --git a/main/inc/lib/urlmanager.lib.php b/main/inc/lib/urlmanager.lib.php
index 2aa95f0271..2f7ce7a14e 100644
--- a/main/inc/lib/urlmanager.lib.php
+++ b/main/inc/lib/urlmanager.lib.php
@@ -204,14 +204,22 @@ class UrlManager
* @param int access url id
* @return array Database::store_result of the result
* */
- public static function get_url_rel_session_data($access_url_id='') {
+ public static function get_url_rel_session_data($access_url_id='')
+ {
+ $where ='';
+ $table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
+
+ if (!empty($access_url_id))
+ $where ="WHERE $table_url_rel_session.access_url_id = ".Database::escape_string($access_url_id);
- $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$sql="SELECT id, name, access_url_id
FROM $tbl_session u
INNER JOIN $table_url_rel_session
ON $table_url_rel_session.session_id = id
+ $where
ORDER BY name, id";
+
$result=Database::query($sql);
$sessions=Database::store_result($result);
return $sessions;
@@ -272,6 +280,24 @@ class UrlManager
}
+ /**
+ * Checks the relationship between an URL and a Session (return the num_rows)
+ * @author Julio Montoya
+ * @param int user id
+ * @param int url id
+ * @return boolean true if success
+ * */
+ public static function relation_url_session_exist($session_id, $url_id) {
+ $table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $session_id = intval($session_id);
+ $url_id = intval($url_id);
+ $sql= "SELECT session_id FROM $table_url_rel_session WHERE access_url_id = ".Database::escape_string($url_id)." AND session_id = ".Database::escape_string($session_id);
+ $result = Database::query($sql);
+ $num = Database::num_rows($result);
+ return $num;
+ }
+
+
/**
* Add a group of users into a group of URLs
* @author Julio Montoya
@@ -333,6 +359,36 @@ class UrlManager
}
+ /**
+ * Add a group of sessions into a group of URLs
+ * @author Julio Montoya
+ * @param array of session ids
+ * @param array of url_ids
+ * */
+ public static function add_sessions_to_urls($session_list,$url_list)
+ {
+ $table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $result_array=array();
+
+ if (is_array($session_list) && is_array($url_list)){
+ foreach ($url_list as $url_id) {
+ foreach ($session_list as $session_id) {
+ $count = UrlManager::relation_url_session_exist($session_id,$url_id);
+
+ if ($count==0) {
+ $sql = "INSERT INTO $table_url_rel_session
+ SET session_id = ".Database::escape_string($session_id).", access_url_id = ".Database::escape_string($url_id);
+ $result = Database::query($sql);
+ if($result)
+ $result_array[$url_id][$session_id]=1;
+ else
+ $result_array[$url_id][$session_id]=0;
+ }
+ }
+ }
+ }
+ return $result_array;
+ }
/**
* Add a user into a url
@@ -366,6 +422,28 @@ class UrlManager
return $result;
}
+ /**
+ * Inserts a session to a URL (access_url_rel_session table)
+ * @param int Session ID
+ * @param int URL ID
+ * @return bool True on success, false session already exists or insert failed
+ */
+ public static function add_session_to_url($session_id, $url_id = 1) {
+ $table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ if (empty($url_id)) $url_id=1;
+ $result = false;
+ $count = UrlManager::relation_url_session_exist($session_id,$url_id);
+ $session_id = intval($session_id);
+ if (empty($count) && !empty($session_id)) {
+ $url_id = intval($url_id);
+ $sql = "INSERT INTO $table_url_rel_session
+ SET session_id = ".Database::escape_string($session_id).", access_url_id = ".Database::escape_string($url_id);
+ $result = Database::query($sql);
+ }
+ return $result;
+ }
+
+
/**
* Deletes an url and user relationship
* @author Julio Montoya
@@ -398,18 +476,33 @@ class UrlManager
return $result;
}
+ /**
+ * Deletes an url and session relationship
+ * @author Julio Montoya
+ * @param char course code
+ * @param int url id
+ * @return boolean true if success
+ * */
+ public static function delete_url_rel_session($session_id, $url_id) {
+ $table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $sql= "DELETE FROM $table_url_rel_session WHERE session_id = ".Database::escape_string($session_id)." AND access_url_id=".Database::escape_string($url_id)." ";
+ $result = Database::query($sql,'ASSOC');
+ return $result;
+ }
+
+
/**
* Updates the access_url_rel_user table with a given user list
* @author Julio Montoya
* @param array user list
* @param int access_url_id
* */
- public static function update_urls_rel_user($user_list, $access_url_id) {
+ public static function update_urls_rel_user($user_list, $access_url_id) {
$table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT user_id FROM $table_url_rel_user WHERE access_url_id = ".intval($access_url_id);
$result = Database::query($sql);
$existing_users = array();
-
+
//Getting all users
while($row = Database::fetch_array($result)){
$existing_users[] = $row['user_id'];
@@ -425,7 +518,7 @@ class UrlManager
}
}
}
-
+
$users_deleted = array();
//deleting old users
foreach($existing_users as $user_id_to_delete) {
@@ -436,7 +529,7 @@ class UrlManager
}
}
}
-
+
if (empty($users_added) && empty($users_deleted)) {
return false;
}
@@ -481,6 +574,44 @@ class UrlManager
}
}
+ /**
+ * Updates the access_url_rel_session table with a given user list
+ * @author Julio Montoya
+ * @param array user list
+ * @param int access_url_id
+ * */
+ public static function update_urls_rel_session($session_list,$access_url_id) {
+ $table_session = Database :: get_main_table(TABLE_MAIN_SESSION);
+ $table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+
+ $sql = "SELECT session_id FROM $table_url_rel_session WHERE access_url_id=".Database::escape_string($access_url_id);
+ $result = Database::query($sql);
+ $existing_sessions = array();
+
+ while($row = Database::fetch_array($result)){
+ $existing_sessions[] = $row['session_id'];
+ }
+
+ //adding users
+ foreach($session_list as $session) {
+ if(!in_array($session, $existing_sessions)) {
+ if (!empty($session) && !empty($access_url_id)) {
+ UrlManager::add_session_to_url($session, $access_url_id);
+ }
+ }
+ }
+
+ //deleting old users
+ foreach($existing_sessions as $existing_session) {
+ if(!in_array($existing_session, $session_list)) {
+ if (!empty($existing_session) && !empty($access_url_id)) {
+ UrlManager::delete_url_rel_session($existing_session,$access_url_id);
+ }
+ }
+ }
+ }
+
+
public static function get_access_url_from_user($user_id) {
$table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$table_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
@@ -491,6 +622,18 @@ class UrlManager
$url_list = Database::store_result($result,'ASSOC');
return $url_list;
}
+
+ public static function get_access_url_from_session($session_id) {
+ $table_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $table_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
+ $sql = "SELECT url, access_url_id FROM $table_url_rel_session url_rel_session INNER JOIN $table_url u
+ ON (url_rel_session.access_url_id = u.id)
+ WHERE session_id = ".Database::escape_string($session_id);
+ $result = Database::query($sql);
+ $url_list = Database::store_result($result);
+ return $url_list;
+ }
+
/**
*
diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php
index 380da16b66..1ed9be1ebe 100644
--- a/main/inc/lib/usermanager.lib.php
+++ b/main/inc/lib/usermanager.lib.php
@@ -15,8 +15,8 @@
* @package chamilo.include.user
*/
class UserManager {
-
- // Constants for user extra field types.
+
+ // Constants for user extra field types.
CONST USER_FIELD_TYPE_TEXT = 1;
CONST USER_FIELD_TYPE_TEXTAREA = 2;
CONST USER_FIELD_TYPE_RADIO = 3;
@@ -64,8 +64,8 @@ class UserManager {
global $_user, $_configuration;
$original_password = $password;
$access_url_id = 1;
-
- if (api_get_multiple_access_url()) {
+
+ if (api_get_multiple_access_url()) {
$access_url_id = api_get_current_access_url_id();
}
if (is_array($_configuration[$access_url_id]) && isset($_configuration[$access_url_id]['hosting_limit_users']) && $_configuration[$access_url_id]['hosting_limit_users'] > 0) {
@@ -85,12 +85,12 @@ class UserManager {
$lastName = Security::remove_XSS($lastName);
$loginName = Security::remove_XSS($loginName);
$phone = Security::remove_XSS($phone);
-
+
// database table definition
$table_user = Database::get_main_table(TABLE_MAIN_USER);
//Checking the user language
- $languages = api_get_languages();
+ $languages = api_get_languages();
if (!in_array($language, $languages['folder'])) {
$language = api_get_setting('platformLanguage');
}
@@ -140,14 +140,14 @@ class UserManager {
$result = Database::query($sql);
if ($result) {
//echo "id returned";
- $return = Database::insert_id();
- if (api_get_multiple_access_url()) {
- UrlManager::add_user_to_url($return, api_get_current_access_url_id());
+ $return = Database::insert_id();
+ if (api_get_multiple_access_url()) {
+ UrlManager::add_user_to_url($return, api_get_current_access_url_id());
} else {
//we are adding by default the access_url_user table with access_url_id = 1
UrlManager::add_user_to_url($return, 1);
}
-
+
if (!empty($email) && $send_mail) {
$recipient_name = api_get_person_name($firstName, $lastName, null, PERSON_NAME_EMAIL_ADDRESS);
$emailsubject = '['.api_get_setting('siteName').'] '.get_lang('YourReg').' '.api_get_setting('siteName');
@@ -163,7 +163,7 @@ class UserManager {
}
} else {
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstName, $lastName)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $loginName ."\n". get_lang('Pass')." : ".stripslashes($original_password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
- }
+ }
/* MANAGE EVENT WITH MAIL */
@@ -171,22 +171,22 @@ class UserManager {
{
$values["about_user"] = $return;
$values["password"] = $original_password;
-
+
$values["send_to"] = array($return);
$values["prior_lang"] = null;
-
+
EventsDispatcher::events('user_registration', $values);
}
else
{
- @api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
+ @api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
- /* ENDS MANAGE EVENT WITH MAIL */
-
+ /* ENDS MANAGE EVENT WITH MAIL */
+
}
+
-
- // Add event to system log
+ // Add event to system log
$user_id_manager = api_get_user_id();
$user_info = api_get_user_info($return);
event_system(LOG_USER_CREATE, LOG_USER_ID, $return, api_get_utc_datetime(), $user_id_manager, null, $user_info);
@@ -218,7 +218,7 @@ class UserManager {
global $_configuration;
if (isset($_configuration['delete_users']) && $_configuration['delete_users'] == false) {
return false;
- }
+ }
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;
@@ -240,7 +240,7 @@ class UserManager {
* @return boolean true if user is succesfully deleted, false otherwise
*/
public static function delete_user($user_id) {
-
+
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;
@@ -255,12 +255,12 @@ class UserManager {
$table_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
$table_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$table_group = Database :: get_course_table(TABLE_GROUP_USER);
-
+
// Unsubscribe the user from all groups in all his courses
- $sql = "SELECT c.id FROM $table_course c, $table_course_user cu
+ $sql = "SELECT c.id FROM $table_course c, $table_course_user cu
WHERE cu.user_id = '".$user_id."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c.code = cu.course_code";
$res = Database::query($sql);
- while ($course = Database::fetch_object($res)) {
+ while ($course = Database::fetch_object($res)) {
$sql = "DELETE FROM $table_group WHERE c_id = {$course->id} AND user_id = $user_id";
Database::query($sql);
}
@@ -318,8 +318,8 @@ class UserManager {
$resv = Database::query($sqlv);
require_once api_get_path(LIBRARY_PATH).'urlmanager.lib.php';
- if (api_get_multiple_access_url()) {
- $url_id = api_get_current_access_url_id();
+ if (api_get_multiple_access_url()) {
+ $url_id = api_get_current_access_url_id();
UrlManager::delete_url_rel_user($user_id, $url_id);
} else {
//we delete the user from the url_id =1
@@ -327,7 +327,7 @@ class UserManager {
}
if (api_get_setting('allow_social_tool')=='true' ) {
-
+
require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
//Delete user from portal groups
$group_list = GroupPortalManager::get_groups_by_user($user_id);
@@ -336,23 +336,23 @@ class UserManager {
GroupPortalManager::delete_user_rel_group($user_id, $group_id);
}
}
-
+
//Delete user from friend lists
SocialManager::remove_user_rel_user($user_id, true);
}
- // Add event to system log
+ // Add event to system log
$user_id_manager = api_get_user_id();
event_system(LOG_USER_DELETE, LOG_USER_ID, $user_id, api_get_utc_datetime(), $user_id_manager, null, $user_info);
event_system(LOG_USER_DELETE, LOG_USER_OBJECT, implode(';',$user_info), api_get_utc_datetime(), $user_id_manager, null, $user_info);
return true;
}
-
+
/**
* Deactivate users. Can be called either as:
- *
+ *
* - UserManager :: delete_users(1, 2, 3);
* - UserManager :: delete_users(array(1, 2, 3));
- *
+ *
* @param array|int $ids
* @return boolean True if at least one user was successfuly deleted. False otherwise.
* @author Laurent Opprecht
@@ -360,7 +360,7 @@ class UserManager {
static function delete_users($ids = array())
{
$result = false;
- $ids = is_array($ids) ? $ids : func_get_args();
+ $ids = is_array($ids) ? $ids : func_get_args();
$ids = array_map('intval', $ids);
foreach($ids as $id)
{
@@ -372,12 +372,12 @@ class UserManager {
/**
* Deactivate users. Can be called either as:
- *
+ *
* - UserManager :: deactivate_users(1, 2, 3);
* - UserManager :: deactivate_users(array(1, 2, 3));
- *
+ *
* @param array|int $ids
- * @return boolean
+ * @return boolean
* @author Laurent Opprecht
*/
static function deactivate_users($ids = array())
@@ -391,19 +391,19 @@ class UserManager {
$ids = is_array($ids) ? $ids : func_get_args();
$ids = array_map('intval', $ids);
$ids = implode(',', $ids);
-
+
$sql = "UPDATE $table_user SET active = 0 WHERE user_id IN ($ids)";
return Database::query($sql);
}
/**
* Activate users. Can be called either as:
- *
+ *
* - UserManager :: activate_users(1, 2, 3);
* - UserManager :: activate_users(array(1, 2, 3));
- *
+ *
* @param array|int $ids
- * @return boolean
+ * @return boolean
* @author Laurent Opprecht
*/
static function activate_users($ids = array())
@@ -417,11 +417,11 @@ class UserManager {
$ids = is_array($ids) ? $ids : func_get_args();
$ids = array_map('intval', $ids);
$ids = implode(',', $ids);
-
+
$sql = "UPDATE $table_user SET active = 1 WHERE user_id IN ($ids)";
return Database::query($sql);
}
-
+
/**
* Update user information with new openid
* @param int $user_id
@@ -459,9 +459,9 @@ class UserManager {
public static function update_user($user_id, $firstname, $lastname, $username, $password = null, $auth_source = null, $email, $status, $official_code, $phone, $picture_uri, $expiration_date, $active, $creator_id = null, $hr_dept_id = 0, $extra = null, $language = 'english', $encrypt_method = '', $send_email = false, $reset_password = 0) {
global $_configuration;
$original_password = $password;
-
+
$user_info = api_get_user_info($user_id, false, true);
-
+
if ($reset_password == 0) {
$password = null;
$auth_source = $user_info['auth_source'];
@@ -475,24 +475,24 @@ class UserManager {
$password = $password;
$auth_source = $auth_source;
}
-
+
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;
-
+
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
-
+
//Checking the user language
- $languages = api_get_languages();
+ $languages = api_get_languages();
if (!in_array($language, $languages['folder'])) {
$language = api_get_setting('platformLanguage');
- }
-
+ }
+
$sql = "UPDATE $table_user SET
lastname='".Database::escape_string($lastname)."',
firstname='".Database::escape_string($firstname)."',
username='".Database::escape_string($username)."',
language='".Database::escape_string($language)."',";
-
+
if (!is_null($password)) {
if ($encrypt_method == '') {
$password = api_get_encrypted_password($password);
@@ -532,7 +532,7 @@ class UserManager {
$res = $res && self::update_extra_field_value($user_id,$fname,$fvalue);
}
}
-
+
if (!empty($email) && $send_email) {
$recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS);
$emailsubject = '['.api_get_setting('siteName').'] '.get_lang('YourReg').' '.api_get_setting('siteName');
@@ -547,10 +547,10 @@ class UserManager {
}
} else {
$emailbody=get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ". api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username . (($reset_password > 0) ? "\n". get_lang('Pass')." : ".stripslashes($original_password) : "") . "\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
- }
+ }
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
-
+
return $return;
}
@@ -635,12 +635,12 @@ class UserManager {
$language = api_get_interface_language();
}
$firstname = api_substr(preg_replace(USERNAME_PURIFIER, '', api_transliterate($firstname, '', $encoding)), 0, 1); // The first letter only.
-
+
//Looking for a space in the lastname
$pos = api_strpos($lastname, ' ');
if ($pos !== false ) {
$lastname = api_substr($lastname, 0, $pos);
- }
+ }
$lastname = preg_replace(USERNAME_PURIFIER, '', api_transliterate($lastname, '', $encoding));
//$username = api_is_western_name_order(null, $language) ? $firstname.$lastname : $lastname.$firstname;
@@ -753,28 +753,28 @@ class UserManager {
public static function is_username_too_long($username) {
return (strlen($username) > USERNAME_MAX_LENGTH);
}
-
- public static function get_user_list_by_ids($ids = array(), $active = null)
+
+ public static function get_user_list_by_ids($ids = array(), $active = null)
{
if(empty($ids))
{
return array();
}
-
- $ids = is_array($ids) ? $ids : array($ids);
- $ids = array_map('intval', $ids);
+
+ $ids = is_array($ids) ? $ids : array($ids);
+ $ids = array_map('intval', $ids);
$ids = implode(',', $ids);
-
+
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT * FROM $tbl_user WHERE user_id IN ($ids)";
if(! is_null($active))
{
- $sql .= ' AND active=' . ($active ? '1' : '0');
+ $sql .= ' AND active=' . ($active ? '1' : '0');
}
-
+
$rs = Database::query($sql);
$result = array();
- while ($row = Database::fetch_array($rs))
+ while ($row = Database::fetch_array($rs))
{
$result[] = $row;
}
@@ -803,12 +803,12 @@ class UserManager {
if (count($order_by) > 0) {
$sql_query .= ' ORDER BY '.Database::escape_string(implode(',', $order_by));
}
-
+
if (is_numeric($limit_from) && is_numeric($limit_from)) {
$limit_from = intval($limit_from);
$limit_to = intval($limit_to);
- $sql_query .= " LIMIT $limit_from, $limit_to";
- }
+ $sql_query .= " LIMIT $limit_from, $limit_to";
+ }
$sql_result = Database::query($sql_query);
while ($result = Database::fetch_array($sql_result)) {
$return_array[] = $result;
@@ -828,7 +828,7 @@ class UserManager {
$return_array = array();
$sql_query = "SELECT * FROM $user_table";
if (count($conditions) > 0) {
- $sql_query .= ' WHERE ';
+ $sql_query .= ' WHERE ';
$temp_conditions = array();
foreach ($conditions as $field => $value) {
$field = Database::escape_string($field);
@@ -845,7 +845,7 @@ class UserManager {
}
if (count($order_by) > 0) {
$sql_query .= ' ORDER BY '.Database::escape_string(implode(',', $order_by));
- }
+ }
$sql_result = Database::query($sql_query);
while ($result = Database::fetch_array($sql_result)) {
$return_array[] = $result;
@@ -981,7 +981,7 @@ class UserManager {
}
if (empty($picture_filename) && $anonymous) {
return array('dir' => $base.'img/', 'file' => 'unknown.jpg');
- }
+ }
return array('dir' => $dir, 'file' => $picture_filename);
}
@@ -990,10 +990,10 @@ class UserManager {
* Creates new user pfotos in various sizes of a user, or deletes user pfotos.
* Note: This method relies on configuration setting from dokeos/main/inc/conf/profile.conf.php
* @param int $user_id The user internal identitfication number.
- * @param string $file The common file name for the newly created pfotos.
+ * @param string $file The common file name for the newly created pfotos.
* It will be checked and modified for compatibility with the file system.
* If full name is provided, path component is ignored.
- * If an empty name is provided, then old user photos are deleted only,
+ * If an empty name is provided, then old user photos are deleted only,
* @see UserManager::delete_user_picture() as the prefered way for deletion.
* @param string $source_file The full system name of the image from which user photos will be created.
* @return string/bool Returns the resulting common file name of created images which usually should be stored in database.
@@ -1007,7 +1007,7 @@ class UserManager {
if (empty($source_file)) {
$source_file = $file;
}
-
+
// Configuration options about user photos.
require_once api_get_path(CONFIGURATION_PATH).'profile.conf.php';
@@ -1068,18 +1068,18 @@ class UserManager {
$filename = $user_id.'_'.$filename;
}
- // Storing the new photos in 4 versions with various sizes.
+ // Storing the new photos in 4 versions with various sizes.
$small = self::resize_picture($source_file, 22);
- $medium = self::resize_picture($source_file, 85);
+ $medium = self::resize_picture($source_file, 85);
$normal = self::resize_picture($source_file, 200);
-
+
$big = new Image($source_file); // This is the original picture.
$ok = false;
- $ok = $small->send_image($path.'small_'.$filename) &&
- $medium->send_image($path.'medium_'.$filename) &&
- $normal->send_image($path.$filename) &&
+ $ok = $small->send_image($path.'small_'.$filename) &&
+ $medium->send_image($path.'medium_'.$filename) &&
+ $normal->send_image($path.$filename) &&
$big->send_image( $path.'big_'.$filename);
return $ok ? $filename : false;
}
@@ -1129,7 +1129,7 @@ class UserManager {
$production_dir = $production_path['dir'].$user_id.'/';
$del_image = api_get_path(WEB_CODE_PATH).'img/delete.gif';
$del_text = get_lang('Delete');
- $production_list = '';
+ $production_list = '';
if (count($productions) > 0) {
$production_list = '';
foreach ($productions as $file) {
@@ -1353,7 +1353,7 @@ class UserManager {
$sqlf = "SELECT * FROM $t_uf WHERE 1 = 1 ";
if (!$all_visibility) {
$sqlf .= " AND field_visible = 1 ";
- }
+ }
if (!is_null($field_filter)) {
$field_filter = intval($field_filter);
$sqlf .= " AND field_filter = $field_filter ";
@@ -1678,10 +1678,10 @@ class UserManager {
$sql .= " WHERE field_filter = $field_filter ";
}
}
-
+
$sql .= " ORDER BY f.field_order";
-
+
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) {
@@ -1925,9 +1925,9 @@ class UserManager {
public static function get_sessions_by_category ($user_id, $fill_first = false, $is_time_over = false, $sort_by_session_name = false) {
// Database Table Definitions
$tbl_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
- $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
+ $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-
+
if ($user_id != strval(intval($user_id))) return array();
$categories = array();
@@ -1935,7 +1935,7 @@ class UserManager {
if ($fill_first) {
$categories[0] = array();
}
-
+
// Get the list of sessions where the user is subscribed as student
$condition_date_end = "";
@@ -1945,9 +1945,9 @@ class UserManager {
$condition_date_end = " AND (date_end >= CURDATE() OR date_end = '0000-00-00') ";
}
- $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name
- FROM $tbl_session_user, $tbl_session
- WHERE id_session=id AND id_user=$user_id $condition_date_end
+ $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name
+ FROM $tbl_session_user, $tbl_session
+ WHERE id_session=id AND id_user=$user_id $condition_date_end
ORDER BY session_category_id, date_start, date_end";
$result = Database::query($sessions_sql);
if (Database::num_rows($result) > 0) {
@@ -1957,16 +1957,16 @@ class UserManager {
}
}
- // Get the list of sessions where the user is subscribed as coach in a
+ // Get the list of sessions where the user is subscribed as coach in a
// course, from table session_rel_course_rel_user
- $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name
- FROM $tbl_session as session INNER JOIN $tbl_session_course_user as session_rel_course_user
- ON session_rel_course_user.id_session = session.id AND
- session_rel_course_user.id_user = $user_id AND
- session_rel_course_user.status = 2 $condition_date_end
+ $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name
+ FROM $tbl_session as session INNER JOIN $tbl_session_course_user as session_rel_course_user
+ ON session_rel_course_user.id_session = session.id AND
+ session_rel_course_user.id_user = $user_id AND
+ session_rel_course_user.status = 2 $condition_date_end
ORDER BY session_category_id, date_start, date_end";
-
+
$result = Database::query($sessions_sql);
if (Database::num_rows($result)>0) {
while ($row = Database::fetch_array($result)) {
@@ -1976,8 +1976,8 @@ class UserManager {
}
// Get the list of sessions where the user is subscribed as a session coach
- $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name FROM $tbl_session as session
- WHERE session.id_coach = $user_id $condition_date_end
+ $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name FROM $tbl_session as session
+ WHERE session.id_coach = $user_id $condition_date_end
ORDER BY session_category_id, date_start, date_end";
$result = Database::query($sessions_sql);
@@ -1987,23 +1987,23 @@ class UserManager {
$names[$row['id']] = $row['name'];
}
}
-
+
if ($sort_by_session_name) {
// reorder sessions alphabetically inside categories
if (!empty($categories)) {
foreach ($categories as $cat_id => $category) {
// inside each category, prepare a new empty array to sort sessions
- $new_cat = array();
+ $new_cat = array();
if (is_array($category) && !empty($category)) {
foreach ($category as $session) {
$new_cat[$names[$session]] = $session;
}
- uksort($new_cat, 'strnatcmp');
+ uksort($new_cat, 'strnatcmp');
$categories[$cat_id] = $new_cat;
- }
+ }
}
}
- }
+ }
return $categories;
}
@@ -2019,7 +2019,7 @@ class UserManager {
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
- $tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
+ $tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
if ($user_id != strval(intval($user_id))) return array();
@@ -2039,14 +2039,14 @@ class UserManager {
//Courses in which we suscribed out of any session
$tbl_user_course_category = Database :: get_user_personal_table(TABLE_USER_COURSE_CATEGORY);
- $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
+ $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
$join_access_url
- WHERE course_rel_user.user_id = '".$user_id."' AND
+ WHERE course_rel_user.user_id = '".$user_id."' AND
course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH." $where_access_url
ORDER BY user_course_category.sort, course_rel_user.sort, course.title ASC";
@@ -2064,9 +2064,9 @@ class UserManager {
// get the list of sessions where the user is subscribed as student
$sessions_sql = "SELECT DISTINCT id, name, date_start, date_end
FROM $tbl_session_user, $tbl_session
- WHERE id_session=id AND
- id_user=$user_id AND
- relation_type<>".SESSION_RELATION_TYPE_RRHH." AND
+ WHERE id_session=id AND
+ id_user=$user_id AND
+ relation_type<>".SESSION_RELATION_TYPE_RRHH." AND
(date_start <= CURDATE() AND date_end >= CURDATE() OR date_start='0000-00-00')
ORDER BY date_start, date_end, name";
$result = Database::query($sessions_sql);
@@ -2075,11 +2075,11 @@ class UserManager {
// get the list of sessions where the user is subscribed as student where visibility = SESSION_VISIBLE_READ_ONLY = 1 SESSION_VISIBLE = 2
$sessions_out_date_sql = "SELECT DISTINCT id, name, date_start, date_end
FROM $tbl_session_user, $tbl_session
- WHERE id_session=id AND id_user=$user_id AND
+ WHERE id_session=id AND id_user=$user_id AND
relation_type<>".SESSION_RELATION_TYPE_RRHH." AND
(date_end <= CURDATE() AND date_end<>'0000-00-00') AND (visibility = ".SESSION_VISIBLE_READ_ONLY." || visibility = ".SESSION_VISIBLE.")
ORDER BY date_start, date_end, name";
-
+
$result_out_date = Database::query($sessions_out_date_sql);
$sessions_out_date = Database::store_result($result_out_date, 'ASSOC');
$sessions = array_merge($sessions , $sessions_out_date);
@@ -2092,7 +2092,7 @@ class UserManager {
AND session_rel_course_user.id_user = $user_id AND session_rel_course_user.status = 2
WHERE (
CURDATE() >= DATE_SUB(date_start, INTERVAL nb_days_access_before_beginning DAY) AND
- CURDATE() <= ADDDATE(date_end, INTERVAL nb_days_access_after_end DAY) OR
+ CURDATE() <= ADDDATE(date_end, INTERVAL nb_days_access_after_end DAY) OR
date_start='0000-00-00'
)
ORDER BY date_start, date_end, name";
@@ -2116,8 +2116,8 @@ class UserManager {
if (api_is_allowed_to_create_course()) {
foreach($sessions as $enreg) {
$id_session = $enreg['id'];
- $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i,
- ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t, email, course.course_language l, 1 sort,
+ $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i,
+ ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t, email, course.course_language l, 1 sort,
category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name
FROM $tbl_session_course_user as session_course_user
INNER JOIN $tbl_course AS course
@@ -2132,7 +2132,7 @@ class UserManager {
$course_list_sql_result = Database::query($personal_course_list_sql);
- while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) {
+ while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) {
$result_row['course_info'] = api_get_course_info($result_row['code']);
$key = $result_row['id_session'].' - '.$result_row['code'];
$personal_course_list[$key] = $result_row;
@@ -2143,7 +2143,7 @@ class UserManager {
foreach ($sessions as $enreg) {
$id_session = $enreg['id'];
// this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not
- $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email,
+ $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email,
course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, " .
"IF((session_course_user.id_user = 3 AND session_course_user.status=2),'2', '5')
FROM $tbl_session_course_user as session_course_user
@@ -2172,15 +2172,25 @@ class UserManager {
*/
public static function get_courses_list_by_session($user_id, $session_id) {
// Database Table Definitions
- $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
+ $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$user_id = intval($user_id);
$session_id = intval($session_id);
//we filter the courses from the URL
$join_access_url=$where_access_url='';
+
+ if (api_get_multiple_access_url()) {
+ $access_url_id = api_get_current_access_url_id();
+ if ($access_url_id != -1) {
+ $tbl_url_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $join_access_url= " , $tbl_url_session url_rel_session ";
+ $where_access_url=" AND access_url_id = $access_url_id AND url_rel_session.session_id = $session_id ";
+ }
+ }
// variable initialisation
+ $personal_course_list_sql = '';
$personal_course_list = array();
$courses = array();
@@ -2188,11 +2198,11 @@ class UserManager {
$personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu $join_access_url
WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url
ORDER BY code";
-
+
$course_list_sql_result = Database::query($personal_course_list_sql);
if (Database::num_rows($course_list_sql_result) > 0) {
- while ($result_row = Database::fetch_array($course_list_sql_result)) {
+ while ($result_row = Database::fetch_array($course_list_sql_result)) {
$result_row['status'] = 5;
if (!in_array($result_row['code'], $courses)) {
$personal_course_list[] = $result_row;
@@ -2205,7 +2215,7 @@ class UserManager {
$personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url
WHERE s.id = $session_id AND scu.id_session = s.id AND ((scu.id_user=$user_id AND scu.status=2) OR s.id_coach = $user_id)
$where_access_url
- ORDER BY code";
+ ORDER BY code";
$course_list_sql_result = Database::query($personal_course_list_sql);
if (Database::num_rows($course_list_sql_result)>0) {
@@ -2218,14 +2228,14 @@ class UserManager {
}
}
}
-
+
if (api_is_drh()) {
- $session_list = SessionManager::get_sessions_followed_by_drh($user_id);
+ $session_list = SessionManager::get_sessions_followed_by_drh($user_id);
$session_list = array_keys($session_list);
- if (in_array($session_id, $session_list)) {
- $course_list = SessionManager::get_course_list_by_session_id($session_id);
+ if (in_array($session_id, $session_list)) {
+ $course_list = SessionManager::get_course_list_by_session_id($session_id);
if (!empty($course_list)) {
- foreach ($course_list as $course) {
+ foreach ($course_list as $course) {
$personal_course_list[] = $course;
}
}
@@ -2463,10 +2473,10 @@ class UserManager {
* @todo move this function somewhere else image.lib?
* @return obj image object
*/
- public static function resize_picture($file, $max_size_for_picture) {
+ public static function resize_picture($file, $max_size_for_picture) {
$temp = null;
if (file_exists($file)) {
- $temp = new Image($file);
+ $temp = new Image($file);
$image_size = $temp->get_image_size($file);
$width = $image_size['width'];
$height = $image_size['height'];
@@ -2476,13 +2486,13 @@ class UserManager {
$new_height = round($height * ($max_size_for_picture / $width));
$temp->resize($max_size_for_picture, $new_height, 0);
}
- } else { // height > $width
+ } else { // height > $width
if ($height >= $max_size_for_picture) {
// scale width
$new_width = round($width * ($max_size_for_picture / $height));
$temp->resize($new_width, $max_size_for_picture, 0);
}
- }
+ }
}
return $temp;
}
@@ -2522,22 +2532,22 @@ class UserManager {
$image_array_sys = self::get_user_picture_path_by_id($user_id, 'system', false, true);
$image_array = self::get_user_picture_path_by_id($user_id, 'web', false, true);
-
+
$file = $image_array_sys['dir'].$size_picture.$picture_file;
-
+
if (file_exists($file)) {
$picture['file'] = $image_array['dir'].$size_picture.$picture_file;
$picture['style'] = '';
if ($height > 0) {
$dimension = api_getimagesize($picture['file']);
$margin = (($height - $dimension['width']) / 2);
-
+
//@ todo the padding-top should not be here
- $picture['style'] = ' style="padding-top:'.$margin.'px; width:'.$dimension['width'].'px; height:'.$dimension['height'].'px;" ';
+ $picture['style'] = ' style="padding-top:'.$margin.'px; width:'.$dimension['width'].'px; height:'.$dimension['height'].'px;" ';
$picture['original_height'] = $dimension['width'];
$picture['original_width'] = $dimension['height'];
}
- } else {
+ } else {
$file = $image_array_sys['dir'].$picture_file;
if (file_exists($file) && !is_dir($file)) {
$picture['file'] = $image_array['dir'].$picture_file;
@@ -2875,8 +2885,8 @@ class UserManager {
UserManager::add_tag($tags,$user_id, $field_id);
}
return true;
- }
-
+ }
+
/**
* Returns a list of all admninistrators
* @author jmontoya
@@ -2932,17 +2942,17 @@ class UserManager {
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result,'ASSOC')) {
if (isset($return[$row['user_id']]) && !empty($return[$row['user_id']]['tag'])) {
- $row['tag'] = $return[$row['user_id']]['tag'].' '.Display::url($row['tag'] , api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'] , array('class'=>'tag'));
+ $row['tag'] = $return[$row['user_id']]['tag'].' '.Display::url($row['tag'] , api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'] , array('class'=>'tag'));
} else {
$row['tag'] = Display::url($row['tag'], api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'], array('class'=>'tag'));
}
- $return[$row['user_id']] = $row;
+ $return[$row['user_id']] = $row;
}
}
$keyword = $tag;
$sql = "SELECT u.user_id, u.username, firstname, lastname, email, picture_uri FROM $user_table u";
-
+
if (api_get_multiple_access_url()) {
$access_url_rel_user_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
@@ -2996,12 +3006,12 @@ class UserManager {
*/
public static function get_search_form($query) {
return '
-
';
- }
-
+ }
+
/**
* Shows the user menu
*/
@@ -3033,14 +3043,14 @@ class UserManager {
//we filter the courses from the URL
$join_access_url=$where_access_url='';
-
+
if (api_get_multiple_access_url()) {
$access_url_id = api_get_current_access_url_id();
-
+
$tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$join_access_url= "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= course.code";
$where_access_url=" AND access_url_id = $access_url_id ";
-
+
}
// Filter special courses
@@ -3173,7 +3183,7 @@ class UserManager {
* @param int user status (optional)
* @return array users
*/
- public static function get_users_followed_by_drh($hr_dept_id, $user_status = 0) {
+ public static function get_users_followed_by_drh($hr_dept_id, $user_status = 0) {
// Database Table Definitions
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_user_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
@@ -3189,16 +3199,16 @@ class UserManager {
}
if (api_get_multiple_access_url()) {
$sql = "SELECT u.user_id, u.username, u.lastname, u.firstname, u.email FROM $tbl_user u
- INNER JOIN $tbl_user_rel_user uru ON (uru.user_id = u.user_id) LEFT JOIN $tbl_user_rel_access_url a
- ON (a.user_id = u.user_id)
+ INNER JOIN $tbl_user_rel_user uru ON (uru.user_id = u.user_id) LEFT JOIN $tbl_user_rel_access_url a
+ ON (a.user_id = u.user_id)
WHERE friend_user_id = '$hr_dept_id' AND relation_type = '".USER_RELATION_TYPE_RRHH."' $condition_status AND access_url_id = ".api_get_current_access_url_id()."
";
} else {
$sql = "SELECT u.user_id, u.username, u.lastname, u.firstname, u.email FROM $tbl_user u
- INNER JOIN $tbl_user_rel_user uru ON uru.user_id = u.user_id AND friend_user_id = '$hr_dept_id' AND relation_type = '".USER_RELATION_TYPE_RRHH."' $condition_status
+ INNER JOIN $tbl_user_rel_user uru ON uru.user_id = u.user_id AND friend_user_id = '$hr_dept_id' AND relation_type = '".USER_RELATION_TYPE_RRHH."' $condition_status
";
}
-
+
$rs_assigned_users = Database::query($sql);
if (Database::num_rows($rs_assigned_users) > 0) {
while ($row_assigned_users = Database::fetch_array($rs_assigned_users)) {
@@ -3216,18 +3226,18 @@ class UserManager {
* @param int affected rows
**/
public static function suscribe_users_to_hr_manager($hr_dept_id, $users_id) {
-
+
// Database Table Definitions
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_user_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
- $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
+ $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$hr_dept_id = intval($hr_dept_id);
$affected_rows = 0;
-
- if (api_get_multiple_access_url()) {
+
+ if (api_get_multiple_access_url()) {
//Deleting assigned users to hrm_id
- $sql = "SELECT s.user_id FROM $tbl_user_rel_user s INNER JOIN $tbl_user_rel_access_url a ON (a.user_id = s.user_id) WHERE friend_user_id = $hr_dept_id AND relation_type = '".USER_RELATION_TYPE_RRHH."' AND access_url_id = ".api_get_current_access_url_id()."";
+ $sql = "SELECT s.user_id FROM $tbl_user_rel_user s INNER JOIN $tbl_user_rel_access_url a ON (a.user_id = s.user_id) WHERE friend_user_id = $hr_dept_id AND relation_type = '".USER_RELATION_TYPE_RRHH."' AND access_url_id = ".api_get_current_access_url_id()."";
} else {
$sql = "SELECT user_id FROM $tbl_user_rel_user WHERE friend_user_id = $hr_dept_id AND relation_type = '".USER_RELATION_TYPE_RRHH."' ";
}
@@ -3319,7 +3329,7 @@ class UserManager {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql = 'SELECT path_certificate FROM '.$table_certificate.' WHERE cat_id="'.Database::escape_string($cat_id).'" AND user_id="'.Database::escape_string($user_id).'" ';
$rs = Database::query($sql);
- $row = Database::fetch_array($rs);
+ $row = Database::fetch_array($rs);
if ($row['path_certificate']=='' || is_null($row['path_certificate'])) {
return false;
} else {
@@ -3337,31 +3347,31 @@ class UserManager {
$tbl_grade_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$tbl_grade_category = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$session_id = api_get_session_id();
-
+
if (empty($session_id)) {
$session_condition = ' AND (session_id = "" OR session_id = 0 OR session_id IS NULL )';
} else {
$session_condition = " AND session_id = $session_id";
- }
+ }
//Getting gradebook score
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be.inc.php';
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/scoredisplay.class.php';
-
+
$sql = 'SELECT * FROM '.$tbl_grade_certificate.' WHERE cat_id = (SELECT id FROM '.$tbl_grade_category.' WHERE course_code = "'.Database::escape_string($course_code).'" '.$session_condition.' LIMIT 1 ) AND user_id='.Database::escape_string($user_id);
-
- $rs = Database::query($sql);
+
+ $rs = Database::query($sql);
if (Database::num_rows($rs) > 0) {
- $row = Database::fetch_array($rs,'ASSOC');
+ $row = Database::fetch_array($rs,'ASSOC');
$score = $row['score_certificate'];
$category_id = $row['cat_id'];
- $cat = Category::load($category_id);
+ $cat = Category::load($category_id);
$displayscore = ScoreDisplay::instance();
$grade = '';
if (isset($cat) && $displayscore->is_custom()) {
- $grade = $displayscore->display_score(array($score, $cat[0]->get_weight()), SCORE_DIV_PERCENT_WITH_CUSTOM);
+ $grade = $displayscore->display_score(array($score, $cat[0]->get_weight()), SCORE_DIV_PERCENT_WITH_CUSTOM);
} else {
- $grade = $displayscore->display_score(array($score, $cat[0]->get_weight()));
- }
+ $grade = $displayscore->display_score(array($score, $cat[0]->get_weight()));
+ }
$row['grade'] = $grade;
return $row;
}
@@ -3422,7 +3432,7 @@ class UserManager {
}
return $result;
}
-
+
/**
* This function returns an icon path that represents the favicon of the website of which the url given. Defaults to the current Chamilo favicon
* @param string URL of website where to look for favicon.ico
@@ -3436,7 +3446,7 @@ class UserManager {
$url = $url2;
if (empty($url)) {
$url = api_get_access_url(api_get_current_access_url_id());
- $url = $url[0];
+ $url = $url[0];
}
}
if (!empty($url)) {
@@ -3445,15 +3455,15 @@ class UserManager {
}
return $icon_link;
}
-
+
/**
- *
+ *
* @param int student id
* @param int years
* @param bool show warning_message
* @param bool return_timestamp
- */
+ */
public static function delete_inactive_student($student_id, $years = 2, $warning_message = false, $return_timestamp = false) {
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$sql = 'SELECT login_date FROM ' . $tbl_track_login . ' WHERE login_user_id = ' . intval($student_id) . ' ORDER BY login_date DESC LIMIT 0,1';
@@ -3473,16 +3483,16 @@ class UserManager {
} else {
$timestamp = api_strtotime($last_login_date);
$currentTimestamp = time();
-
+
//If the last connection is > than 7 days, the text is red
//345600 = 7 days in seconds 63072000= 2 ans
-
+
// if ($currentTimestamp - $timestamp > 184590 )
if ($currentTimestamp - $timestamp > $inactive_time && UserManager::delete_user($student_id )) {
- Display :: display_normal_message(get_lang('UserDeleted'));
- //avec validation:
- // $result .= ''.Display::return_icon('delete.gif', get_lang('Delete')).'';
- echo '','id',$student_id ,':',$last_login_date,'
';
+ Display :: display_normal_message(get_lang('UserDeleted'));
+ //avec validation:
+ // $result .= ''.Display::return_icon('delete.gif', get_lang('Delete')).'';
+ echo '','id',$student_id ,':',$last_login_date,'
';
}
}
}
@@ -3490,28 +3500,28 @@ class UserManager {
}
return false;
}
-
+
function set_extra_fields_in_form($form, $extra_data, $form_name, $admin_permissions = false) {
$user_id = intval($user_id);
-
+
// EXTRA FIELDS
$extra = UserManager::get_extra_fields(0, 50, 5, 'ASC');
$jquery_ready_content = null;
-
+
foreach ($extra as $field_details) {
-
+
if (!$admin_permissions) {
if ($field_details[6] == 0) {
continue;
}
}
-
+
switch($field_details[2]) {
case self::USER_FIELD_TYPE_TEXT:
$form->addElement('text', 'extra_'.$field_details[1], $field_details[3], array('size' => 40));
$form->applyFilter('extra_'.$field_details[1], 'stripslashes');
$form->applyFilter('extra_'.$field_details[1], 'trim');
-
+
if (!$admin_permissions) {
if ($field_details[7] == 0) $form->freeze('extra_'.$field_details[1]);
}
@@ -3540,7 +3550,7 @@ class UserManager {
$get_lang_variables = false;
if (in_array($field_details[1], array('mail_notify_message','mail_notify_invitation', 'mail_notify_group_message'))) {
$get_lang_variables = true;
- }
+ }
$options = array();
foreach($field_details[9] as $option_id => $option_details) {
//$options[$option_details[1]] = $option_details[2];
@@ -3600,7 +3610,7 @@ class UserManager {
$group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details[1], '', $values[0], '');
$group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details[1].'*', '', $values['*'], '');
$form->addGroup($group, 'extra_'.$field_details[1], $field_details[3], ' ');
-
+
if (!$admin_permissions) {
if ($field_details[7] == 0) $form->freeze('extra_'.$field_details[1]);
}
@@ -3679,7 +3689,7 @@ EOF;
$return['jquery_ready_content'] = $jquery_ready_content;
return $return;
}
-
+
function get_user_field_types() {
$types = array();
$types[self::USER_FIELD_TYPE_TEXT] = get_lang('FieldTypeText');
@@ -3703,7 +3713,7 @@ EOF;
if (!self::is_admin($user_id)) {
$sql = "INSERT INTO $table_admin SET user_id = '".$user_id."'";
Database::query($sql);
- }
+ }
}
function remove_user_admin($user_id) {
diff --git a/main/install/db_main.sql b/main/install/db_main.sql
index d707c0bfa5..874e06973e 100644
--- a/main/install/db_main.sql
+++ b/main/install/db_main.sql
@@ -714,6 +714,7 @@ VALUES
('extendedprofile_registrationrequired', 'mydiplomas', 'checkbox','User','false', 'ExtendedProfileRegistrationRequiredTitle','ExtendedProfileRegistrationRequiredComment', NULL, 'MyDiplomas', 0),
('extendedprofile_registrationrequired', 'myteach', 'checkbox','User','false', 'ExtendedProfileRegistrationRequiredTitle','ExtendedProfileRegistrationRequiredComment', NULL, 'MyTeach', 0),
('extendedprofile_registrationrequired', 'mypersonalopenarea', 'checkbox','User','false', 'ExtendedProfileRegistrationRequiredTitle','ExtendedProfileRegistrationRequiredComment', NULL, 'MyPersonalOpenArea', 0),
+('ldap_description', NULL, 'radio', 'LDAP', NULL, 'LdapDescriptionTitle', 'LdapDescriptionComment', NULL, NULL, 0),
('registration','phone','textfield','User','false','RegistrationRequiredFormsTitle','RegistrationRequiredFormsComment',NULL,'Phone', 0),
('add_users_by_coach',NULL,'radio','Session','false','AddUsersByCoachTitle','AddUsersByCoachComment',NULL,NULL, 0),
('extend_rights_for_coach',NULL,'radio','Security','false','ExtendRightsForCoachTitle','ExtendRightsForCoachComment',NULL,NULL, 0),
@@ -1209,7 +1210,7 @@ VALUES
('platform_unsubscribe_allowed', 'false', 'No'),
('activate_email_template', 'true', 'Yes'),
('activate_email_template', 'false', 'No'),
-('enable_iframe_inclusion', 'true', 'Yes'),
+ ('enable_iframe_inclusion', 'true', 'Yes'),
('enable_iframe_inclusion', 'false', 'No'),
('show_hot_courses', 'true', 'Yes'),
('show_hot_courses', 'false', 'No'),
@@ -1539,6 +1540,14 @@ CREATE TABLE IF NOT EXISTS access_url_rel_course (
PRIMARY KEY (access_url_id, course_code)
);
+
+DROP TABLE IF EXISTS access_url_rel_session;
+CREATE TABLE IF NOT EXISTS access_url_rel_session (
+ access_url_id int unsigned NOT NULL,
+ session_id int unsigned NOT NULL,
+ PRIMARY KEY (access_url_id, session_id)
+);
+
--
-- Table structure for table sys_calendar
--
diff --git a/main/mySpace/index.php b/main/mySpace/index.php
index e913ac2c18..6f4ff15703 100644
--- a/main/mySpace/index.php
+++ b/main/mySpace/index.php
@@ -120,15 +120,15 @@ global $_configuration;
if (api_is_allowed_to_create_course() || api_is_drh()) {
}
-if ($is_platform_admin) {
+if ($is_platform_admin) {
if ($view == 'admin') {
$title = get_lang('CoachList');
$menu_items[] = Display::url(Display::return_icon('teacher.png', get_lang('TeacherInterface'), array(), 32), api_get_self().'?view=teacher');
- $menu_items[] = Display::url(Display::return_icon('star_na.png', get_lang('AdminInterface'), array(), 32), api_get_self().'?view=admin');
- $menu_items[] = Display::url(Display::return_icon('quiz.png', get_lang('ExamTracking'), array(), 32), api_get_path(WEB_CODE_PATH).'tracking/exams.php');
- $menu_items[] = Display::url(Display::return_icon('statistics.png', get_lang('CurrentCoursesReport'), array(), 32), api_get_path(WEB_CODE_PATH).'mySpace/current_courses.php');
- } else {
- $menu_items[] = Display::return_icon('teacher_na.png', get_lang('TeacherInterface'), array(), 32);
+ $menu_items[] = Display::url(Display::return_icon('star_na.png', get_lang('AdminInterface'), array(), 32), api_get_self().'?view=admin');
+ $menu_items[] = Display::url(Display::return_icon('quiz.png', get_lang('ExamTracking'), array(), 32), api_get_path(WEB_CODE_PATH).'tracking/exams.php');
+ $menu_items[] = Display::url(Display::return_icon('statistics.png', get_lang('CurrentCoursesReport'), array(), 32), api_get_path(WEB_CODE_PATH).'mySpace/current_courses.php');
+ } else {
+ $menu_items[] = Display::return_icon('teacher_na.png', get_lang('TeacherInterface'), array(), 32);
$menu_items[] = Display::url(Display::return_icon('star.png', get_lang('AdminInterface'), array(), 32), api_get_self().'?view=admin');
$menu_items[] = Display::url(Display::return_icon('quiz.png', get_lang('ExamTracking'), array(), 32), api_get_path(WEB_CODE_PATH).'tracking/exams.php');
$menu_items[] = Display::url(Display::return_icon('statistics.png', get_lang('CurrentCoursesReport'), array(), 32), api_get_path(WEB_CODE_PATH).'mySpace/current_courses.php');
@@ -147,47 +147,47 @@ echo '';
echo '
';
-if ($display == 'useroverview' || $display == 'sessionoverview' || $display == 'courseoverview') {
+if ($display == 'useroverview' || $display == 'sessionoverview' || $display == 'courseoverview') {
echo '';
echo Display::return_icon("export_csv.png", get_lang('ExportAsCSV'),array(), 32);
- echo '';
+ echo '';
}
echo ''.Display::return_icon('printer.png', get_lang('Print'),'',ICON_SIZE_MEDIUM).'';
echo '';
-
+
if (!empty($session_id)) {
echo '
'.Display::return_icon('back.png', get_lang('Back'),'',ICON_SIZE_MEDIUM).'';
} else {
echo Display::url(Display::return_icon('stats.png', get_lang('MyStats'),'',ICON_SIZE_MEDIUM),api_get_path(WEB_CODE_PATH)."auth/my_progress.php" );
-}
+}
// Actions menu
$nb_menu_items = count($menu_items);
if (empty($session_id)) {
if ($nb_menu_items > 1) {
foreach ($menu_items as $key => $item) {
- echo $item;
+ echo $item;
}
}
-}
+}
echo '
';
if (empty($session_id)) {
-
+
//Getting courses followed by a coach (No session courses)
- $courses = CourseManager::get_course_list_as_coach($user_id, false);
-
+ $courses = CourseManager::get_course_list_as_coach($user_id, false);
+
if (isset($courses[0])) {
- $courses = $courses[0];
+ $courses = $courses[0];
}
-
+
//Getting students from courses and courses in sessions (For show the total students that the user follows)
$students = CourseManager::get_user_list_from_courses_as_coach($user_id);
-
+
// Sessions for the coach
- $sessions = Tracking::get_sessions_coached_by_user($user_id);
-
- //If is drh
+ $sessions = Tracking::get_sessions_coached_by_user($user_id);
+
+ //If is drh
if ($is_drh) {
// get data for human resources manager
$students = array_keys(UserManager::get_users_followed_by_drh($user_id, STUDENT));
@@ -196,25 +196,25 @@ if (empty($session_id)) {
$courses[$course['code']] = $course['code'];
}
}
-
-
+
+
//Courses for the user
$count_courses = count($courses);
-
+
//Sessions for the user
$count_sessions = count($sessions);
-
- //Students
+
+ //Students
$nb_students = count($students);
-
-
+
+
$total_time_spent = 0;
$total_courses = 0;
$avg_total_progress = 0;
$avg_results_to_exercises = 0;
$nb_inactive_students = 0;
$nb_posts = $nb_assignments = 0;
-
+
if (!empty($students))
foreach ($students as $student_id) {
// inactive students
@@ -226,7 +226,7 @@ if (empty($session_id)) {
} else {
$nb_inactive_students++;
}
-
+
$total_time_spent += Tracking :: get_time_spent_on_the_platform($student_id);
$total_courses += Tracking :: count_course_per_student($student_id);
$avg_student_progress = $avg_student_score = 0;
@@ -238,10 +238,10 @@ if (empty($session_id)) {
$nb_assignments += Tracking :: count_student_assignments($student_id, $course_code);
$avg_student_progress += Tracking :: get_avg_student_progress($student_id, $course_code);
$myavg_temp = Tracking :: get_avg_student_score($student_id, $course_code);
-
+
if (is_numeric($myavg_temp))
$avg_student_score += $myavg_temp;
-
+
if ($nb_posts !== null && $nb_assignments !== null && $avg_student_progress !== null && $avg_student_score !== null) {
//if one of these scores is null, it means that we had a problem connecting to the right database, so don't count it in
$nb_courses_student++;
@@ -251,16 +251,16 @@ if (empty($session_id)) {
// average progress of the student
$avg_student_progress = $nb_courses_student ?$avg_student_progress / $nb_courses_student:0;
$avg_total_progress += $avg_student_progress;
-
+
// average test results of the student
$avg_student_score = $avg_student_score?$avg_student_score / $nb_courses_student:0;
$avg_results_to_exercises += $avg_student_score;
}
if ($nb_students > 0 && $view != 'admin') {
-
+
echo Display::page_subheader('
'.get_lang('Students').' ('.$nb_students.')');
-
+
// average progress
$avg_total_progress = $avg_total_progress / $nb_students;
// average results to the tests
@@ -273,7 +273,7 @@ if (empty($session_id)) {
$nb_assignments = $nb_assignments / $nb_students;
// average posts
$nb_posts = $nb_posts / $nb_students;
-
+
if ($export_csv) {
//csv part
$csv_content[] = array(get_lang('Students', ''));
@@ -288,7 +288,7 @@ if (empty($session_id)) {
} else {
// html part
echo '
-
+
| '.get_lang('InactivesStudents').' |
@@ -322,7 +322,7 @@ if (empty($session_id)) {
'.get_lang('SeeStudentList').'
';
}
-
+
} else {
$avg_total_progress = null;
$avg_results_to_exercises = null;
@@ -332,8 +332,8 @@ if (empty($session_id)) {
$nb_posts = null;
}
} else {
- $courses = Tracking::get_courses_followed_by_coach($user_id, $session_id);
-
+ $courses = Tracking::get_courses_followed_by_coach($user_id, $session_id);
+
//Courses for the user
$count_courses = count($courses);
}
@@ -353,12 +353,12 @@ if ($count_courses || $count_sessions) {
}
if (api_is_allowed_to_create_course() && $view == 'teacher') {
-
+
//Courses
if ($count_courses) {
-
- echo Display::page_subheader($title);
-
+
+ echo Display::page_subheader($title);
+
$table = new SortableTable('courses_my_space', 'get_number_of_courses', array('MySpace','get_course_data'));
$parameters['view'] = 'teacher';
$parameters['class'] = 'data_table';
@@ -397,12 +397,12 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') {
$all_data = array();
foreach ($sessions as $session) {
-
+
$count_courses_in_session = count(Tracking::get_courses_followed_by_coach($user_id, $session['id']));
$row = array();
$row[] = $session['name'];
- if ($session['date_start'] != '0000-00-00' && $session['date_end'] != '0000-00-00') {
+ if ($session['date_start'] != '0000-00-00' && $session['date_end'] != '0000-00-00') {
$row[] = get_lang('From').' '.api_format_date($session['date_start'], DATE_FORMAT_SHORT).' '.get_lang('Until').' '.api_format_date($session['date_end'], DATE_FORMAT_SHORT);
} else {
$row[] = ' - ';
@@ -433,9 +433,9 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') {
$table -> setColAttributes(1, array('align' => 'center'));
$table -> setColAttributes(2, array('align' => 'center'));
$table -> setColAttributes(3, array('align' => 'center'));
-
+
/* Start session over view stats */
-
+
$nb_sessions_past = $nb_sessions_future = $nb_sessions_current = 0;
$courses = array();
foreach ($sessions as $session) {
@@ -456,15 +456,15 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') {
}
$courses = array_merge($courses, Tracking::get_courses_list_from_session($session['id']));
}
-
+
if ($nb_sessions > 0) {
$nb_courses_per_session = round(count($courses) / $nb_sessions, 2);
$nb_students_per_session = round($nb_students / $nb_sessions, 2);
} else {
$nb_courses_per_session = null;
$nb_students_per_session = null;
- }
-
+ }
+
if ($export_csv) {
//csv part
$csv_content[] = array(get_lang('Sessions', ''));
@@ -477,7 +477,7 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') {
} else {
// html part
echo '
-
+
| '.get_lang('NbActiveSessions').' |
@@ -499,28 +499,28 @@ if (api_is_allowed_to_create_course() && $view == 'teacher') {
'.get_lang('NbCoursesPerSession').' |
'.(is_null($nb_courses_per_session) ? '' : $nb_courses_per_session).' |
-
+
';
}
- /* End session overview */
+ /* End session overview */
$table -> display();
}
}
if ($is_platform_admin && $view == 'admin' && $display != 'yourstudents') {
-
+
echo '
'.get_lang('DisplayCoaches').' | ';
echo '
'.get_lang('DisplayUserOverview').'';
if ($display == 'useroverview') {
echo ' (
'.get_lang('ExportUserOverviewOptions').' )';
}
echo ' |
'.get_lang('DisplaySessionOverview').'';
- echo ' |
'.get_lang('DisplayCourseOverview').'';
- echo ' |
'.get_lang('LPQuestionListResults').'';
+ echo ' |
'.get_lang('DisplayCourseOverview').'';
+ echo ' |
'.get_lang('LPQuestionListResults').'';
echo ' |
'.get_lang('LPExerciseResultsBySession').'';
-
-
+
+
echo '
';
if ($display === 'useroverview') {
MySpace::display_tracking_user_overview();
@@ -589,6 +589,16 @@ if ($is_platform_admin && $view == 'admin' && $display != 'yourstudents') {
WHERE scu.id_user=user_id AND scu.status=2 AND login_user_id=user_id
GROUP BY user_id ";
+ if ($_configuration['multiple_access_urls']) {
+ $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $access_url_id = api_get_current_access_url_id();
+ if ($access_url_id != -1) {
+ $sqlCoachs = "SELECT DISTINCT scu.id_user as id_coach, user_id, lastname, firstname, MAX(login_date) as login_date
+ FROM $tbl_user, $tbl_session_course_user scu, $tbl_track_login , $tbl_session_rel_access_url session_rel_url
+ WHERE scu.id_user=user_id AND scu.status=2 AND login_user_id=user_id AND access_url_id = $access_url_id AND session_rel_url.session_id=id_session
+ GROUP BY user_id ";
+ }
+ }
if (!empty($order[$tracking_column])) {
$sqlCoachs .= "ORDER BY ".$order[$tracking_column]." ".$tracking_direction;
}
@@ -606,6 +616,18 @@ if ($is_platform_admin && $view == 'admin' && $display != 'yourstudents') {
GROUP BY user_id
ORDER BY login_date '.$tracking_direction;
+ if ($_configuration['multiple_access_urls']) {
+ $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+ $access_url_id = api_get_current_access_url_id();
+ if ($access_url_id != -1) {
+ $sql_session_coach = 'SELECT session.id_coach, user_id, lastname, firstname, MAX(login_date) as login_date
+ FROM '.$tbl_user.','.$tbl_sessions.' as session,'.$tbl_track_login.' , '.$tbl_session_rel_access_url.' as session_rel_url
+ WHERE id_coach=user_id AND login_user_id=user_id AND access_url_id = '.$access_url_id.' AND session_rel_url.session_id=session.id
+ GROUP BY user_id
+ ORDER BY login_date '.$tracking_direction;
+ }
+ }
+
$result_sessions_coach = Database::query($sql_session_coach);
$total_no_coaches += Database::num_rows($result_sessions_coach);
while ($coach = Database::fetch_array($result_sessions_coach)) {