From c352fba06a6695b0d2d47bb9378f97f8c2dbe8aa Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Tue, 4 Nov 2014 09:25:04 +0100 Subject: [PATCH] Adding session id + group id as suffix --- main/document/document.inc.php | 15 +++-- main/document/document.php | 20 +++++-- main/inc/lib/document.lib.php | 2 +- .../ImageManager/Classes/ImageManager.php | 2 +- main/inc/lib/fileUpload.lib.php | 58 +++++++++++++++---- main/inc/lib/groupmanager.lib.php | 4 +- main/newscorm/learnpath.class.php | 33 +++++++++-- 7 files changed, 105 insertions(+), 29 deletions(-) diff --git a/main/document/document.inc.php b/main/document/document.inc.php index b619e8942d..1f31d01bd9 100755 --- a/main/document/document.inc.php +++ b/main/document/document.inc.php @@ -600,23 +600,28 @@ function build_edit_icons($document_data, $id, $is_template, $is_read_only = 0, if (in_array($path, DocumentManager::get_system_folders())) { $modify_icons .= ' ' . Display::return_icon('delete_na.png', get_lang('ThisFolderCannotBeDeleted'), array(), ICON_SIZE_SMALL); } else { - if (isset($_GET['curdirpath']) && $_GET['curdirpath'] == '/certificates' && DocumentManager::get_default_certificate_id(api_get_course_id()) == $id) { - $modify_icons .= ' ' . + $titleToShow = addslashes(basename($document_data['title'])); + + if (isset($_GET['curdirpath']) && + $_GET['curdirpath'] == '/certificates' && + DocumentManager::get_default_certificate_id(api_get_course_id()) == $id + ) { + $modify_icons .= ' ' . Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . ''; } else { if ($is_certificate_mode) { - $modify_icons .= ' ' . + $modify_icons .= ' ' . Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . ''; } else { if (api_get_session_id()) { if ($document_data['session_id'] == api_get_session_id()) { - $modify_icons .= ' '. + $modify_icons .= ' '. Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . ''; } else { $modify_icons .= ' ' . Display::return_icon('delete_na.png', get_lang('ThisFolderCannotBeDeleted'), array(), ICON_SIZE_SMALL); } } else { - $modify_icons .= ' ' . + $modify_icons .= ' ' . Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . ''; } } diff --git a/main/document/document.php b/main/document/document.php index 40200b6a40..72d842ac49 100755 --- a/main/document/document.php +++ b/main/document/document.php @@ -232,7 +232,10 @@ switch ($action) { if ($deleteDocument) { $certificateId = isset($_GET['delete_certificate_id']) ? $_GET['delete_certificate_id'] : null; DocumentManager::remove_attach_certificate(api_get_course_id(), $certificateId); - $message = Display::return_message(get_lang('DocDeleted').': '.$documentInfo['path'], 'success'); + $message = Display::return_message( + get_lang('DocDeleted') . ': ' . $documentInfo['title'], + 'success' + ); } else { $message = Display::return_message(get_lang('DocDeleteError'), 'warning'); } @@ -1205,6 +1208,7 @@ if ($is_allowed_to_edit || if ($post_dir_name == '../' || $post_dir_name == '.' || $post_dir_name == '..') { $message = Display::return_message(get_lang('CannotCreateDir'), 'error'); } else { + // dir_id is the parent folder id. if (!empty($_POST['dir_id'])) { // Get the document data from the ID $document_data = DocumentManager::get_document_data_by_id( @@ -1232,7 +1236,7 @@ if ($is_allowed_to_edit || $dir_check = $base_work_dir.$dir_name; $visibility = empty($groupId) ? null : 1; - $created_dir = create_unexisting_directory( + $newFolderData = create_unexisting_directory( $courseInfo, api_get_user_id(), $sessionId, @@ -1244,10 +1248,16 @@ if ($is_allowed_to_edit || $visibility ); - if ($created_dir) { - $message = Display::return_message(get_lang('DirCr').' '.$created_dir, 'confirmation'); + if (!empty($newFolderData)) { + $message = Display::return_message( + get_lang('DirCr') . ' ' . $newFolderData['title'], + 'confirmation' + ); } else { - $message = Display::return_message(get_lang('CannotCreateDir'), 'error'); + $message = Display::return_message( + get_lang('CannotCreateDir'), + 'error' + ); } } diff --git a/main/inc/lib/document.lib.php b/main/inc/lib/document.lib.php index cec3ec0d12..efc0a00d8a 100755 --- a/main/inc/lib/document.lib.php +++ b/main/inc/lib/document.lib.php @@ -1890,7 +1890,7 @@ class DocumentManager $visibility_command = 'invisible'; if (!is_dir($base_work_dir_test)) { - $created_dir = create_unexisting_directory( + create_unexisting_directory( $course_info, api_get_user_id(), api_get_session_id(), diff --git a/main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php b/main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php index 3c70695002..819922f380 100755 --- a/main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php +++ b/main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php @@ -804,7 +804,7 @@ class ImageManager //@todo make this str to functions $base_dir = substr($path, 0, strpos($path,'/document/')+9); // $new_dir = substr($fullpath, strlen($base_dir),-1); // - $created_dir = create_unexisting_directory($_course, api_get_user_id(), api_get_session_id(), 0,0, $base_dir, $new_dir,$newDir); + create_unexisting_directory($_course, api_get_user_id(), api_get_session_id(), 0,0, $base_dir, $new_dir,$newDir); $doc_id = DocumentManager::get_document_id($_course, $new_dir); api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', api_get_user_id(),null,null,null,null, api_get_session_id()); } else { diff --git a/main/inc/lib/fileUpload.lib.php b/main/inc/lib/fileUpload.lib.php index 630f92ae84..e687bc3c59 100755 --- a/main/inc/lib/fileUpload.lib.php +++ b/main/inc/lib/fileUpload.lib.php @@ -1334,6 +1334,11 @@ function search_img_from_html($html_file) { return $img_path_list; } +function get_folder_suffix($courseInfo, $sessionId, $groupId) +{ + return '_'.intval($sessionId).'_'.intval($groupId); +} + /** * Creates a new directory trying to find a directory name * that doesn't already exist @@ -1364,29 +1369,46 @@ function create_unexisting_directory( $title = null, $visibility = null ) { - $nb = ''; + $systemFolderName = $desired_dir_name; + // Adding prefix folder prefix + $prefix = get_folder_suffix($_course, $session_id, $to_group_id); + $systemFolderName .= $prefix; + + /*$nb = ''; // add numerical suffix to directory if another one of the same number already exists - while (file_exists($base_work_dir.$desired_dir_name.$nb)) { + while (file_exists($base_work_dir.$systemFolderName.$nb)) { $nb += 1; - } + }*/ if ($title == null) { $title = basename($desired_dir_name); } + $course_id = $_course['real_id']; + if (!is_dir($base_work_dir.$systemFolderName)) { + + mkdir( + $base_work_dir.$systemFolderName, + api_get_permissions_for_new_directories(), + true + ); - if (mkdir($base_work_dir.$desired_dir_name.$nb, api_get_permissions_for_new_directories(), true)) { // Check if pathname already exists inside document table $tbl_document = Database::get_course_table(TABLE_DOCUMENT); - $sql = "SELECT path FROM $tbl_document - WHERE c_id = $course_id AND path='".$desired_dir_name.$nb."'"; + $sql = "SELECT id, path FROM $tbl_document + WHERE + c_id = $course_id AND + ( + path = '".$systemFolderName."' + ) + "; $rs = Database::query($sql); if (Database::num_rows($rs) == 0) { $document_id = add_document( $_course, - $desired_dir_name . $nb, + $systemFolderName, 'folder', 0, $title, @@ -1431,12 +1453,28 @@ function create_unexisting_directory( $session_id ); } - return $desired_dir_name.$nb; - } + $documentData = DocumentManager::get_document_data_by_id( + $document_id, + $_course['code'], + false, + $session_id + ); + return $documentData; + } else { + return false; + } } else { + $document = Database::fetch_array($rs); + $documentData = DocumentManager::get_document_data_by_id( + $document['id'], + $_course['code'], + false, + $session_id + ); + /* This means the folder NOT exist in the filesystem (now this was created) but there is a record in the Database*/ - return $desired_dir_name.$nb; + return $documentData; } } else { return false; diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index b61bfe59ba..401e4e847b 100755 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -201,7 +201,7 @@ class GroupManager $desired_dir_name= '/'.replace_dangerous_char($name,'strict').'_groupdocs'; $my_path = api_get_path(SYS_COURSE_PATH) . $currentCourseRepository . '/document'; - $unique_name = create_unexisting_directory( + $newFolderData = create_unexisting_directory( $_course, api_get_user_id(), $session_id, @@ -213,6 +213,8 @@ class GroupManager 1 ); + $unique_name = $newFolderData['path']; + /* Stores the directory path into the group table */ $sql = "UPDATE ".$table_group." SET name = '".Database::escape_string($name)."', diff --git a/main/newscorm/learnpath.class.php b/main/newscorm/learnpath.class.php index ce83847a10..77ab818df9 100755 --- a/main/newscorm/learnpath.class.php +++ b/main/newscorm/learnpath.class.php @@ -5679,14 +5679,15 @@ class learnpath /** * Creates the default learning path folder * @param array $course - * @return bool|string + * @return bool */ public static function generate_learning_path_folder($course) { //Creating learning_path folder $dir = '/learning_path'; $filepath = api_get_path(SYS_COURSE_PATH).$course['path'] . '/document'; + $folder = false; if (!is_dir($filepath.'/'.$dir)) { - $folder = create_unexisting_directory( + $folderData = create_unexisting_directory( $course, api_get_user_id(), api_get_session_id(), @@ -5697,6 +5698,9 @@ class learnpath get_lang('LearningPaths'), 0 ); + if (!empty($folderData)) { + $folder = true; + } } else { $folder = true; } @@ -5708,7 +5712,8 @@ class learnpath * @param string $lp_name * @return array */ - public function generate_lp_folder($course, $lp_name = null) { + public function generate_lp_folder($course, $lp_name = null) + { $filepath = ''; $dir = '/learning_path/'; @@ -5717,14 +5722,26 @@ class learnpath } $folder = self::generate_learning_path_folder($course); - //Creating LP folder + // Creating LP folder if ($folder) { //Limits title size $title = api_substr(replace_dangerous_char($lp_name), 0 , 80); $dir = $dir.$title; $filepath = api_get_path(SYS_COURSE_PATH) . $course['path'] . '/document'; if (!is_dir($filepath.'/'.$dir)) { - $folder = create_unexisting_directory($course, api_get_user_id(), 0, 0, 0, $filepath, $dir , $lp_name); + $folderData = create_unexisting_directory( + $course, + api_get_user_id(), + 0, + 0, + 0, + $filepath, + $dir, + $lp_name + ); + if (!empty($folderData)) { + $folder = true; + } } else { $folder = true; } @@ -5733,7 +5750,11 @@ class learnpath $filepath = api_get_path(SYS_COURSE_PATH) . $course['path'] . '/document'.$dir; } } - $array = array('dir' => $dir, 'filepath' => $filepath, 'folder' => $folder); + $array = array( + 'dir' => $dir, + 'filepath' => $filepath, + 'folder' => $folder + ); return $array; }