From ea374a7d54582bf8be7f7139ebd68b60e93a6266 Mon Sep 17 00:00:00 2001 From: Eric Marguin Date: Tue, 18 Dec 2007 15:54:18 +0100 Subject: [PATCH] [svn r14007] improve relation between sessions and dropbox tool : a file of a session is no longer visible in another session (FS#2087) --- main/dropbox/dropbox_class.inc.php | 17 +++++++++++++---- main/inc/lib/add_course.lib.inc.php | 8 +++++++- main/install/migrate-db-1.8.4-1.8.5-pre.sql | 6 +++++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/main/dropbox/dropbox_class.inc.php b/main/dropbox/dropbox_class.inc.php index 44c03d302c..14141daa05 100644 --- a/main/dropbox/dropbox_class.inc.php +++ b/main/dropbox/dropbox_class.inc.php @@ -184,7 +184,7 @@ class Dropbox_Work { { $this->upload_date = $this->last_upload_date; $sql="INSERT INTO ".dropbox_cnf("tbl_file")." - (uploader_id, filename, filesize, title, description, author, upload_date, last_upload_date) + (uploader_id, filename, filesize, title, description, author, upload_date, last_upload_date, session_id) VALUES ('".addslashes($this->uploader_id)."' , '".addslashes($this->filename)."' , '".addslashes($this->filesize)."' @@ -193,6 +193,7 @@ class Dropbox_Work { , '".addslashes($this->author)."' , '".addslashes($this->upload_date)."' , '".addslashes($this->last_upload_date)."' + , ".intval($_SESSION['id_session'])." )"; $result = api_sql_query($sql,__FILE__,__LINE__); @@ -356,8 +357,8 @@ class Dropbox_SentWork extends Dropbox_Work foreach ($this->recipients as $rec) { $sql="INSERT INTO ".dropbox_cnf("tbl_post")." - (file_id, dest_user_id) - VALUES ('".addslashes($this->id)."', '".addslashes($rec["id"])."')"; + (file_id, dest_user_id, session_id) + VALUES ('".addslashes($this->id)."', '".addslashes($rec["id"])."', ".intval($_SESSION['id_session']).")"; $result = api_sql_query($sql); //if work already exists no error is generated //insert entries into person table @@ -461,6 +462,10 @@ class Dropbox_Person WHERE r.dest_user_id = '".addslashes($this->userId)."' AND r.dest_user_id = p.user_id AND r.file_id = p.file_id"; + + if(intval($_SESSION['id_session']>0)) + $sql .= " AND r.session_id = ".intval($_SESSION['id_session']); + $result = api_sql_query($sql,__FILE__,__LINE__); while ($res = Database::fetch_array($result)) { $temp = new Dropbox_Work($res["file_id"]); @@ -473,7 +478,11 @@ class Dropbox_Person FROM $file_tbl f, $person_tbl p WHERE f.uploader_id = '".addslashes($this->userId)."' AND f.uploader_id = p.user_id - AND f.id = p.file_id"; + AND f.id = p.file_id"; + + if(intval($_SESSION['id_session']>0)) + $sql .= " AND f.session_id = ".intval($_SESSION['id_session']); + $result =api_sql_query($sql,__FILE__,__LINE__); while ($res = Database::fetch_array($result)) { $this->sentWork[] = new Dropbox_SentWork($res["id"]); diff --git a/main/inc/lib/add_course.lib.inc.php b/main/inc/lib/add_course.lib.inc.php index 1d99281983..5c805d3531 100644 --- a/main/inc/lib/add_course.lib.inc.php +++ b/main/inc/lib/add_course.lib.inc.php @@ -850,10 +850,13 @@ function update_Db_course($courseDbName) upload_date datetime NOT NULL default '0000-00-00 00:00:00', last_upload_date datetime NOT NULL default '0000-00-00 00:00:00', cat_id int NOT NULL default 0, + session_id SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (id), UNIQUE KEY UN_filename (filename) )"); - + + api_sql_query("ALTER TABLE `$TABLETOOLDROPBOXFILE` ADD INDEX ( `session_id` )"); + api_sql_query(" CREATE TABLE `".$TABLETOOLDROPBOXPOST . "` ( file_id int unsigned NOT NULL, @@ -861,8 +864,11 @@ function update_Db_course($courseDbName) feedback_date datetime NOT NULL default '0000-00-00 00:00:00', feedback text default '', cat_id int(11) NOT NULL default 0, + session_id SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (file_id,dest_user_id) )"); + + api_sql_query("ALTER TABLE `$TABLETOOLDROPBOXPOST` ADD INDEX ( `session_id` )"); api_sql_query(" CREATE TABLE `".$TABLETOOLDROPBOXPERSON . "` ( diff --git a/main/install/migrate-db-1.8.4-1.8.5-pre.sql b/main/install/migrate-db-1.8.4-1.8.5-pre.sql index f27ea696f6..eec3406bc4 100644 --- a/main/install/migrate-db-1.8.4-1.8.5-pre.sql +++ b/main/install/migrate-db-1.8.4-1.8.5-pre.sql @@ -52,4 +52,8 @@ ALTER TABLE track_e_uploads ADD INDEX (upload_cours_id); CREATE TABLE lp_iv_objective(id bigint unsigned primary key auto_increment, lp_iv_id bigint unsigned not null, order_id smallint unsigned not null default 0, objective_id varchar(255) not null default '', score_raw float unsigned not null default 0, score_max float unsigned not null default 0, score_min float unsigned not null default 0, status char(32) not null default 'not attempted'); ALTER TABLE lp_iv_objective ADD INDEX (lp_iv_id); ALTER TABLE lp_item CHANGE prerequisite prerequisite TEXT DEFAULT NULL; -INSERT INTO course_setting(variable,value,category) VALUES ('email_alert_manager_on_new_quiz',0,'quiz'); \ No newline at end of file +INSERT INTO course_setting(variable,value,category) VALUES ('email_alert_manager_on_new_quiz',0,'quiz'); +ALTER TABLE `dropbox_post` ADD `session_id` SMALLINT UNSIGNED NOT NULL ; +ALTER TABLE `dropbox_post` ADD INDEX ( `session_id` ) ; +ALTER TABLE `dropbox_file` ADD `session_id` SMALLINT UNSIGNED NOT NULL ; +ALTER TABLE `dropbox_file` ADD INDEX ( `session_id` ) ;