skala
Julio Montoya 13 years ago
commit b1e441dce9
  1. 4
      main/admin/user_add.php
  2. 44
      main/auth/my_progress.php
  3. 3
      main/exercice/exercise.lib.php
  4. 32
      main/inc/lib/auth.lib.php
  5. 68
      main/inc/lib/course.lib.php
  6. 16
      main/inc/lib/events.lib.inc.php
  7. 1
      main/inc/lib/tracking.lib.php

@ -25,7 +25,7 @@ $is_platform_admin = api_is_platform_admin() ? 1 : 0;
$message = null;
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
$htmlHeadXtra[] = '<link href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
$htmlHeadXtra[] = '<link href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
$htmlHeadXtra[] = '
<script>
<!--
@ -270,7 +270,7 @@ if( $form->validate()) {
}
if ($user['radio_expiration_date'] == '1') {
$expiration_date = $user['expiration_date'];
$expiration_date = $user['expiration_date'];
} else {
$expiration_date = '0000-00-00 00:00:00';
}

@ -7,7 +7,6 @@
/**
* Code
*/
// name of the language file that needs to be included
$language_file = array('registration', 'tracking', 'exercice', 'admin', 'learnpath');
@ -15,7 +14,7 @@ $cidReset = true;
require_once '../inc/global.inc.php';
require_once api_get_path(SYS_CODE_PATH).'newscorm/learnpath.class.php';
require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
$this_section = SECTION_TRACKING;
$nameTools = get_lang('MyProgress');
@ -26,20 +25,20 @@ $htmlHeadXtra[] = api_get_js('jquery.timelinr-0.9.5.js');
$htmlHeadXtra[] = '
<script language="javascript">
$(function() {
$(function() {
$().timelinr();
$(".dialog").dialog("destroy");
$(".dialog").dialog("destroy");
$(".dialog").dialog({
autoOpen: false,
show: "blind",
show: "blind",
resizable: false,
height:300,
width:550,
modal: true
});
});
$(".opener").click(function() {
var my_id = $(this).attr(\'id\');
var my_id = $(this).attr(\'id\');
var big_image = \'#main_graph_\' + my_id;
$( big_image ).dialog("open");
return false;
@ -54,32 +53,31 @@ $course_user_list = CourseManager::get_courses_list_by_user_id($user_id);
$dates = $issues = '';
if (!empty($course_user_list)) {
$items = MySpace::get_connections_from_course_list($user_id, $course_user_list);
$items = MySpace::get_connections_from_course_list($user_id, $course_user_list);
$first = null;
$last = null;
$last_item = count($items);
$count = 1;
foreach ($items as $result) {
$login = $result['login'];
$login = $result['login'];
if ($count == 1) {
$first = '<a href="#'.$login.'">'. get_lang('First').'</a>';
$first = '<a href="#'.$login.'">'.get_lang('First').'</a>';
}
if ($count == $last_item) {
$last = '<a href="#'.$login.'">'. get_lang('Last').'</a>';
}
$last = '<a href="#'.$login.'">'.get_lang('Last').'</a>';
}
$course_info = api_get_course_info($result['course_code']);
$course_image = '<img src="'.$course_info['course_image'].'">';
$dates .= '<li><a href="#'.$login.'">'. api_get_utc_datetime($login).'</a></li>';
$dates .= '<li><a href="#'.$login.'">'.api_get_utc_datetime($login).'</a></li>';
$issues .= '<li id ="'.$login.'">
<div class="row">
<div class="span2"><div class="thumbnail">'.$course_image.'</div>
</div>
<div class="span3">'.sprintf(get_lang('YouHaveEnteredTheCourseXInY') , $result['course_code'], api_convert_and_format_date($login, DATE_FORMAT_LONG)).'</div>
<div class="span3">'.sprintf(get_lang('YouHaveEnteredTheCourseXInY'), $result['course_code'], api_convert_and_format_date($login, DATE_FORMAT_LONG)).'</div>
</li>';
$count++;
}
}
}
$content .= Tracking::show_user_progress(api_get_user_id());
@ -94,18 +92,15 @@ if (!empty($dates)) {
$content .= '<div id="my_timeline">
<div class="actions">
<a href="#" id="prev"></a> <!-- optional -->
<a href="#" id="next"></a> <!-- optional -->
<a href="#" id="next"></a> <!-- optional -->
</div>
<ul id="dates">
'.$dates.'
'.$dates.'
</ul>
<ul id="issues">
'.$issues.'
</ul>
</ul>
</div></div>';
}
@ -115,7 +110,6 @@ if (empty($content)) {
$tpl = new Template($tool_name);
//$tpl->assign('actions', $actions);
$tpl->assign('message', $message);
$tpl->assign('content', $content);
$tpl->display_one_col_template();

@ -1591,12 +1591,11 @@ function get_best_attempt_in_course($exercise_id, $course_code, $session_id) {
* Get the best score in a exercise (NO Exercises in LPs )
*/
function get_best_attempt_by_user($user_id, $exercise_id, $course_code, $session_id) {
$user_results = get_all_exercise_results($exercise_id, $course_code, $session_id, false);
$user_results = get_all_exercise_results($exercise_id, $course_code, $session_id, false, $user_id);
$best_score_data = array();
$best_score = 0;
if (!empty($user_results)) {
foreach($user_results as $result) {
if ($result['exe_user_id'] != $user_id) continue;
if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) {
$score = $result['exe_result']/$result['exe_weighting'];
if ($score >= $best_score) {

@ -21,7 +21,7 @@ class Auth {
* Constructor
*/
public function __construct() {
}
/**
@ -183,16 +183,18 @@ class Auth {
}
}
foreach ($user_courses as $key => $course) {
$target_course = array();
foreach ($user_courses as $count => $course) {
if ($course2move == $course['code']) {
// source_course is the course where we clicked the up or down icon
$source_course = $course;
// target_course is the course before/after the source_course (depending on the up/down icon)
if ($direction == 'up') {
$target_course = $user_courses[$key - 1];
$target_course = $user_courses[$count - 1];
} else {
$target_course = $user_courses[$key + 1];
$target_course = $user_courses[$count + 1];
}
break;
}
}
@ -444,7 +446,7 @@ class Auth {
// Get course list auto-register
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON tcfv.field_id = tcf.id
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON tcfv.field_id = tcf.id
WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 ";
$special_course_result = Database::query($sql);
@ -472,14 +474,14 @@ class Auth {
$url_access_id = api_get_current_access_url_id();
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT COUNT(*) FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code)
$sql = "SELECT COUNT(*) FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code)
WHERE access_url_id = $url_access_id ";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
$sql = "SELECT course.id FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
WHERE access_url_id = $url_access_id AND
$sql = "SELECT course.id FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
WHERE access_url_id = $url_access_id AND
RAND()*$num_records< $random_value
$without_special_courses ORDER BY RAND() LIMIT 0, $random_value";
} else {
@ -555,7 +557,7 @@ class Auth {
$TABLE_COURSE_FIELD_VALUE = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
// get course list auto-register
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON tcfv.field_id = tcf.id
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON tcfv.field_id = tcf.id
WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 ";
$special_course_result = Database::query($sql);
@ -616,7 +618,7 @@ class Auth {
public function subscribe_user($course_code) {
$user_id = api_get_user_id();
$all_course_information = CourseManager::get_course_information($course_code);
if ($all_course_information['registration_code'] == '' || $_POST['course_registration_code'] == $all_course_information['registration_code']) {
if (api_is_platform_admin()) {
$status_user_in_new_course = COURSEMANAGER;
@ -633,7 +635,7 @@ class Auth {
$message = get_lang('EnrollToCourseSuccessful');
} else {
$message = get_lang('ErrorContactPlatformAdmin');
}
}
return array('message' => $message);
} else {
if (isset($_POST['course_registration_code']) && $_POST['course_registration_code'] != $all_course_information['registration_code']) {
@ -641,11 +643,11 @@ class Auth {
}
$message = get_lang('CourseRequiresPassword') . '<br />';
$message .= $all_course_information['title'].' ('.$all_course_information['visual_code'].') ';
$action = api_get_path(WEB_CODE_PATH) . "auth/courses.php?action=subscribe_user_with_password&sec_token=" . $_SESSION['sec_token'];
$action = api_get_path(WEB_CODE_PATH) . "auth/courses.php?action=subscribe_user_with_password&sec_token=" . $_SESSION['sec_token'];
$form = new FormValidator('subscribe_user_with_password', 'post', $action);
$form->addElement('hidden', 'sec_token', $_SESSION['sec_token']);
$form->addElement('hidden', 'subscribe_user_with_password', $all_course_information['code']);
$form->addElement('hidden', 'subscribe_user_with_password', $all_course_information['code']);
$form->addElement('text', 'course_registration_code');
$form->addElement('button', 'submit', get_lang('SubmitRegistrationCode'));
$content = $form->return_form();

@ -2045,57 +2045,49 @@ class CourseManager {
$TABLECOURSE = Database::get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$course_title = Database::result(Database::query('SELECT title FROM '.$TABLECOURSE.
' WHERE code="'.$course_code.'"'), 0, 0);
$course_title = Database::result(Database::query('SELECT title FROM '.$TABLECOURSE.' WHERE code="'.$course_code.'"'), 0, 0);
$result = Database::query('SELECT course.code as code, course.title as title, cu.sort as sort FROM '.$TABLECOURSUSER.' as cu, '.$TABLECOURSE.' as course
WHERE course.code = cu.course_code
AND user_id = "'.$user_id.'"
AND cu.relation_type<>'.COURSE_RELATION_TYPE_RRHH.'
AND user_course_cat=0 ORDER BY cu.sort');
$sql = 'SELECT course.code as code, course.title as title, cu.sort as sort FROM '.$TABLECOURSUSER.' as cu, '.$TABLECOURSE.' as course
WHERE course.code = cu.course_code AND user_id = "'.$user_id.'" AND
cu.relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND
user_course_cat = 0
ORDER BY cu.sort';
$result = Database::query($sql);
$course_title_precedent = '';
$counter = 0;
$course_found = false;
$course_sort = 1;
while ($courses = Database::fetch_array($result)){
if ($course_title_precedent == '') {
$course_title_precedent = $courses['title'];
}
if (api_strcasecmp($course_title_precedent, $course_title) < 0) {
$course_found = true;
$course_sort = $courses['sort'];
if (Database::num_rows($result) > 0) {
while ($courses = Database::fetch_array($result)) {
if ($course_title_precedent == '') {
$course_title_precedent = $courses['title'];
}
if (api_strcasecmp($course_title_precedent, $course_title) < 0) {
$course_found = true;
$course_sort = $courses['sort'];
if ($counter == 0) {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort > "'.$course_sort.'"';
$course_sort++;
} else {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort >= "'.$course_sort.'"';
}
Database::query($sql);
break;
if ($counter == 0) {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort > "'.$course_sort.'"';
$course_sort++;
} else {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort >= "'.$course_sort.'"';
$course_title_precedent = $courses['title'];
}
Database::query($sql);
break;
} else {
$course_title_precedent = $courses['title'];
$counter++;
}
$counter++;
}
// We must register the course in the beginning of the list
if (Database::num_rows($result) > 0 && !$course_found) {
$course_sort = Database::result(Database::query('SELECT min(sort) as min_sort FROM '.$TABLECOURSUSER.
' WHERE user_id="'.$user_id.'" AND user_course_cat="0"'), 0, 0);
Database::query('UPDATE '.$TABLECOURSUSER.' SET sort = sort+1
WHERE user_id= "'.$user_id.'" AND user_course_cat="0"');
// We must register the course in the beginning of the list
if (!$course_found) {
$course_sort = Database::result(Database::query('SELECT min(sort) as min_sort FROM '.$TABLECOURSUSER.' WHERE user_id="'.$user_id.'" AND user_course_cat="0"'), 0, 0);
Database::query('UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND user_course_cat="0"');
}
}
return $course_sort;
}

@ -959,15 +959,27 @@ function delete_all_incomplete_attempts($user_id, $exercise_id, $course_code, $s
* @return array with the results
*
*/
function get_all_exercise_results($exercise_id, $course_code, $session_id = 0, $load_question_list = true) {
function get_all_exercise_results($exercise_id, $course_code, $session_id = 0, $load_question_list = true, $user_id = null) {
$TABLETRACK_EXERCICES = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$TBL_TRACK_ATTEMPT = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_code = Database::escape_string($course_code);
$exercise_id = intval($exercise_id);
$session_id = intval($session_id);
$user_condition = null;
if (!empty($user_id)) {
$user_id = intval($user_id);
$user_condition = "AND exe_user_id = $user_id ";
}
$sql = "SELECT * FROM $TABLETRACK_EXERCICES
WHERE status = '' AND exe_cours_id = '$course_code' AND exe_exo_id = '$exercise_id' AND session_id = $session_id AND orig_lp_id =0 AND orig_lp_item_id = 0 ORDER BY exe_id";
WHERE status = '' AND
exe_cours_id = '$course_code' AND
exe_exo_id = '$exercise_id' AND
session_id = $session_id AND
orig_lp_id =0 AND
orig_lp_item_id = 0
$user_condition
ORDER BY exe_id";
$res = Database::query($sql);
$list = array();
while($row = Database::fetch_array($res,'ASSOC')) {

@ -2649,6 +2649,7 @@ class Tracking {
if (!empty($weighting) && intval($weighting) != 0) {
$my_score = $score/$weighting;
}
//@todo this function slows the page
$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']]);

Loading…
Cancel
Save