"; /* ----------------------------------------------------------- Variables - some need defining before inclusion of libraries ----------------------------------------------------------- */ $is_allowed_to_edit = api_is_allowed_to_edit(); $courseDir = $_course['path']."/document"; $sys_course_path = api_get_path(SYS_COURSE_PATH); $base_work_dir = $sys_course_path.$courseDir; $noPHP_SELF=true; //this needs cleaning! if(isset($_SESSION['_gid']) && $_SESSION['_gid']!='') //if the group id is set, check if the user has the right to be here { //needed for group related stuff include_once(api_get_path(LIBRARY_PATH) . 'groupmanager.lib.php'); //get group info $group_properties = GroupManager::get_group_properties($_SESSION['_gid']); $noPHP_SELF=true; if($is_allowed_to_edit || GroupManager::is_user_in_group($_user['user_id'],$_SESSION['_gid'])) //only courseadmin or group members allowed { $to_group_id = $_SESSION['_gid']; $req_gid = '&gidReq='.$_SESSION['_gid']; $interbreadcrumb[]= array ("url"=>"../group/group_space.php?gidReq=".$_SESSION['_gid'], "name"=> get_lang('GroupSpace')); } else { api_not_allowed(); } } elseif($is_allowed_to_edit) //admin for "regular" upload, no group documents { $to_group_id = 0; $req_gid = ''; } else //no course admin and no group member... { api_not_allowed(); } //what's the current path? if(isset($_GET['path']) && $_GET['path']!='') { $path = $_GET['path']; } elseif (isset($_POST['curdirpath'])) { $path = $_POST['curdirpath']; } else { $path = '/'; } /* ----------------------------------------------------------- Libraries ----------------------------------------------------------- */ //many useful functions in main_api.lib.php, by default included include_once(api_get_path(LIBRARY_PATH) . 'fileUpload.lib.php'); include_once(api_get_path(LIBRARY_PATH) . 'events.lib.inc.php'); include_once(api_get_path(LIBRARY_PATH) . 'document.lib.php'); //check the path //if the path is not found (no document id), set the path to / if(!DocumentManager::get_document_id($_course,$path)) { $path = '/'; } //group docs can only be uploaded in the group directory if($to_group_id!=0 && $path=='/') { $path = $group_properties['directory']; } //if we want to unzip a file, we need the library if (isset($_POST['unzip']) && $_POST['unzip'] == 1) { include(api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php'); } /* ----------------------------------------------------------- Variables ----------------------------------------------------------- */ $max_filled_space = DocumentManager::get_course_quota(); /* ----------------------------------------------------------- Header ----------------------------------------------------------- */ $nameTools = get_lang('UplUploadDocument'); $interbreadcrumb[]=array("url"=>"./document.php?curdirpath=".urlencode($path).$req_gid, "name"=> $langDocuments); Display::display_header($nameTools,"Doc"); if($to_group_id !=0) //add group name after for group documents { $add_group_to_title = ' ('.$group_properties['name'].')'; } //show the title api_display_tool_title($nameTools.$add_group_to_title); /* ----------------------------------------------------------- Here we do all the work ----------------------------------------------------------- */ //user has submitted a file if(isset($_FILES['user_upload'])) { //echo("
"); //print_r($_FILES['user_upload']); //echo(""); $upload_ok = process_uploaded_file($_FILES['user_upload']); if($upload_ok) { //file got on the server without problems, now process it $new_path = handle_uploaded_document($_course, $_FILES['user_upload'],$base_work_dir,$_POST['curdirpath'],$_user['user_id'],$to_group_id,$to_user_id,$max_filled_space,$_POST['unzip'],$_POST['if_exists']); $new_comment = isset($_POST['comment']) ? trim($_POST['comment']) : ''; $new_title = isset($_POST['title']) ? trim($_POST['title']) : ''; if ($new_path && ($new_comment || $new_title)) if (($docid = DocumentManager::get_document_id($_course, $new_path))) { $table_document = Database::get_course_table(DOCUMENT_TABLE); $ct = ''; if ($new_comment) $ct .= ", comment='$new_comment'"; if ($new_title) $ct .= ", title='$new_title'"; api_sql_query("UPDATE $table_document SET" . substr($ct, 1) . " WHERE id = '$docid'", __FILE__, __LINE__); } //check for missing images in html files $missing_files = check_for_missing_files($base_work_dir.$_POST['curdirpath'].$new_path); if($missing_files) { //show a form to upload the missing files Display::display_normal_message(build_missing_files_form($missing_files,$_POST['curdirpath'],$_FILES['user_upload']['name'])); } } } //missing images are submitted if(isset($_POST['submit_image'])) { $number_of_uploaded_images = count($_FILES['img_file']['name']); //if images are uploaded if ($number_of_uploaded_images > 0) { //we could also create a function for this, I'm not sure... //create a directory for the missing files $img_directory = str_replace('.','_',$_POST['related_file']."_files"); $missing_files_dir = create_unexisting_directory($_course,$_user['user_id'],$to_group_id,$to_user_id,$base_work_dir,$img_directory); //put the uploaded files in the new directory and get the paths $paths_to_replace_in_file = move_uploaded_file_collection_into_directory($_course, $_FILES['img_file'],$base_work_dir,$missing_files_dir,$_user['user_id'],$to_group_id,$to_user_id,$max_filled_space); //open the html file and replace the paths replace_img_path_in_html_file($_POST['img_file_path'],$paths_to_replace_in_file,$base_work_dir.$_POST['related_file']); //update parent folders item_property_update_on_folder($_course,$_POST['curdirpath'],$_user['user_id']); } } //they want to create a directory if(isset($_POST['create_dir']) && $_POST['dirname']!='') { $added_slash = ($path=='/')?'':'/'; $dir_name = $path.$added_slash.replace_dangerous_char($_POST['dirname']); $created_dir = create_unexisting_directory($_course,$_user['user_id'],$to_group_id,$to_user_id,$base_work_dir,$dir_name,$_POST['dirname']); if($created_dir) { //Display::display_normal_message("".$created_dir." was created!"); Display::display_normal_message(get_lang('DirCr')); $path = $created_dir; } else { display_error(get_lang('CannotCreateDir')); } } //tracking not needed here? //event_access_tool(TOOL_DOCUMENT); /*============================================================================*/ ?> '; $new_folder_text .= ''; $new_folder_text .= get_lang('NewDir') .' '; $new_folder_text .= ''; $new_folder_text .= ''; $new_folder_text .= ''; //show the form Display::display_normal_message($new_folder_text); } else { //give them a link to create a directory ?>