diff --git a/main/forum/forumfunction.inc.php b/main/forum/forumfunction.inc.php index 05a12593cd..363ace95fb 100644 --- a/main/forum/forumfunction.inc.php +++ b/main/forum/forumfunction.inc.php @@ -268,6 +268,29 @@ function show_add_forum_form($inputvalues=array()) { $group[] =& HTML_QuickForm::createElement('radio', 'public_private_group_forum', null, get_lang('Public'), 'public'); $group[] =& HTML_QuickForm::createElement('radio', 'public_private_group_forum', null, get_lang('Private'), 'private'); $form->addGroup($group, 'public_private_group_forum_group', get_lang('PublicPrivateGroupForum'), ' '); + + + // Forum image + $form->add_progress_bar(); + if (strlen($inputvalues['forum_image']) > 0) { + + $show_preview_image=''; + $div = '
+
'.get_lang('PreviewImage').'
+
+ '.$show_preview_image.' +
+
'; + + $form->addElement('html', $div .'
'); + $form->addElement('checkbox', 'remove_picture', null, get_lang('DelImage')); + } + + $form->addElement('file', 'picture', ($inputvalues['forum_image'] != '' ? get_lang('UpdateImage') : get_lang('AddImage'))); + $form->addRule('picture', get_lang('OnlyImagesAllowed'), 'mimetype', array('image/gif', 'image/jpeg', 'image/png')); + + + // The OK button $form->addElement('submit', 'SubmitForum', get_lang('OK')); // setting the rules @@ -312,6 +335,29 @@ function show_add_forum_form($inputvalues=array()) { } } +/** + * This function deletes the forum image if exists +* +* @param int forum id +* @return boolean true if success +* @author Julio Montoya , Dokeos +* @version february 2006, dokeos 1.8 +*/ +function delete_forum_image($forum_id) +{ + $table_forums = Database::get_course_table(TABLE_FORUM); + echo '
'; + $sql="SELECT forum_image FROM $table_forums WHERE forum_id = '".$forum_id."' "; + $result=api_sql_query($sql,__FILE__,__LINE__); + $row=Database::fetch_array($result); + if ($row['forum_image']!='') { + $del_file = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/upload/forum/images/'.$row['forum_image']; + return @unlink($del_file); + } else { + return false; + } + +} /** @@ -421,40 +467,94 @@ function store_forum($values) { $clean_title=Security::remove_XSS(Database::escape_string(htmlspecialchars($values['forum_title']))); + // forum images + + $image_moved=false; + if (!empty($_FILES['picture']['name'])) { + $upload_ok = process_uploaded_file($_FILES['picture']); + $has_attachment=true; + } else { + $image_moved=true; + } + + // remove existing picture if asked + if ($values['remove_picture']) { + delete_forum_image($values['forum_id']); + } + + if ($upload_ok) { + if ($has_attachment) { + $courseDir = $_course['path'].'/upload/forum/images'; + $sys_course_path = api_get_path(SYS_COURSE_PATH); + $updir = $sys_course_path.$courseDir; + // Try to add an extension to the file if it hasn't one + $new_file_name = add_ext_on_mime(Database::escape_string($_FILES['picture']['name']), $_FILES['picture']['type']); + // user's file name + $file_name =$_FILES['picture']['name']; + + if (!filter_extension($new_file_name)) { + //Display :: display_error_message(get_lang('UplUnableToSaveFileFilteredExtension')); + $image_moved=false; + } else { + $file_extension = explode('.', $_FILES['picture']['name']); + $file_extension = strtolower($file_extension[sizeof($file_extension) - 1]); + $new_file_name = uniqid('').'.'.$file_extension; + $new_path=$updir.'/'.$new_file_name; + $result= @move_uploaded_file($_FILES['picture']['tmp_name'], $new_path); + // Storing the attachments if any + if ($result) { + $image_moved=true; + } + } + } + } + if (isset($values['forum_id'])) { + $sql_image=''; + if ($image_moved) { + $sql_image=" forum_image='".Database::escape_string($new_file_name)."', "; + delete_forum_image($values['forum_id']); + } // storing an edit - $sql="UPDATE ".$table_forums." SET - forum_title='".$clean_title."', - forum_comment='".Database::escape_string($values['forum_comment'])."', - forum_category='".Database::escape_string($values['forum_category'])."', - allow_anonymous='".Database::escape_string($values['allow_anonymous_group']['allow_anonymous'])."', - allow_edit='".Database::escape_string($values['students_can_edit_group']['students_can_edit'])."', - approval_direct_post='".Database::escape_string($values['approval_direct_group']['approval_direct'])."', - allow_attachments='".Database::escape_string($values['allow_attachments_group']['allow_attachments'])."', - allow_new_threads='".Database::escape_string($values['allow_new_threads_group']['allow_new_threads'])."', - forum_group_public_private='".Database::escape_string($values['public_private_group_forum_group']['public_private_group_forum'])."', - default_view='".Database::escape_string($values['default_view_type_group']['default_view_type'])."', - forum_of_group='".Database::escape_string($values['group_forum'])."' - WHERE forum_id='".Database::escape_string($values['forum_id'])."'"; + $sql="UPDATE ".$table_forums." SET + forum_title='".$clean_title."', + ".$sql_image." + forum_comment='".Database::escape_string($values['forum_comment'])."', + forum_category='".Database::escape_string($values['forum_category'])."', + allow_anonymous='".Database::escape_string($values['allow_anonymous_group']['allow_anonymous'])."', + allow_edit='".Database::escape_string($values['students_can_edit_group']['students_can_edit'])."', + approval_direct_post='".Database::escape_string($values['approval_direct_group']['approval_direct'])."', + allow_attachments='".Database::escape_string($values['allow_attachments_group']['allow_attachments'])."', + allow_new_threads='".Database::escape_string($values['allow_new_threads_group']['allow_new_threads'])."', + forum_group_public_private='".Database::escape_string($values['public_private_group_forum_group']['public_private_group_forum'])."', + default_view='".Database::escape_string($values['default_view_type_group']['default_view_type'])."', + forum_of_group='".Database::escape_string($values['group_forum'])."' + WHERE forum_id='".Database::escape_string($values['forum_id'])."'"; api_sql_query($sql,__FILE__,__LINE__); $return_message=get_lang('ForumEdited'); } else { + $sql_image=''; + if ($image_moved) { + $sql_image="'".$new_file_name."', "; + } + $sql="INSERT INTO ".$table_forums." - (forum_title, forum_comment, forum_category, allow_anonymous, allow_edit, approval_direct_post, allow_attachments, allow_new_threads, default_view, forum_of_group, forum_group_public_private, forum_order, session_id) - VALUES ('".$clean_title."', - '".Database::escape_string($values['forum_comment'])."', - '".Database::escape_string($values['forum_category'])."', - '".Database::escape_string($values['allow_anonymous_group']['allow_anonymous'])."', - '".Database::escape_string($values['students_can_edit_group']['students_can_edit'])."', - '".Database::escape_string($values['approval_direct_group']['approval_direct'])."', - '".Database::escape_string($values['allow_attachments_group']['allow_attachments'])."', - '".Database::escape_string($values['allow_new_threads_group']['allow_new_threads'])."', - '".Database::escape_string($values['default_view_type_group']['default_view_type'])."', - '".Database::escape_string($values['group_forum'])."', - '".Database::escape_string($values['public_private_group_forum_group']['public_private_group_forum'])."', - '".Database::escape_string($new_max)."', - ".intval($session_id).")"; + (forum_title, forum_image, forum_comment, forum_category, allow_anonymous, allow_edit, approval_direct_post, allow_attachments, allow_new_threads, default_view, forum_of_group, forum_group_public_private, forum_order, session_id) + VALUES ('".$clean_title."', + ".$sql_image." + '".Database::escape_string($values['forum_comment'])."', + '".Database::escape_string($values['forum_category'])."', + '".Database::escape_string($values['allow_anonymous_group']['allow_anonymous'])."', + '".Database::escape_string($values['students_can_edit_group']['students_can_edit'])."', + '".Database::escape_string($values['approval_direct_group']['approval_direct'])."', + '".Database::escape_string($values['allow_attachments_group']['allow_attachments'])."', + '".Database::escape_string($values['allow_new_threads_group']['allow_new_threads'])."', + '".Database::escape_string($values['default_view_type_group']['default_view_type'])."', + '".Database::escape_string($values['group_forum'])."', + '".Database::escape_string($values['public_private_group_forum_group']['public_private_group_forum'])."', + '".Database::escape_string($new_max)."', + ".intval($session_id).")"; api_sql_query($sql,__FILE__,__LINE__); $last_id=Database::get_last_insert_id(); api_item_property_update($_course, TOOL_FORUM, $last_id,"ForumCategoryAdded", api_get_user_id());