Fixing bugs when creating folders see #3777

skala
Julio Montoya 14 years ago
parent ba4a83b77e
commit 5d38410294
  1. 19
      main/document/create_document.php
  2. 19
      main/document/create_draw.php
  3. 23
      main/document/create_paint.php
  4. 94
      main/document/document.php
  5. 12
      main/document/upload.php
  6. 20
      main/inc/lib/document.lib.php

@ -168,7 +168,7 @@ $nameTools = get_lang('CreateDocument');
/* Constants and variables */
$document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id());
$document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id(), true);
if (empty($document_data)) {
if (api_is_in_group()) {
$group_properties = GroupManager::get_group_properties(api_get_group_id());
@ -616,19 +616,16 @@ if ($form->validate()) {
}
*/
$dir_acum = '';
for ($i = 0; $i < $array_len; $i++) {
$url_dir = 'document.php?&curdirpath='.$dir_acum.$dir_array[$i];
//Max char 80
$url_to_who = cut($dir_array[$i],80);
if ($is_certificate_mode) {
$interbreadcrumb[] = array('url' => $url_dir.'&selectcat='.Security::remove_XSS($_GET['selectcat']), 'name' => $url_to_who);
} else {
$interbreadcrumb[] = array('url' => $url_dir, 'name' => $url_to_who);
// Interbreadcrumb for the current directory root path
if (empty($document_data['parents'])) {
$interbreadcrumb[] = array('url' => '#', 'name' => $document_data['title']);
} else {
foreach($document_data['parents'] as $document_sub_data) {
$interbreadcrumb[] = array('url' => $document_sub_data['document_url'], 'name' => $document_sub_data['title']);
}
$dir_acum .= $dir_array[$i].'/';
}
Display :: display_header($nameTools, "Doc");
//api_display_tool_title($nameTools);
// actions

@ -31,7 +31,7 @@ $nameTools = get_lang('Draw');
api_protect_course_script();
api_block_anonymous_users();
$document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id());
$document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true);
if (empty($document_data)) {
if (api_is_in_group()) {
$group_properties = GroupManager::get_group_properties(api_get_group_id());
@ -129,18 +129,13 @@ if (isset ($group)) {
}
}
*/
$dir_acum = '';
for ($i = 0; $i < $array_len; $i++) {
$url_dir = 'document.php?&curdirpath='.$dir_acum.$dir_array[$i];
//Max char 80
$url_to_who = cut($dir_array[$i],80);
if ($is_certificate_mode) {
$interbreadcrumb[] = array('url' => $url_dir.'&selectcat='.Security::remove_XSS($_GET['selectcat']), 'name' => $url_to_who);
} else {
$interbreadcrumb[] = array('url' => $url_dir, 'name' => $url_to_who);
// Interbreadcrumb for the current directory root path
if (empty($document_data['parents'])) {
$interbreadcrumb[] = array('url' => '#', 'name' => $document_data['title']);
} else {
foreach($document_data['parents'] as $document_sub_data) {
$interbreadcrumb[] = array('url' => $document_sub_data['document_url'], 'name' => $document_sub_data['title']);
}
$dir_acum .= $dir_array[$i].'/';
}
Display :: display_header($nameTools, 'Doc');

@ -31,7 +31,7 @@ if (api_get_setting('enabled_support_paint') == 'false') {
api_not_allowed(true);
}
$document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id());
$document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true);
if (empty($document_data)) {
if (api_is_in_group()) {
$group_properties = GroupManager::get_group_properties(api_get_group_id());
@ -113,22 +113,13 @@ if (isset ($group)) {
}
// Interbreadcrumb for the current directory root path
// Copied from document.php
$dir_array = explode('/', $dir);
$array_len = count($dir_array);
$dir_acum = '';
for ($i = 0; $i < $array_len; $i++) {
$url_dir = 'document.php?&curdirpath='.$dir_acum.$dir_array[$i];
//Max char 80
$url_to_who = cut($dir_array[$i],80);
if ($is_certificate_mode) {
$interbreadcrumb[] = array('url' => $url_dir.'&selectcat='.Security::remove_XSS($_GET['selectcat']), 'name' => $url_to_who);
} else {
$interbreadcrumb[] = array('url' => $url_dir, 'name' => $url_to_who);
}
$dir_acum .= $dir_array[$i].'/';
if (empty($document_data['parents'])) {
$interbreadcrumb[] = array('url' => '#', 'name' => $document_data['title']);
} else {
foreach($document_data['parents'] as $document_sub_data) {
$interbreadcrumb[] = array('url' => $document_sub_data['document_url'], 'name' => $document_sub_data['title']);
}
//
}
Display :: display_header($nameTools, 'Doc');
echo '<div class="actions">';

@ -31,7 +31,6 @@
/**
* Code
*/
/* INIT SECTION */
// Language files that need to be included
$language_file = array('document', 'slideshow', 'gradebook', 'create_course');
@ -180,10 +179,13 @@ $is_certificate_mode = DocumentManager::is_certificate_mode($_GET['curdirpath'])
//If no actions we proceed to show the document (Hack in order to use document.php?id=X)
if (isset($document_id)) {
$document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id());
$document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id(), true);
//If the document is not a folder we show the document
if ($document_data) {
$parent_id = $document_data['parent_id'];
if (!empty($document_data['filetype']) && $document_data['filetype'] == 'file') {
$visibility = DocumentManager::is_visible_by_id($document_id, $course_info, api_get_session_id(), api_get_user_id());
if ($visibility && api_is_allowed_to_session_edit()) {
@ -194,30 +196,44 @@ if (isset($document_id)) {
}
$_GET['curdirpath'] = $document_data['path'];
}
}
// What's the current path?
// We will verify this a bit further down
if (isset($_GET['curdirpath']) && $_GET['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_GET['curdirpath']);
} elseif (isset($_POST['curdirpath']) && $_POST['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_POST['curdirpath']);
// What's the current path?
// We will verify this a bit further down
if (isset($_GET['curdirpath']) && $_GET['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_GET['curdirpath']);
} elseif (isset($_POST['curdirpath']) && $_POST['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_POST['curdirpath']);
} else {
$curdirpath = '/';
}
$curdirpathurl = urlencode($curdirpath);
} else {
$curdirpath = '/';
}
// What's the current path?
// We will verify this a bit further down
if (isset($_GET['curdirpath']) && $_GET['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_GET['curdirpath']);
} elseif (isset($_POST['curdirpath']) && $_POST['curdirpath'] != '') {
$curdirpath = Security::remove_XSS($_POST['curdirpath']);
} else {
$curdirpath = '/';
}
$curdirpathurl = urlencode($curdirpath);
$curdirpathurl = urlencode($curdirpath);
// Check the path
// If the path is not found (no document id), set the path to /
$document_id = DocumentManager::get_document_id($course_info, $curdirpath);
// Check the path
// If the path is not found (no document id), set the path to /
$document_id = DocumentManager::get_document_id($course_info, $curdirpath);
if (!$document_id) {
$document_id = DocumentManager::get_document_id($course_info, $curdirpath);
if (!$document_id) {
$document_id = DocumentManager::get_document_id($course_info, $curdirpath);
}
$document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id(), true);
$parent_id = $document_data['parent_id'];
}
$document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id());
$parent_id = DocumentManager::get_document_id($course_info, dirname($document_data['path']));
if (!$parent_id) {
$parent_id = 0;
@ -225,7 +241,6 @@ if (!$parent_id) {
$current_folder_id = $document_id;
// Show preview
if (isset($_GET['curdirpath']) && $_GET['curdirpath'] == '/certificates' && isset($_GET['set_preview']) && $_GET['set_preview'] == strval(intval($_GET['set_preview']))) {
if (isset($_GET['set_preview'])) {
@ -355,32 +370,15 @@ if ($is_certificate_mode) {
}
// Interbreadcrumb for the current directory root path
$dir_array = explode('/', $curdirpath);
$array_len = count($dir_array);
$dir_acum = '';
for ($i = 0; $i < $array_len; $i++) {
$url_dir = 'document.php?&amp;curdirpath='.$dir_acum.$dir_array[$i];
//Max char 80
$url_to_who = cut($dir_array[$i],80);
if ($is_certificate_mode) {
$interbreadcrumb[] = array('url' => $url_dir.'&amp;selectcat='.Security::remove_XSS($_GET['selectcat']), 'name' => $url_to_who);
} else {
if( $i == $array_len - 1 && !isset($_GET['createdir']) ) {
$url_dir = '#';
}
if ($url_to_who == 'learning_path') {
$url_to_who = get_lang('LearningPaths');
}
$interbreadcrumb[] = array('url' => $url_dir, 'name' => $url_to_who);
}
//does not repeat the name group in the url
if (!empty($_SESSION['_gid'])) {
unset($dir_array[1]);
}
$dir_acum .= $dir_array[$i].'/';
if (empty($document_data['parents'])) {
$interbreadcrumb[] = array('url' => '#', 'name' => $document_data['title']);
} else {
foreach($document_data['parents'] as $document_sub_data) {
if (!isset($_GET['createdir']) && $document_sub_data['id'] == $document_data['id']) {
$document_sub_data['document_url'] = '#';
}
$interbreadcrumb[] = array('url' => $document_sub_data['document_url'], 'name' => $document_sub_data['title']);
}
}
if (isset($_GET['createdir'])) {
@ -688,7 +686,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
if (isset($_POST['create_dir']) && $_POST['dirname'] != '') {
// Needed for directory creation
require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php';
$post_dir_name = Security::remove_XSS($_POST['dirname']);
$post_dir_name = $_POST['dirname'];
if ($post_dir_name == '../' || $post_dir_name == '.' || $post_dir_name == '..') {
Display::display_error_message(get_lang('CannotCreateDir'));
@ -701,6 +699,8 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
$dir_name = $curdirpath.$added_slash.replace_dangerous_char($post_dir_name);
$dir_name = disable_dangerous_file($dir_name);
$dir_name = str_replace('.', '_', $dir_name);
//@todo why the folder name can't have a dot. It's just the folder name
$post_dir_name = str_replace('.', '_', $post_dir_name);
$dir_check = $base_work_dir.$dir_name;

@ -109,7 +109,7 @@ $courseDir = $_course['path'].'/document';
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$base_work_dir = $sys_course_path.$courseDir;
$document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id());
$document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id(), true);
if (empty($document_data)) {
$document_id = $parent_id = 0;
$path = '/';
@ -176,6 +176,16 @@ if ($is_certificate_mode) {
$interbreadcrumb[] = array('url' => './document.php?id='.$document_id.$req_gid, 'name'=> get_lang('Documents'));
}
// Interbreadcrumb for the current directory root path
if (empty($document_data['parents'])) {
$interbreadcrumb[] = array('url' => '#', 'name' => $document_data['title']);
} else {
foreach($document_data['parents'] as $document_sub_data) {
$interbreadcrumb[] = array('url' => $document_sub_data['document_url'], 'name' => $document_sub_data['title']);
}
}
$this_section = SECTION_COURSES;

@ -1001,7 +1001,7 @@ return 'application/octet-stream';
* @todo load parent_id
* @return int id of document / false if no doc found
*/
public static function get_document_data_by_id($id, $course_code) {
public static function get_document_data_by_id($id, $course_code, $load_parents = false) {
$course_info = api_get_course_info($course_code);
if (empty($course_info)) {
return false;
@ -1016,10 +1016,28 @@ return 'application/octet-stream';
$row = Database::fetch_array($result,'ASSOC');
//Public document URL
$row['url'] = api_get_path(WEB_CODE_PATH).'document/showinframes.php?cidReq='.$course_code.'&id='.$id;
$row['document_url'] = api_get_path(WEB_CODE_PATH).'document/document.php?cidReq='.$course_code.'&id='.$id;
$url_path = urlencode($row['path']);
$path = str_replace('%2F', '/',$url_path);
$row['direct_url'] = $www.$path;
$row['parent_id'] = self::get_document_id($course_info, dirname($row['path']));
$parents = array();
//Use to generate the breadcrumb
if ($load_parents) {
$dir_array = explode('/', $row['path']);
$dir_array = array_filter($dir_array);
$array_len = count($dir_array) +1 ;
$real_dir = '';
for ($i = 1; $i < $array_len; $i++) {
$real_dir .= '/'.$dir_array[$i];
$parent_id = self::get_document_id($course_info, $real_dir);
if (!empty($parent_id)) {
$parents[] = self::get_document_data_by_id($parent_id, $course_code, false);
}
}
}
$row['parents'] = $parents;
return $row;
}
return false;

Loading…
Cancel
Save