diff --git a/main/exercice/exercise.class.php b/main/exercice/exercise.class.php index 235cad7ad6..66acaf5965 100755 --- a/main/exercice/exercise.class.php +++ b/main/exercice/exercise.class.php @@ -1763,6 +1763,8 @@ class Exercise $safe_lp_item_id = intval($safe_lp_item_id); $safe_lp_item_view_id = intval($safe_lp_item_view_id); + $trackValues = array(); + if (empty($safe_lp_id)) { $safe_lp_id = 0; } @@ -1773,19 +1775,24 @@ class Exercise $clock_expired_time = 0; } if ($this->expired_time != 0) { - $sql_fields = "expired_time_control, "; - $sql_fields_values = "'"."$clock_expired_time"."',"; - } else { - $sql_fields = ""; - $sql_fields_values = ""; + $trackValues['expired_time_control'] = $clock_expired_time; } $questionList = array_map('intval', $questionList); - $weight = Database::escape_string($weight); - $sql = "INSERT INTO $track_exercises ($sql_fields exe_exo_id, exe_user_id, exe_cours_id, status,session_id, data_tracking, start_date, orig_lp_id, orig_lp_item_id, orig_lp_item_view_id, exe_weighting) - VALUES($sql_fields_values '".$this->id."','" . api_get_user_id() . "','" . api_get_course_id() . "','incomplete','" . api_get_session_id() . "','" . implode(',', $questionList) . "', '" . api_get_utc_datetime() . "', '$safe_lp_id', '$safe_lp_item_id', '$safe_lp_item_view_id', '$weight')"; - Database::query($sql); - $id = Database::insert_id(); + $trackValues['exe_exo_id'] = $this->id; + $trackValues['exe_user_id'] = api_get_user_id(); + $trackValues['exe_cours_id'] = api_get_course_id(); + $trackValues['status'] = 'incomplete'; + $trackValues['session_id'] = api_get_session_id(); + $trackValues['data_tracking'] = implode(',', $questionList); + $trackValues['start_date'] = api_get_utc_datetime(); + $trackValues['orig_lp_id'] = $safe_lp_id; + $trackValues['orig_lp_item_id'] = $safe_lp_item_id; + $trackValues['orig_lp_item_view_id'] = $safe_lp_item_view_id; + $trackValues['exe_weighting'] = Database::escape_string($weight); + $trackValues['user_ip'] = Database::escape_string(api_get_real_ip()); + + $id = Database::insert($track_exercises, $trackValues); return $id; } diff --git a/main/inc/lib/events.lib.inc.php b/main/inc/lib/events.lib.inc.php index 392034bda5..a29646aefa 100755 --- a/main/inc/lib/events.lib.inc.php +++ b/main/inc/lib/events.lib.inc.php @@ -343,18 +343,19 @@ function update_event_exercice( } $sql = "UPDATE $TABLETRACK_EXERCICES SET - exe_exo_id = '".Database::escape_string($exo_id)."', - exe_result = '".Database::escape_string($score)."', - exe_weighting = '".Database::escape_string($weighting)."', - session_id = '".Database::escape_string($session_id)."', - orig_lp_id = '".Database::escape_string($learnpath_id)."', - orig_lp_item_id = '".Database::escape_string($learnpath_item_id)."', + exe_exo_id = '".Database::escape_string($exo_id)."', + exe_result = '".Database::escape_string($score)."', + exe_weighting = '".Database::escape_string($weighting)."', + session_id = '".Database::escape_string($session_id)."', + orig_lp_id = '".Database::escape_string($learnpath_id)."', + orig_lp_item_id = '".Database::escape_string($learnpath_item_id)."', orig_lp_item_view_id = '".Database::escape_string($learnpath_item_view_id)."', - exe_duration = '".Database::escape_string($duration)."', - exe_date = '".$end_date."', - status = '".$status."', - questions_to_check = '".$remind_list."', - data_tracking = '".implode(',', $question_list)."' + exe_duration = '".Database::escape_string($duration)."', + exe_date = '".$end_date."', + status = '".$status."', + questions_to_check = '".$remind_list."', + data_tracking = '".implode(',', $question_list)."', + user_ip = '" . Database::escape_string(api_get_real_ip()) . "' WHERE exe_id = '".Database::escape_string($exeid)."'"; $res = Database::query($sql); @@ -415,10 +416,14 @@ function create_event_exercice($exo_id) } else { $expired_date = '0000-00-00 00:00:00'; } - $sql = "INSERT INTO $tbl_track_exe ( exe_user_id, exe_cours_id, expired_time_control, exe_exo_id, session_id) - VALUES ( $uid, '".api_get_course_id()."' ,'$expired_date','$exo_id','".api_get_session_id()."')"; - Database::query($sql); - $id= Database::insert_id(); + $id = Database::insert($tbl_track_exe, array( + 'exe_user_id' => $uid, + 'exe_cours_id' => api_get_course_id(), + 'expired_time_control' => $expired_date, + 'exe_exo_id' => $exo_id, + 'session_id' => api_get_session_id(), + 'user_ip' => Database::escape_string(api_get_real_ip()) + )); return $id; } diff --git a/main/install/db_stats.sql b/main/install/db_stats.sql index cbf812682f..56ec7646b0 100755 --- a/main/install/db_stats.sql +++ b/main/install/db_stats.sql @@ -57,6 +57,7 @@ CREATE TABLE track_e_access ( access_cours_code varchar(40) NOT NULL default '', access_tool varchar(30) default NULL, access_session_id int NOT NULL default 0, + user_ip varchar(39) NOT NULL default '', PRIMARY KEY (access_id), KEY access_user_id (access_user_id), KEY access_cours_code (access_cours_code) @@ -111,6 +112,7 @@ CREATE TABLE track_e_exercices ( exe_exo_id mediumint unsigned NOT NULL default 0, exe_result float(6,2) NOT NULL default 0, exe_weighting float(6,2) NOT NULL default 0, + user_ip varchar(39) NOT NULL default '', PRIMARY KEY (exe_id), KEY exe_user_id (exe_user_id), KEY exe_cours_id (exe_cours_id) @@ -245,6 +247,7 @@ CREATE TABLE track_e_course_access ( logout_course_date datetime default NULL, counter int NOT NULL, session_id int NOT NULL default 0, + user_ip varchar(39) NOT NULL default '', PRIMARY KEY (course_access_id) ); diff --git a/main/install/migrate-db-1.9.0-1.10.0-pre.sql b/main/install/migrate-db-1.9.0-1.10.0-pre.sql index 4f82640391..4a1e7cd0ec 100644 --- a/main/install/migrate-db-1.9.0-1.10.0-pre.sql +++ b/main/install/migrate-db-1.9.0-1.10.0-pre.sql @@ -39,6 +39,10 @@ ALTER TABLE gradebook_category ADD COLUMN generate_certificates TINYINT NOT NULL ALTER TABLE track_e_login CHANGE COLUMN user_ip user_ip varchar(39) NOT NULL DEFAULT ''; ALTER TABLE track_e_online CHANGE COLUMN user_ip user_ip varchar(39) NOT NULL DEFAULT ''; +ALTER TABLE track_e_exercices ADD COLUMN user_ip varchar(39) NOT NULL default ''; +ALTER TABLE track_e_access ADD COLUMN user_ip varchar(39) NOT NULL default ''; +ALTER TABLE track_e_course_access ADD COLUMN user_ip varchar(39) NOT NULL default ''; + -- Do not move this query UPDATE settings_current SET selected_value = '1.10.0.8' WHERE variable = 'chamilo_database_version';