diff --git a/main/document/document.inc.php b/main/document/document.inc.php index 24ec8ce2c0..e38da3769a 100755 --- a/main/document/document.inc.php +++ b/main/document/document.inc.php @@ -55,13 +55,6 @@ function build_directory_selector($folders, $curdirpath, $group_dir = '', $chang foreach ($folders as & $folder) { $selected = ($curdirpath == $folder) ? ' selected="selected"' : ''; $path_parts = explode('/', $folder); - - if ($folder_titles[$folder] == 'shared_folder') { - $folder_titles[$folder] = get_lang('SharedFolder'); - } elseif (strstr($folder_titles[$folder], 'sf_user_')) { - $userinfo = Database::get_user_info_from_id(substr($folder_titles[$folder], 8)); - $folder_titles[$folder] = api_get_person_name($userinfo['firstname'], $userinfo['lastname']); - } $folder_titles[$folder] = cut($folder_titles[$folder], 80); $label = str_repeat('   ', count($path_parts) - 2).' — '.$folder_titles[$folder]; $parent_select -> addOption($label, $folder); @@ -149,25 +142,26 @@ function create_document_link($www, $title, $path, $filetype, $size, $visibility //$tooltip_title = str_replace('?cidReq='.$_GET['cidReq'], '', basename($path)); $tooltip_title = explode('?', basename($path)); $tooltip_title = $tooltip_title[0]; - + + $tooltip_title_alt = $tooltip_title; if ($tooltip_title == 'shared_folder') { $tooltip_title_alt = get_lang('SharedFolder'); - } elseif(strstr($tooltip_title, 'sf_user_')) { + }elseif(strstr($tooltip_title, 'shared_folder_session_')) { + $tooltip_title_alt = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')'; + }elseif(strstr($tooltip_title, 'sf_user_')) { $userinfo = Database::get_user_info_from_id(substr($tooltip_title, 8)); - $tooltip_title_alt = api_get_person_name($userinfo['firstname'], $userinfo['lastname']); - } else { - $tooltip_title_alt = $tooltip_title; + $tooltip_title_alt = get_lang('SharedFolder').' ('.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).')'; } + if (!$show_as_icon) { if ($filetype == 'folder') { if (api_is_allowed_to_edit() || api_is_platform_admin() || api_get_setting('students_download_folders') == 'true') { - //filter when I am into shared folder, I can show for donwload only my shared folder - if(is_shared_folder($_GET['curdirpath'])) - { - $my_preg_folder="/shared_folder\/sf_user_".api_get_user_id()."$/"; - if (preg_match($my_preg_folder, urldecode($forcedownload_link))|| api_is_allowed_to_edit() || api_is_platform_admin()) + $current_session_id=api_get_session_id(); + if(is_shared_folder($_GET['curdirpath'],$current_session_id)) + { + if (preg_match('/shared_folder\/sf_user_'.api_get_user_id().'$/', urldecode($forcedownload_link))|| preg_match('/shared_folder_session_'.$current_session_id.'\/sf_user_'.api_get_user_id().'$/', urldecode($forcedownload_link)) || api_is_allowed_to_edit() || api_is_platform_admin()) { $force_download_html = ($size == 0) ? '' : ''.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).''; } @@ -208,7 +202,14 @@ function build_document_icon_tag($type, $path) { } else { $basename = get_lang('SharedFolder'); } - } elseif(strstr($basename, 'sf_user_')) { + }elseif(strstr($basename, 'shared_folder_session_')) { + if ($is_allowed_to_edit) { + $basename = '***('.api_get_session_name($current_session_id).')*** '.get_lang('HelpSharedFolder'); + } else { + $basename = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')'; + } + $icon = 'shared_folder.gif'; + }elseif(strstr($basename, 'sf_user_')) { $userinfo = Database::get_user_info_from_id(substr($basename, 8)); $image_path = UserManager::get_user_picture_path_by_id(substr($basename, 8), 'web', false, true); @@ -217,7 +218,9 @@ function build_document_icon_tag($type, $path) { } else { $icon = '../upload/users/'.substr($basename, 8).'/'.$image_path['file']; } - $basename = api_get_person_name($userinfo['firstname'], $userinfo['lastname']); + + $basename = get_lang('SharedFolder').' ('.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).')'; + } else { if (($basename =='audio' || $basename =='flash' || $basename =='images' || $basename =='video') && api_is_allowed_to_edit()) { $basename = get_lang('HelpDefaultDirDocuments'); @@ -484,24 +487,52 @@ function create_dir_form() { /** * Checks whether the user is in shared folder - * @return return bool Return true when user is in shared folder + * @return return bool Return true when user is into shared folder */ -function is_shared_folder($curdirpath) { - return Security::remove_XSS($curdirpath) == '/shared_folder'; +function is_shared_folder($curdirpath, $current_session_id) { + $clean_curdirpath = Security::remove_XSS($curdirpath); + if($clean_curdirpath== '/shared_folder'){ + return true; + } + elseif($clean_curdirpath== '/shared_folder_session_'.$current_session_id){ + return true; + } + else{ + return false; + } } /** - * Checks whether the user is in any user shared folder + * Checks whether the user is into any user shared folder * @return return bool Return true when user is in any user shared folder */ -function is_any_user_shared_folder($path) { - return preg_match('/shared_folder\/sf_user_/', Security::remove_XSS($path)); +function is_any_user_shared_folder($path, $current_session_id) { + $clean_path = Security::remove_XSS($path); + if(strpos($clean_path,'shared_folder/sf_user_')){ + return true; + } + elseif(strpos($clean_path, 'shared_folder_session_'.$current_session_id.'/sf_user_')){ + return true; + } + else{ + return false; + } } /** - * Checks whether the user is in his/her shared folder + * Checks whether the user is into his shared folder * @return return bool Return true when user is in his user shared folder */ -function is_my_shared_folder($user_id, $path) { - return Security::remove_XSS($path) == '/shared_folder/sf_user_'.$user_id; -} \ No newline at end of file +function is_my_shared_folder($user_id, $path, $current_session_id) { + $clean_path = Security::remove_XSS($path); + if($clean_path == '/shared_folder/sf_user_'.$user_id){ + return true; + } + elseif($clean_path == '/shared_folder_session_'.$current_session_id.'/sf_user_'.$user_id){ + return true; + } + else{ + return false; + } +} +?> \ No newline at end of file diff --git a/main/document/document.php b/main/document/document.php index 87df85a43d..135469d128 100755 --- a/main/document/document.php +++ b/main/document/document.php @@ -222,24 +222,46 @@ $course_quota = DocumentManager::get_course_quota(); $current_session_id = api_get_session_id(); -/* Create shared folder */ +/* Create shared folders */ -if (!file_exists($base_work_dir.'/shared_folder')) { - $usf_dir_title = get_lang('SharedFolder'); - $usf_dir_name = '/shared_folder'; - $to_group_id = 0; - $visibility = 0; - create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); +if($current_session_id==0){ + //Create shared folder. Necessary for courses recycled. Allways session_id should be zero. Allway should be created from a base course, never from a session. + if (!file_exists($base_work_dir.'/shared_folder')) { + $usf_dir_title = get_lang('SharedFolder'); + $usf_dir_name = '/shared_folder'; + $to_group_id = 0; + $visibility = 0; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } + // Create dynamic user shared folder + if (!file_exists($base_work_dir.'/shared_folder/sf_user_'.api_get_user_id())) { + $usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']); + $usf_dir_name = '/shared_folder/sf_user_'.api_get_user_id(); + $to_group_id = 0; + $visibility = 1; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } } - -if (!file_exists($base_work_dir.'/shared_folder/sf_user_'.api_get_user_id())) { - $usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']); - $usf_dir_name = '/shared_folder/sf_user_'.api_get_user_id(); - $to_group_id = 0; - $visibility = 0; - create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); +else{ + //Create shared folder session + if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id)) { + $usf_dir_title = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')'; + $usf_dir_name = '/shared_folder_session_'.$current_session_id; + $to_group_id = 0; + $visibility = 0; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } + //Create dynamic user shared folder into a shared folder session + if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id())) { + $usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']).' ('.api_get_session_name($current_session_id).')'; + $usf_dir_name = '/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id(); + $to_group_id = 0; + $visibility = 1; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } } + /* MAIN SECTION */ if (isset($_GET['action']) && $_GET['action'] == 'download') { @@ -277,13 +299,13 @@ if (isset($_GET['action']) && $_GET['action'] == 'download') { // Download a folder -if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && $curdirpath!='/' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) { +if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) { //filter when I am into shared folder, I can donwload only my shared folder - if(is_any_user_shared_folder($_GET['path'])) + if(is_any_user_shared_folder($_GET['path'],$current_session_id)) { - if(is_my_shared_folder($_user['user_id'], $_GET['path']) || api_is_allowed_to_edit() || api_is_platform_admin()) + if(is_my_shared_folder($_user['user_id'], $_GET['path'], $current_session_id) || api_is_allowed_to_edit() || api_is_platform_admin()) { require 'downloadfolder.inc.php'; } @@ -323,12 +345,7 @@ if (!$is_certificate_mode) { $dir_acum = ''; for ($i = 0; $i < $array_len; $i++) { - if ($dir_array[$i] == 'shared_folder') { - $dir_array[$i] = get_lang('SharedFolder'); - } elseif (strpos($dir_array[$i], 'sf_user_') !== false) { - $userinfo = Database::get_user_info_from_id(substr($dir_array[$i], 8)); - $dir_array[$i] = api_get_person_name($userinfo['firstname'], $userinfo['lastname']); - } + $url_dir = 'document.php?&curdirpath='.$dir_acum.$dir_array[$i]; @@ -655,9 +672,11 @@ if ($is_certificate_mode && $curdirpath != '/certificates') { } if (isset($docs_and_folders) && is_array($docs_and_folders)) { + //echo('
');
 	//print_r($docs_and_folders);
 	//echo('
'); + // Do we need the title field for the document name or not? // We get the setting here, so we only have to do it once $use_document_title = api_get_setting('use_document_title'); @@ -676,15 +695,7 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) { if ($use_document_title == 'true' && $id['title'] != '') { $document_name = $id['title']; } else { - $document_name = basename($id['path']); - // Juan Carlos Raña: Get firstname and lastname when folder is in shared_folder. - // TODO: Check if is also necessary (above else) - if (strstr($document_name, 'sf_user_')) { - $userinfo = Database::get_user_info_from_id(substr($document_name, 8)); - $document_name = api_get_person_name($userinfo['firstname'], $userinfo['lastname']); - } elseif (strpos($document_name, 'shared_folder') !== false) { - $document_name = get_lang('SharedFolder'); - } + $document_name = basename($id['path']); } // Data for checkbox if (($is_allowed_to_edit || $group_member_with_upload_rights) && count($docs_and_folders) > 1) { @@ -746,13 +757,13 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) { $column_show = array(); -if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_folder($_user['user_id'], $curdirpath)) { +if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_folder($_user['user_id'], $curdirpath, $current_session_id)) { - // @TODO:check enable more options for shared folders + // TODO:check enable more options for shared folders /* CREATE NEW DOCUMENT OR NEW DIRECTORY / GO TO UPLOAD / DOWNLOAD ZIPPED FOLDER */ // Create new document - if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath)) { + if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath, $current_session_id)) { ?>   @@ -775,7 +786,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold   @@ -792,7 +803,7 @@ if (!is_null($docs_and_folders)) { if (!$is_certificate_mode && $total_size != 0 && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) { //don't show icon into shared folder, and don´t show into main path (root) - if (!is_shared_folder($curdirpath) && $curdirpath!='/' || api_is_allowed_to_edit() || api_is_platform_admin()) + if (!is_shared_folder($curdirpath, $current_session_id) && $curdirpath!='/' || api_is_allowed_to_edit() || api_is_platform_admin()) { echo ''.Display::display_icon('zip_save.gif', get_lang('Save').' (ZIP)'). get_lang('Save').' (ZIP) '; } @@ -878,4 +889,5 @@ if (!empty($table_footer)) { } // Footer -Display::display_footer(); +Display::display_footer() +?> \ No newline at end of file diff --git a/main/document/downloadfolder.inc.php b/main/document/downloadfolder.inc.php index c88fb4576a..3b95b220b8 100755 --- a/main/document/downloadfolder.inc.php +++ b/main/document/downloadfolder.inc.php @@ -21,6 +21,14 @@ if (($path != '/') && (!DocumentManager::get_document_id($_course, $path))) { $path = '/'; } +//a student should not be able to download a root shared directory +if (($path == '/shared_folder' || $path=='/shared_folder_session_'.api_get_session_id()) && (!api_is_allowed_to_edit() || !api_is_platform_admin())){ + echo '
'; + Display::display_error_message(get_lang('NotAllowedClickBack').'

'.get_lang('BackToPreviousPage').'
', false); + echo '
'; + exit; +} + //zip library for creation of the zipfile include api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php'; diff --git a/main/document/upload.php b/main/document/upload.php index f352fe0284..a00530a34f 100755 --- a/main/document/upload.php +++ b/main/document/upload.php @@ -198,7 +198,7 @@ if (isset($_SESSION['_gid']) && $_SESSION['_gid'] != '') { // If the group id is } else { api_not_allowed(true); } -} elseif ($is_allowed_to_edit || is_my_shared_folder($_user['user_id'], $path)) { // Admin for "regular" upload, no group documents. And check if is my shared folder +} elseif ($is_allowed_to_edit || is_my_shared_folder($_user['user_id'], $path,api_get_session_id())) { // Admin for "regular" upload, no group documents. And check if is my shared folder $to_group_id = 0; $req_gid = ''; } else { // No course admin and no group member... @@ -488,7 +488,7 @@ if ($is_certificate_mode) { } // Link to create a folder -if (!isset($_GET['createdir']) && !is_my_shared_folder($_user['user_id'], $path) && !$is_certificate_mode) { +if (!isset($_GET['createdir']) && !is_my_shared_folder($_user['user_id'], $path, api_get_session_id()) && !$is_certificate_mode) { echo ''.Display::return_icon('folder_new.gif', get_lang('CreateDir')).get_lang('CreateDir').''; } echo ''; diff --git a/main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php b/main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php old mode 100644 new mode 100755 index 510759c72e..96cb33881c --- a/main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php +++ b/main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php @@ -33,11 +33,18 @@ function GetFolders( $resourceType, $currentFolder ) $oCurrentFolder = @opendir( $sServerDir ) ; $in_group = api_is_in_group(); - $in_shared_folder = $currentFolder == '/shared_folder/'; + if($currentFolder=='/shared_folder/' || $currentFolder =='/shared_folder_session_'.api_get_session_id().'/') + { + $in_shared_folder=true; + } + else + { + $in_shared_folder=false; + } $user_id = api_get_user_id(); if ($oCurrentFolder !== false) - { + { while ( $sFile = readdir( $oCurrentFolder ) ) { if ( $sFile != '.' && $sFile != '..' @@ -79,7 +86,16 @@ function GetFoldersAndFiles( $resourceType, $currentFolder ) $oCurrentFolder = @opendir( $sServerDir ) ; $in_group = api_is_in_group(); - $in_shared_folder = $currentFolder == '/shared_folder/'; + + if($currentFolder=='/shared_folder/' || $currentFolder =='/shared_folder_session_'.api_get_session_id().'/') + { + $in_shared_folder=true; + } + else + { + $in_shared_folder=false; + } + $user_id = api_get_user_id(); if ($oCurrentFolder !== false) diff --git a/main/inc/lib/fckeditor/editor/filemanager/connectors/php/config.php b/main/inc/lib/fckeditor/editor/filemanager/connectors/php/config.php index fd73f079bc..9ea14cc4ba 100755 --- a/main/inc/lib/fckeditor/editor/filemanager/connectors/php/config.php +++ b/main/inc/lib/fckeditor/editor/filemanager/connectors/php/config.php @@ -49,8 +49,16 @@ if (api_is_in_course()) { if (api_is_allowed_to_edit()) { $Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/'; } else { - // 1.2. Student - $Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + // 1.2. Student + $current_session_id = api_get_session_id(); + if($current_session_id==0) + { + $Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + } + else + { + $Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + } } } else { // 2. Inside a course and inside a group. diff --git a/main/inc/lib/fckeditor/editor/plugins/ImageManager/config.inc.php b/main/inc/lib/fckeditor/editor/plugins/ImageManager/config.inc.php index ef5b1074da..ea11027b57 100755 --- a/main/inc/lib/fckeditor/editor/plugins/ImageManager/config.inc.php +++ b/main/inc/lib/fckeditor/editor/plugins/ImageManager/config.inc.php @@ -46,9 +46,18 @@ if (api_is_in_course()) } else { - // 1.2. Student - $IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; - $IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + // 1.2. Student + $current_session_id = api_get_session_id(); + if($current_session_id==0) + { + $IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + $IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + } + else + { + $IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + $IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + } } } else diff --git a/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_file_upload.php b/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_file_upload.php old mode 100644 new mode 100755 index 3a9d8f9079..045ae52f1f --- a/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_file_upload.php +++ b/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_file_upload.php @@ -85,7 +85,15 @@ { if(!api_is_allowed_to_edit()) { - $dokeosFolder='/shared_folder/sf_user_'.api_get_user_id().$dokeosFolder; + $current_session_id = api_get_session_id(); + if($current_session_id==0) + { + $dokeosFolder='/shared_folder/sf_user_'.api_get_user_id().$dokeosFolder; + } + else + { + $dokeosFolder='/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().$dokeosFolder; + } } } diff --git a/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php b/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php index a72c226e3c..1137d9d07a 100755 --- a/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php +++ b/main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php @@ -101,7 +101,15 @@ } else { - $PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + $current_session_id = api_get_session_id(); + if($current_session_id==0) + { + $PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + } + else + { + $PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + } } } } diff --git a/main/inc/lib/fckeditor/fckeditor.php b/main/inc/lib/fckeditor/fckeditor.php index 49252e9e26..23e43e1602 100755 --- a/main/inc/lib/fckeditor/fckeditor.php +++ b/main/inc/lib/fckeditor/fckeditor.php @@ -491,9 +491,20 @@ class FCKeditor $config['BaseHref'] = $script_path; } else { // 1.2. Student - $config['CreateDocumentWebDir'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; - $config['CreateDocumentDir'] = $relative_path_prefix.'courses/'.api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; - $config['BaseHref'] = $script_path; + $current_session_id = api_get_session_id(); + if($current_session_id==0) + { + + $config['CreateDocumentWebDir'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + $config['CreateDocumentDir'] = $relative_path_prefix.'courses/'.api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/'; + $config['BaseHref'] = $script_path; + } + else + { + $config['CreateDocumentWebDir'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document//shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + $config['CreateDocumentDir'] = $relative_path_prefix.'courses/'.api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/'; + $config['BaseHref'] = $script_path; + } } } else { // 2. Inside a course and inside a group. diff --git a/main/inc/lib/fckeditor/repository.php b/main/inc/lib/fckeditor/repository.php index 436e0ee0d1..74f91b8c7d 100755 --- a/main/inc/lib/fckeditor/repository.php +++ b/main/inc/lib/fckeditor/repository.php @@ -51,25 +51,49 @@ if (api_is_platform_admin()) { @mkdir($homepage_folder, $permissions_for_new_directories); } } -$current_session_id = api_get_session_id(); -// Creation in the course document repository of a shared folder if it does not exist. -if (api_is_in_course()) { - $course_shared_folder = api_get_path(SYS_PATH).'courses/'.$_course['path'].'/document/shared_folder/'; - if (!file_exists($course_shared_folder)) { - @mkdir($course_shared_folder, $permissions_for_new_directories); - $doc_id = add_document($_course, '/shared_folder', 'folder', 0, 'shared_folder'); - api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'FolderCreated', api_get_user_id(),null,null,null,null,$current_session_id); - api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', api_get_user_id(),null,null,null,null,$current_session_id); - } - // Added by Ivan Tcholakov. - // When the current user is inside a course, his/her own hidden folder is created (if it does not exist) under shared_folder. - if (!file_exists($course_shared_folder.'sf_user_'.api_get_user_id())) { - //@todo call the create_unexisting_directory function and replace this code Julio Montoya - $new_user_dir = api_get_path(SYS_PATH).'courses/'.$_course['path'].'/document/shared_folder/sf_user_'.api_get_user_id().'/'; - @mkdir($new_user_dir, $permissions_for_new_directories); - $doc_id = add_document($_course, '/shared_folder/sf_user_'.api_get_user_id(), 'folder', 0, api_get_person_name($_user['firstName'], $_user['lastName'])); - api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'FolderCreated', api_get_user_id(),null,null,null,null,$current_session_id); - api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', api_get_user_id(),null,null,null,null,$current_session_id); + +// Create course shared folders +if (api_is_in_course()) { + $course_dir = $_course['path'].'/document'; + $sys_course_path = api_get_path(SYS_COURSE_PATH); + $base_work_dir = $sys_course_path.$course_dir; + $current_session_id = api_get_session_id(); + + if($current_session_id==0){ + //Create shared folder. Necessary for courses recycled. Allways session_id should be zero. Allway should be created from a base course, never from a session. + if (!file_exists($base_work_dir.'/shared_folder')) { + $usf_dir_title = get_lang('SharedFolder'); + $usf_dir_name = '/shared_folder'; + $to_group_id = 0; + $visibility = 0; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } + // Create dynamic user shared folder + if (!file_exists($base_work_dir.'/shared_folder/sf_user_'.api_get_user_id())) { + $usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']); + $usf_dir_name = '/shared_folder/sf_user_'.api_get_user_id(); + $to_group_id = 0; + $visibility = 1; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } } -} + else{ + //Create shared folder session + if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id)) { + $usf_dir_title = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')'; + $usf_dir_name = '/shared_folder_session_'.$current_session_id; + $to_group_id = 0; + $visibility = 0; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } + //Create dynamic user shared folder into a shared folder session + if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id())) { + $usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']).' ('.api_get_session_name($current_session_id).')'; + $usf_dir_name = '/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id(); + $to_group_id = 0; + $visibility = 1; + create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility); + } + } +} \ No newline at end of file