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 '