Julio Montoya 12 years ago
parent
commit
b1e441dce9

+ 2 - 2
main/admin/user_add.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';
 		}

+ 19 - 25
main/auth/my_progress.php

@@ -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();

+ 1 - 2
main/exercice/exercise.lib.php

@@ -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) {

+ 17 - 15
main/inc/lib/auth.lib.php

@@ -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();

+ 30 - 38
main/inc/lib/course.lib.php

@@ -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;
     }
 

+ 14 - 2
main/inc/lib/events.lib.inc.php

@@ -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')) {

+ 1 - 0
main/inc/lib/tracking.lib.php

@@ -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']]);