Browse Source

Filling the track_e_exercices.orig_lp_item_view_id field see #3188

Julio Montoya 14 years ago
parent
commit
2d601c19c1
1 changed files with 49 additions and 1 deletions
  1. 49 1
      main/install/update-db-1.8.7-1.8.8.inc.php

+ 49 - 1
main/install/update-db-1.8.7-1.8.8.inc.php

@@ -245,8 +245,56 @@ if (defined('SYSTEM_INSTALLATION')) {
                                 error_log('Error in '.$query.': '.Database::error());
                             }
                         }
-                    }
+                    }                    
+                    
+                    $table_lp_item_view = $row_course['db_name'].".lp_item_view";
+                    $table_lp_view = $row_course['db_name'].".lp_view";
+                    $table_lp_item = $row_course['db_name'].".lp_item";                                     
 
+                    if ($singleDbForm) {
+                        $table_lp_item_view = "$prefix{$row_course['db_name']}_lp_item_view";
+                        $table_lp_view = "$prefix{$row_course['db_name']}_lp_view";
+                        $table_lp_item = "$prefix{$row_course['db_name']}_lp_item";                                              
+                    }                    
+                    
+                    // Filling the track_e_exercices.orig_lp_item_view_id field  in order to have better traceability in exercises included in a LP see #3188
+                                     
+                    $query = "SELECT DISTINCT path as exercise_id, lp_item_id, lp_view_id, user_id, v.lp_id 
+                              FROM $table_lp_item_view iv INNER JOIN  $table_lp_view v  ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON  i.id = lp_item_id
+                              WHERE item_type = 'quiz'";
+                    $result = Database::query($query);
+                    
+                    if (Database::num_rows($result) > 0) {
+                        while ($row = Database::fetch_array($result,'ASSOC')) {                            
+                            $sql = "SELECT exe_id FROM $dbNameForm.track_e_exercices 
+                                    WHERE exe_user_id = {$row['user_id']} AND 
+                                    exe_cours_id = '{$row_course['code']}' AND 
+                                    exe_exo_id = {$row['exercise_id']}  AND
+                                    orig_lp_id = {$row['lp_id']}  AND 
+                                    orig_lp_item_id = {$row['lp_item_id']} ";
+                            $sub_result = Database::query($sql);
+                            $exe_list = array();
+                            while ($sub_row = Database::fetch_array($sub_result,'ASSOC')) {
+                                $exe_list[] = $sub_row['exe_id'];             
+                            }
+                            
+                            $sql = "SELECT iv.id, iv.view_count
+                                      FROM $table_lp_item_view iv INNER JOIN  $table_lp_view v  ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON  i.id = lp_item_id
+                                      WHERE item_type = 'quiz' AND user_id =  {$row['user_id']} AND path = {$row['exercise_id']} ";
+                            $sub_result = Database::query($sql);
+                            $lp_item_view_id_list = array();
+                            while ($sub_row = Database::fetch_array($sub_result,'ASSOC')) {
+                                $lp_item_view_id_list[] = $sub_row['id'];             
+                            } 
+                            $i = 0;
+                            foreach($exe_list as $exe_id) {       
+                                $lp_item_view_id = $lp_item_view_id_list[$i];                         
+                                $update = "UPDATE $dbNameForm.track_e_exercices SET orig_lp_item_view_id  = '$lp_item_view_id' WHERE exe_id = $exe_id ";                                
+                                Database::query($update);                                
+                                $i++;
+                            }                            
+                        }            
+                    }
                 }
             }