diff --git a/main/blog/download.php b/main/blog/download.php index 37c8cf140f..7a2b4ac501 100644 --- a/main/blog/download.php +++ b/main/blog/download.php @@ -64,8 +64,10 @@ if (! isset($_course)) { api_not_allowed(true); } -//if the rewrite rule asks for a directory, we redirect to the document explorer -if (is_dir(api_get_path(SYS_COURSE_PATH).$_course['path'].'/upload/blog/'.$doc_url)) +$full_file_name = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/upload/blog/'.$doc_url; + +//if the rewrite rule asks for a directory, we redirect to the course view +if (is_dir($full_file_name)) { //remove last slash if present while ($doc_url{$dul = strlen($doc_url)-1}=='/') $doc_url = substr($doc_url,0,$dul); @@ -75,14 +77,13 @@ if (is_dir(api_get_path(SYS_COURSE_PATH).$_course['path'].'/upload/blog/'.$doc_u header('Location: '.$document_explorer); } -$blog_table_attachment = '`'.$_course['dbNameGlu'].'blog_attachment'.'`'; +$tbl_blogs_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT); // launch event event_download($doc_url); -$sys_course_path = api_get_path(SYS_COURSE_PATH); -$full_file_name = $sys_course_path.$_course['path'].'/upload/blog/'.$doc_url; -$sql = 'SELECT filename FROM '.$blog_table_attachment.' WHERE path LIKE BINARY "'.$doc_url.'"'; +$sql = 'SELECT filename FROM '.$tbl_blogs_attachment.' WHERE path LIKE BINARY "'.$doc_url.'"'; + $result= api_sql_query($sql, __FILE__, __LINE__); $row= Database::fetch_array($result); DocumentManager::file_send_for_download($full_file_name,TRUE, $row['filename']); diff --git a/main/forum/download.php b/main/forum/download.php index c12a952bc8..cdf5d74a49 100644 --- a/main/forum/download.php +++ b/main/forum/download.php @@ -42,6 +42,7 @@ include('../inc/global.inc.php'); $this_section=SECTION_COURSES; include(api_get_path(LIBRARY_PATH).'document.lib.php'); +require_once('forumconfig.inc.php'); // IMPORTANT to avoid caching of documents header('Expires: Wed, 01 Jan 1990 00:00:00 GMT'); @@ -64,29 +65,40 @@ if (! isset($_course)) { api_not_allowed(true); } + +$full_file_name = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/upload/forum/'.$doc_url; + //if the rewrite rule asks for a directory, we redirect to the document explorer -if (is_dir(api_get_path(SYS_COURSE_PATH).$_course['path'].'/upload/forum/'.$doc_url)) +if (is_dir($full_file_name)) { //remove last slash if present //$doc_url = ($doc_url{strlen($doc_url)-1}=='/')?substr($doc_url,0,strlen($doc_url)-1):$doc_url; //mod_rewrite can change /some/path/ to /some/path// in some cases, so clean them all off (Ren�) while ($doc_url{$dul = strlen($doc_url)-1}=='/') $doc_url = substr($doc_url,0,$dul); //create the path - $document_explorer = api_get_path(WEB_CODE_PATH).'forum'; + $document_explorer = api_get_path(WEB_COURSE_PATH).api_get_course_path(); // home course path //redirect header('Location: '.$document_explorer); } -$tbl_blogs_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT); +$tbl_forum_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT); +$tbl_forum_post = Database::get_course_table(TABLE_FORUM_POST); // launch event event_download($doc_url); -$sys_course_path = api_get_path(SYS_COURSE_PATH); -$full_file_name = $sys_course_path.$_course['path'].'/upload/forum/'.$doc_url; -$sql = 'SELECT filename FROM '.$tbl_blogs_attachment.' WHERE path LIKE BINARY "'.$doc_url.'"'; +$sql='SELECT thread_id, forum_id,filename FROM '.$tbl_forum_post.' f INNER JOIN '.$tbl_forum_attachment.' a + ON a.post_id=f.post_id WHERE path LIKE BINARY "'.$doc_url.'"'; + $result= api_sql_query($sql, __FILE__, __LINE__); $row= Database::fetch_array($result); -DocumentManager::file_send_for_download($full_file_name,TRUE, $row['filename']); + +$forum_thread_visibility=api_get_item_visibility(api_get_course_info($course_code),TOOL_FORUM_THREAD,$row['thread_id']); +$forum_forum_visibility=api_get_item_visibility(api_get_course_info($course_code),TOOL_FORUM,$row['forum_id']); + +if ($forum_thread_visibility==1 && $forum_forum_visibility==1) +{ + DocumentManager::file_send_for_download($full_file_name,TRUE, $row['filename']); +} exit; ?> \ No newline at end of file diff --git a/main/forum/forumconfig.inc.php b/main/forum/forumconfig.inc.php index 68de40bb2c..9b6551521c 100644 --- a/main/forum/forumconfig.inc.php +++ b/main/forum/forumconfig.inc.php @@ -20,7 +20,7 @@ $table_threads = "`".$_course["dbNameGlu"]."forum_thread"."`"; $table_posts = "`".$_course["dbNameGlu"]."forum_post"."`"; $table_mailcue = "`".$_course["dbNameGlu"]."forum_mailcue"."`"; -$forum_table_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT); +$forum_table_attachment = Database :: get_course_table(TABLE_FORUM_ATTACHMENT); $table_item_property = Database :: get_course_table(TABLE_ITEM_PROPERTY); $table_users = Database :: get_main_table(TABLE_MAIN_USER); @@ -33,10 +33,7 @@ define("TOOL_FORUM_CATEGORY",'forum_category'); define("TOOL_FORUM",'forum'); define("TOOL_FORUM_THREAD",'forum_thread'); define("TOOL_FORUM_POST",'forum_post'); - - - - +define("TOOL_FORUM_ATTACH",'forum_attachment'); /* ----------------------------------------------------------- Some configuration settings diff --git a/main/forum/forumfunction.inc.php b/main/forum/forumfunction.inc.php index 16a3fc5f5a..6914c8be2b 100644 --- a/main/forum/forumfunction.inc.php +++ b/main/forum/forumfunction.inc.php @@ -532,13 +532,9 @@ function delete_forum_forumcategory_thread($content, $id) { $tool_constant=TOOL_FORUM_THREAD; $return_message=get_lang('ThreadDeleted'); - } - - api_item_property_update($_course,$tool_constant,$id,"delete",api_get_user_id()); // note: check if this returns a true and if so => return $return_message, if not => return false; - + } + api_item_property_update($_course,$tool_constant,$id,'delete',api_get_user_id()); // note: check if this returns a true and if so => return $return_message, if not => return false; //delete_attachment($post_id); - - return $return_message; } @@ -562,6 +558,7 @@ function delete_post($post_id) $sql="DELETE FROM $table_posts WHERE post_id='".Database::escape_string($post_id)."'"; // note: this has to be a recursive function that deletes all of the posts in this block. api_sql_query($sql,__FILE__,__LINE__); + delete_attachment($post_id); $last_post_of_thread=check_if_last_post_of_thread(strval(intval($_GET['thread']))); @@ -584,7 +581,6 @@ function delete_post($post_id) api_sql_query($sql,__FILE__,__LINE__); return 'PostDeletedSpecial'; } - } @@ -1639,7 +1635,14 @@ function store_thread($values) '".Database::escape_string($visible)."')"; api_sql_query($sql, __LINE__, __FILE__); $last_post_id=Database::insert_id(); + + // now have to update the thread table to fill the thread_last_post field (so that we know when the thread has been updated for the last time) + $sql="UPDATE $table_threads SET thread_last_post='".Database::escape_string($last_post_id)."' WHERE thread_id='".Database::escape_string($last_thread_id)."'"; + $result=api_sql_query($sql, __LINE__, __FILE__); + $message=get_lang('NewThreadStored'); + + // Storing the attachments if any if ($has_attachment) { @@ -1670,16 +1673,19 @@ function store_thread($values) $sql='INSERT INTO '.$forum_table_attachment.'(filename,comment, path, post_id,size) '. "VALUES ( '".Database::escape_string($file_name)."', '".Database::escape_string($comment)."', '".Database::escape_string($new_file_name)."' , '".$last_post_id."', '".$_FILES['user_upload']['size']."' )"; $result=api_sql_query($sql, __LINE__, __FILE__); - $message.=' / '.get_lang('AttachmentUpload'); + $message.=' / '.get_lang('FileUploadSucces').'
'; + + $last_id=Database::insert_id(); + api_item_property_update($_course, TOOL_FORUM_ATTACH, $last_id ,'ForumAttachmentAdded', api_get_user_id()); + } } - } - - // now have to update the thread table to fill the thread_last_post field (so that we know when the thread has been updated for the last time) - $sql="UPDATE $table_threads SET thread_last_post='".Database::escape_string($last_post_id)."' WHERE thread_id='".Database::escape_string($last_thread_id)."'"; - $result=api_sql_query($sql, __LINE__, __FILE__); - - $message=get_lang('NewThreadStored').'
'; + } + else + { + $message.='
'; + } + if ($current_forum['approval_direct_post']=='1' AND !api_is_allowed_to_edit()) { $message.=get_lang('MessageHasToBeApproved').'
'; @@ -1901,7 +1907,10 @@ function store_reply($values) $sql='INSERT INTO '.$forum_table_attachment.'(filename,comment, path, post_id,size) '. "VALUES ( '".Database::escape_string($file_name)."', '".Database::escape_string($comment)."', '".Database::escape_string($new_file_name)."' , '".$new_post_id."', '".$_FILES['user_upload']['size']."' )"; $result=api_sql_query($sql, __LINE__, __FILE__); - $message.=' / '.get_lang('AttachmentUpload'); + $message.=' / '.get_lang('FileUploadSucces'); + $last_id=Database::insert_id(); + + api_item_property_update($_course, TOOL_FORUM_ATTACH, $last_id ,'ForumAttachmentAdded', api_get_user_id()); } } } @@ -1911,7 +1920,8 @@ function store_reply($values) // update the forum api_item_property_update($_course, TOOL_FORUM, $values['forum_id'],"NewMessageInForum", api_get_user_id()); - + + if ($current_forum['approval_direct_post']=='1' AND !api_is_allowed_to_edit()) { @@ -2950,7 +2960,7 @@ function search_link() } /** - * Show a list with all the attachments according the post's id + * Show a list with all the attachments according to the post's id * @param the post's id * @return array with the post info * @author Julio Montoya Dokeos @@ -2970,8 +2980,8 @@ function get_attachment($post_id) return $row; } /** - * Delete the all the attachments from the DB and the file according the parameters. - * @param the post's id + * Delete the all the attachments from the DB and the file according to the post's id + * @param post id * @author Julio Montoya Dokeos * @version avril 2008, dokeos 1.8.5 */ @@ -2988,10 +2998,13 @@ function delete_attachment($id) $courseDir = $_course['path'].'/upload/forum'; $sys_course_path = api_get_path(SYS_COURSE_PATH); $updir = $sys_course_path.$courseDir; - $file=$updir.'/'.$attach_list['path']; + $file=$updir.'/'.$attach_list['path']; + + api_item_property_update($_course, TOOL_FORUM_ATTACH, $id ,'ForumAttachmentDelete', api_get_user_id()); + if (Security::check_abs_path($file,$updir) ) { @ unlink($file); - } + } } ?> \ No newline at end of file diff --git a/main/forum/newthread.php b/main/forum/newthread.php index 2acb030c9f..e24fca5fbe 100644 --- a/main/forum/newthread.php +++ b/main/forum/newthread.php @@ -43,7 +43,7 @@ */ // name of the language file that needs to be included -$language_file = 'forum'; +$language_file = array('forum','document'); // including the global dokeos file require ('../inc/global.inc.php'); diff --git a/main/forum/reply.php b/main/forum/reply.php index 9a59ecea50..fa83d1346a 100644 --- a/main/forum/reply.php +++ b/main/forum/reply.php @@ -43,7 +43,7 @@ */ // name of the language file that needs to be included -$language_file = 'forum'; +$language_file = array('forum','document'); // including the global dokeos file require ('../inc/global.inc.php'); diff --git a/main/inc/lib/blog.lib.php b/main/inc/lib/blog.lib.php index d2bfcc7bdd..299e338a3b 100644 --- a/main/inc/lib/blog.lib.php +++ b/main/inc/lib/blog.lib.php @@ -208,18 +208,22 @@ class Blog // Init $tbl_blogs = Database::get_course_table(TABLE_BLOGS); $tbl_blogs_posts = Database::get_course_table(TABLE_BLOGS_POSTS); + $tbl_blogs_comment = Database::get_course_table(TABLE_BLOGS_COMMENTS); $tbl_blogs_tasks = Database::get_course_table(TABLE_BLOGS_TASKS); $tbl_tool = Database::get_course_table(TABLE_TOOL_LIST); $tbl_blogs_rating = Database::get_course_table(TABLE_BLOGS_RATING); - $tbl_blogs_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT); + $tbl_blogs_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT); - - // Delete posts and attachments + // Delete posts from DB and the attachments delete_all_blog_attachment($blog_id); - // Delete attachments from DB - $sql = "DELETE FROM $tbl_blogs_attachment WHERE blog_id ='".(int)$blog_id."'"; - api_sql_query($sql, __FILE__, __LINE__); + //Delete comments + $sql = "DELETE FROM $tbl_blogs_comment WHERE blog_id ='".(int)$blog_id."'"; + api_sql_query($sql, __FILE__, __LINE__); + + // Delete posts + $sql = "DELETE FROM $tbl_blogs_posts WHERE blog_id ='".(int)$blog_id."'"; + api_sql_query($sql, __FILE__, __LINE__); // Delete tasks $sql = "DELETE FROM $tbl_blogs_tasks WHERE blog_id ='".(int)$blog_id."'";