diff --git a/pandora_console/include/functions_filemanager.php b/pandora_console/include/functions_filemanager.php index b3191e1e98..a22e3561cb 100644 --- a/pandora_console/include/functions_filemanager.php +++ b/pandora_console/include/functions_filemanager.php @@ -111,6 +111,15 @@ if (!function_exists ('mime_content_type')) { } } +global $config; + +if (isset($config['homedir_filemanager'])) { + $homedir_filemanager = $config['homedir_filemanager']; +} +else { + $homedir_filemanager = $config['homedir']; +} + $upload_file_or_zip = (bool) get_parameter('upload_file_or_zip'); if ($upload_file_or_zip) { @@ -166,7 +175,7 @@ if ($upload_file) { $nombre_archivo = $real_directory .'/'. $filename; } else { - $nombre_archivo = $config['homedir'] . '/' . + $nombre_archivo = $homedir_filemanager . '/' . $directory . '/' . $filename; } @@ -235,7 +244,7 @@ if ($create_text_file) { $nombre_archivo = $real_directory . '/' . $filename; } else { - $nombre_archivo = $config['homedir'] . '/' . + $nombre_archivo = $homedir_filemanager . '/' . $directory . '/' . $filename; } @@ -294,7 +303,7 @@ if ($upload_zip) { $nombre_archivo = $real_directory .'/'. $filename; } else { - $nombre_archivo = $config['homedir'].'/'.$directory.'/'.$filename; + $nombre_archivo = $homedir_filemanager . '/'.$directory.'/'.$filename; } if (! @copy ($_FILES['file']['tmp_name'], $nombre_archivo )) { @@ -306,7 +315,7 @@ if ($upload_zip) { //Extract the zip file $zip = new ZipArchive; - $pathname = $config['homedir'].'/'.$directory.'/'; + $pathname = $homedir_filemanager . '/'.$directory.'/'; if ($zip->open($nombre_archivo) === true) { $zip->extractTo($pathname); @@ -341,7 +350,7 @@ if ($create_dir) { $dirname = io_safe_output($dirname); if ($dirname != '') { - @mkdir ($config['homedir'] . '/' . + @mkdir ($homedir_filemanager . '/' . $directory . '/' . $dirname); $config['filemanager']['message'] = ui_print_success_message(__('Directory created'), '', true); @@ -460,15 +469,30 @@ function filemanager_read_recursive_dir($dir, $relative_path = '') { */ function filemanager_file_explorer($real_directory, $relative_directory, $url, $father = '', $editor = false, $readOnly = false, - $url_file = '', $download_button = false, $umask = '') { + $url_file = '', $download_button = false, $umask = '', + $homedir_filemanager = false) { global $config; - + + // Windows compatibility $real_directory = str_replace("\\", "/", $real_directory); $relative_directory = str_replace("\\", "/", $relative_directory); $father = str_replace("\\", "/", $father); + if ($homedir_filemanager === false) { + $homedir_filemanager = $config['homedir']; + unset($config['homedir_filemanager']); + config_update_value('homedir_filemanager', + $homedir_filemanager); + } + else { + $config['homedir_filemanager'] = $homedir_filemanager; + + } + + + $hack_metaconsole = ''; if (defined('METACONSOLE')) $hack_metaconsole = '../../'; @@ -675,7 +699,7 @@ function filemanager_file_explorer($real_directory, $relative_directory, $data[4] .= html_print_input_hidden('hash', md5($fileinfo['realpath'] . $config['dbpass']), true); $data[4] .= html_print_input_hidden ('delete_file', 1, true); - $relative_dir = str_replace($config['homedir'], '', str_replace("\\", "/", dirname($fileinfo['realpath']))); + $relative_dir = str_replace($homedir_filemanager, '', str_replace("\\", "/", dirname($fileinfo['realpath']))); if ($relative_dir[0] == '/') { $relative_dir = substr($relative_dir, 1); } @@ -734,236 +758,6 @@ function filemanager_file_explorer($real_directory, $relative_directory, html_print_table ($table); } -/** - * - * @param string $real_directory The string of dir as realpath. - * @param string $relative_directory The string of dir as relative path. - * @param string $url The url to set in the forms and some links in the explorer. - */ -function filemanager_box_upload_file_complex($real_directory, $relative_directory, $url = '') { - global $config; - - // Windows compatibility - $real_directory = str_replace("\\", "/", $real_directory); - $relative_directory = str_replace("\\", "/", $relative_directory); - - $table->width = '100%'; - - $table->data = array (); - - if (! filemanager_is_writable_dir ($real_directory)) { - ui_print_error_message(__('Current directory is not writable by HTTP Server')); - echo '
'; - echo __('Please check that current directory has write rights for HTTP server'); - echo '
'; - } - else { - $table->data[1][0] = __('Upload') . ui_print_help_tip (__("The zip upload in this dir, easy to upload multiple files."), true); - $table->data[1][1] = html_print_input_file ('file', true, false); - $table->data[1][2] = html_print_radio_button('zip_or_file', 'zip', __('Multiple files zipped'), false, true); - $table->data[1][3] = html_print_radio_button('zip_or_file', 'file', __('One'), true, true); - $table->data[1][4] = html_print_submit_button (__('Go'), 'go', false, - 'class="sub next"', true); - $table->data[1][4] .= html_print_input_hidden ('real_directory', $real_directory, true); - $table->data[1][4] .= html_print_input_hidden ('directory', $relative_directory, true); - $table->data[1][4] .= html_print_input_hidden('hash', md5($real_directory . $relative_directory . $config['dbpass']), true); - $table->data[1][4] .= html_print_input_hidden ('upload_file_or_zip', 1, true); - } - - echo ''; -} - -/** - * Print the box of fields for upload file. - * - * @param string $real_directory The string of dir as realpath. - * @param string $relative_directory The string of dir as relative path. - * @param string $url The url to set in the forms and some links in the explorer. - */ -function filemanager_box_upload_file_explorer($real_directory, $relative_directory, $url = '') { - global $config; - - // Windows compatibility - $real_directory = str_replace("\\", "/", $real_directory); - $relative_directory = str_replace("\\", "/", $relative_directory); - - $table->width = '50%'; - - $table->data = array (); - - if (! filemanager_is_writable_dir ($real_directory)) { - ui_print_error_message(__('Current directory is not writable by HTTP Server')); - echo ''; - echo __('Please check that current directory has write rights for HTTP server'); - echo '
'; - } - else { - $table->data[1][0] = __('Upload file'); - $table->data[1][1] = html_print_input_file ('file', true, false); - $table->data[1][2] = html_print_submit_button (__('Go'), 'go', false, - 'class="sub next"', true); - $table->data[1][2] .= html_print_input_hidden ('real_directory', $real_directory, true); - $table->data[1][2] .= html_print_input_hidden ('directory', $relative_directory, true); - $table->data[1][2] .= html_print_input_hidden('hash', md5($real_directory . $relative_directory . $config['dbpass']), true); - $table->data[1][2] .= html_print_input_hidden ('upload_file', 1, true); - } - - echo ''; -} - -/** - * Print the box of fields for upload file zip. - * - * @param unknown_type $real_directory - * @param unknown_type $relative_directory - * @param string $url The url to set in the forms and some links in the explorer. - */ -function filemanager_box_upload_zip_explorer($real_directory, $relative_directory, $url = '') { - global $config; - - // Windows compatibility - $real_directory = str_replace("\\", "/", $real_directory); - $relative_directory = str_replace("\\", "/", $relative_directory); - - $table->width = '60%'; - - $table->data = array (); - - if (! filemanager_is_writable_dir ($real_directory)) { - ui_print_error_message(__('Current directory is not writable by HTTP Server')); - echo ''; - echo __('Please check that current directory has write rights for HTTP server'); - echo '
'; - } - else { - $table->data[1][0] = __('Upload zip file: ') . ui_print_help_tip (__("The zip upload in this dir, easy to upload multiple files."), true); - $table->data[1][1] = html_print_input_file ('file', true, false); - $table->data[1][2] = html_print_submit_button (__('Go'), 'go', false, - 'class="sub next"', true); - $table->data[1][2] .= html_print_input_hidden ('real_directory', $real_directory, true); - $table->data[1][2] .= html_print_input_hidden ('directory', $relative_directory, true); - $table->data[1][2] .= html_print_input_hidden('hash', md5($real_directory . $relative_directory . $config['dbpass']), true); - $table->data[1][2] .= html_print_input_hidden ('upload_zip', 1, true); - } - - echo ''; -} - -/** - * Print the box of fields for create the text file. - * - * @param unknown_type $real_directory - * @param unknown_type $relative_directory - * @param string $url The url to set in the forms and some links in the explorer. - */ -function filemanager_box_create_text_explorer($real_directory, $relative_directory, $url = '') { - global $config; - - // Windows compatibility - $real_directory = str_replace("\\", "/", $real_directory); - $relative_directory = str_replace("\\", "/", $relative_directory); - - $table->width = '60%'; - - $table->data = array (); - - if (! filemanager_is_writable_dir ($real_directory)) { - ui_print_error_message(__('Current directory is not writable by HTTP Server')); - echo ''; - echo __('Please check that current directory has write rights for HTTP server'); - echo '
'; - } - else { - $table->data[1][0] = __('Create text file: '); - $table->data[1][1] = html_print_input_text('name_file', '', '', 30, 50, true); - $table->data[1][2] = html_print_submit_button (__('Create'), 'create', false, - 'class="sub"', true); - $table->data[1][2] .= html_print_input_hidden ('real_directory', $real_directory, true); - $table->data[1][2] .= html_print_input_hidden ('directory', $relative_directory, true); - $table->data[1][2] .= html_print_input_hidden('hash', md5($real_directory . $relative_directory . $config['dbpass']), true); - $table->data[1][2] .= html_print_input_hidden ('create_text_file', 1, true); - } - - echo ''; -} - -/** - * Get the available directories of the file manager. - * - * @return array An array with all the directories where the file manager can - * operate. - */ -function filemanager_get_available_directories () { - global $config; - - $dirs = array (); - $dirs['images'] = "images"; - $dirs['attachment'] = "attachment"; - $dirs['languages'] = "include/languages"; - - foreach ($dirs as $dirname) { - $dirpath = realpath ($config['homedir'].'/'.$dirname); - $dir = opendir ($dirpath); - while ($file = @readdir ($dir)) { - /* Ignore hidden files */ - if ($file[0] == '.') - continue; - $filepath = $dirpath.'/'.$file; - if (is_dir ($filepath)) { - $dirs[$dirname.'/'.$file] = $dirname.'/'.$file; - } - } - } - - return $dirs; -} - -/** - * Check if a dirname is available for the file manager. - * - * @param string Dirname to check. - * - * @return array An array with all the directories where the file manager can - * operate. - */ -function filemanager_is_available_directory ($dirname) { - - $dirname = str_replace("\\", "/", $dirname); // Windows compatibility - $dirs = filemanager_get_available_directories (); - - return isset ($dirs[$dirname]); -} - -/** - * Check if a directory is writable. - * - * @param string Directory path to check. - * @param bool If set, it will try to make the directory writeable if it's not. - * - * @param bool Wheter the directory is writeable or not. - */ -function filemanager_is_writable_dir ($dirpath, $force = false) { - - $dirname = str_replace("\\", "/", $dirname); // Windows compatibility - - if (filemanager_is_available_directory (basename ($dirpath))) - return is_writable ($dirpath); - if (filemanager_is_writable_dir (realpath ($dirpath.'/..'))) - return true; - else if (! $force) - return is_writable ($dirpath); - - return (is_writable ($dirpath) || @chmod ($dirpath, 0755)); -} - /** * Check if a directory is writable. * diff --git a/pandora_console/include/get_file.php b/pandora_console/include/get_file.php index 0bfd451356..7e3a44b34f 100644 --- a/pandora_console/include/get_file.php +++ b/pandora_console/include/get_file.php @@ -45,7 +45,9 @@ if ($hash != $testHash) { ""; } else if (!empty($file) && !empty($hash)) { - $file = $_SERVER['DOCUMENT_ROOT'] . $file; + //echo $file; + if (!file_exists($file)) + $file = $_SERVER['DOCUMENT_ROOT'] . $file; if (!file_exists($file)) { echo "