From 876282d0068241c2839ddda92d9008fc037d81d0 Mon Sep 17 00:00:00 2001 From: Emil Engler Date: Mon, 10 Dec 2018 18:22:24 +0100 Subject: [PATCH 01/11] Add German language --- README.md | 2 +- tinyfilemanager.php | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ae4ba6f..3b04c3f 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To enable/disable authentication set `$use_auth` to true or false.
  • :zap: Backup files
  • :mag_right: Search - Search and Sorting using datatable js
  • :file_folder: Exclude folders from listing
  • -
  • :globe_with_meridians: Multi-language support (English, French, Italian, Russian)
  • +
  • :globe_with_meridians: Multi-language support (English, French, Italian, Russian, German)
  • :bangbang: lots more...
  • diff --git a/tinyfilemanager.php b/tinyfilemanager.php index 122647a..99496f4 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -82,7 +82,8 @@ $lang_list = array( 'en' => 'English', 'fr' => 'Français', 'it' => 'Italiano', - 'ru' => 'Russian' + 'ru' => 'Russian', + 'de' => 'German' ); //--- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL @@ -3374,6 +3375,34 @@ function lng($txt) { $tr['ru']['Move'] = 'Переместить'; $tr['ru']['Change'] = 'Изменения'; $tr['ru']['Settings'] = 'Свойства'; $tr['ru']['Language'] = 'Язык'; + // German Language + $tr['de']['AppName'] = 'Tiny File Manager'; $tr['de']['AppTitle'] = 'Datei Manager'; + $tr['de']['Login'] = 'Einloggen'; $tr['de']['Username'] = 'Benutername'; + $tr['de']['Password'] = 'Passwort'; $tr['de']['Logout'] = 'Ausloggen'; + $tr['de']['Move'] = 'Verschieben'; $tr['de']['Copy'] = 'Kopieren'; + $tr['de']['Save'] = 'Speichern'; $tr['de']['SelectAll'] = 'Alles auswählen'; + $tr['de']['UnSelectAll'] = 'Alles abwählen'; $tr['de']['File'] = 'Datei'; + $tr['de']['Back'] = 'Zurück'; $tr['de']['Size'] = 'Größe'; + $tr['de']['Perms'] = 'Perms'; $tr['de']['Modified'] = 'Geändert'; + $tr['de']['Owner'] = 'Eigentümer'; $tr['de']['Search'] = 'Suchen'; + $tr['de']['NewItem'] = 'Neues Item'; $tr['de']['Folder'] = 'Ordner'; + $tr['de']['Delete'] = 'Löschen'; $tr['de']['Rename'] = 'Umbennen'; + $tr['de']['CopyTo'] = 'Kopieren nach'; $tr['de']['DirectLink'] = 'Direktlink'; + $tr['de']['UploadingFiles'] = 'Datei hochladen'; $tr['de']['ChangePermissions'] = 'Berechtigungen ändern'; + $tr['de']['Copying'] = 'Kopieren'; $tr['de']['CreateNewItem'] = 'Neue Datei erstellen'; + $tr['de']['Name'] = 'Name'; $tr['de']['AdvancedEditor'] = 'Fortgeschrittener Editor'; + $tr['de']['RememberMe'] = 'Eingeloggt bleiben'; $tr['de']['Actions'] = 'Aktionen'; + $tr['de']['Upload'] = 'Hochladen'; $tr['de']['Cancel'] = 'Abbrechner'; + $tr['de']['InvertSelection']= 'Auswahl umkehren'; $tr['de']['DestinationFolder'] = 'Zielordner'; + $tr['de']['ItemType'] = 'Dateityp'; $tr['de']['ItemName'] = 'Dateiname'; + $tr['de']['CreateNow'] = 'Jetzt erstellen'; $tr['de']['Download'] = 'Download'; + $tr['de']['Open'] = 'Öffnen'; $tr['de']['UnZip'] = 'UnZip'; + $tr['de']['UnZipToFolder'] = 'UnZip im Ordner'; $tr['de']['Edit'] = 'Bearbeiten'; + $tr['de']['NormalEditor'] = 'Normaler Editor'; $tr['de']['BackUp'] = 'Backup'; + $tr['de']['SourceFolder'] = 'Source ordner'; $tr['de']['Files'] = 'Datein'; + $tr['de']['Move'] = 'Verschieben'; $tr['de']['Change'] = 'Verändern'; + $tr['de']['Settings'] = 'Einstellungen'; $tr['de']['Language'] = 'Sprache'; + if (!strlen($lang)) $lang = 'en'; if (isset($tr[$lang][$txt])) return fm_enc($tr[$lang][$txt]); else if (isset($tr['en'][$txt])) return fm_enc($tr['en'][$txt]); From 9fdfdbfe94794e2713f4b519e4df23526df26a47 Mon Sep 17 00:00:00 2001 From: Prasath Mani Date: Thu, 13 Dec 2018 00:38:16 +0530 Subject: [PATCH 02/11] Added - file upload from url #98 Fix: issues to rename files with single quote #105 Fix: Dropzone default timeout 30 seconds #102, #96, #75 Fix: XSS cross-site attack screen (Chrome) #101 --- tinyfilemanager.php | 301 ++++++++++++++++++++++++++------------------ 1 file changed, 182 insertions(+), 119 deletions(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index 122647a..5428512 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -319,6 +319,70 @@ if (isset($_POST['ajax']) && !FM_READONLY) { echo $res; } + //upload using url + if(isset($_POST['type']) && $_POST['type'] == "upload" && !empty($_REQUEST["uploadurl"])) { + $path = FM_ROOT_PATH; + if (FM_PATH != '') { + $path .= '/' . FM_PATH; + } + + $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; + $use_curl = false;defined("CURLOPT_PROGRESSFUNCTION"); + $temp_file = tempnam(sys_get_temp_dir(), "upload-"); + $fileinfo = new stdClass(); + $fileinfo->name = trim(basename($url), ".\x00..\x20"); + + function event_callback ($message) { + global $callback; + echo json_encode($message); + } + + function get_file_path () { + global $path, $fileinfo, $temp_file; + return $path."/".basename($fileinfo->name); + } + + $err = false; + if (!$url) { + $success = false; + } else if ($use_curl) { + @$fp = fopen($temp_file, "w"); + @$ch = curl_init($url); + curl_setopt($ch, CURLOPT_NOPROGRESS, false ); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_FILE, $fp); + @$success = curl_exec($ch); + $curl_info = curl_getinfo($ch); + if (!$success) { + $err = array("message" => curl_error($ch)); + } + @curl_close($ch); + fclose($fp); + $fileinfo->size = $curl_info["size_download"]; + $fileinfo->type = $curl_info["content_type"]; + } else { + $ctx = stream_context_create(); + @$success = copy($url, $temp_file, $ctx); + if (!$success) { + $err = error_get_last(); + } + } + + if ($success) { + $success = rename($temp_file, get_file_path()); + } + + if ($success) { + event_callback(array("done" => $fileinfo)); + } else { + unlink($temp_file); + if (!$err) { + $err = array("message" => "Invalid url parameter"); + } + event_callback(array("fail" => $err)); + } + } + exit(); } @@ -817,25 +881,11 @@ if (isset($_GET['upload']) && !FM_READONLY) { ?> - -
    - + +    Upload from URL
    @@ -850,9 +900,39 @@ if (isset($_GET['upload']) && !FM_READONLY) {
    + + +
    + + - + @@ -1556,7 +1636,7 @@ $all_files_size = 0; - + @@ -2953,6 +3033,43 @@ global $lang; -webkit-box-shadow: none !important; box-shadow: none !important; } + .lds-facebook { + display: none; + position: relative; + width: 64px; + height: 64px; + } + .lds-facebook.show-me { display: inline-block;} + .lds-facebook div { + display: inline-block; + position: absolute; + left: 6px; + width: 13px; + background: #007bff; + animation: lds-facebook 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite; + } + .lds-facebook div:nth-child(1) { + left: 6px; + animation-delay: -0.24s; + } + .lds-facebook div:nth-child(2) { + left: 26px; + animation-delay: -0.12s; + } + .lds-facebook div:nth-child(3) { + left: 45px; + animation-delay: 0; + } + @keyframes lds-facebook { + 0% { + top: 6px; + height: 51px; + } + 50%, 100% { + top: 19px; + height: 26px; + } + } @@ -3011,52 +3128,23 @@ global $lang; * @param path {String} */ function newfolder(e) { - var t = document.getElementById("newfilename").value, - n = document.querySelector('input[name="newfile"]:checked').value; + var t = document.getElementById("newfilename").value, n = document.querySelector('input[name="newfile"]:checked').value; null !== t && "" !== t && n && (window.location.hash = "#", window.location.search = "p=" + encodeURIComponent(e) + "&new=" + encodeURIComponent(t) + "&type=" + encodeURIComponent(n)) } - - function rename(e, t) { - var n = prompt("New name", t); - null !== n && "" !== n && n != t && (window.location.search = "p=" + encodeURIComponent(e) + "&ren=" + encodeURIComponent(t) + "&to=" + encodeURIComponent(n)) - } - - function change_checkboxes(e, t) { - for (var n = e.length - 1; n >= 0; n--) e[n].checked = "boolean" == typeof t ? t : !e[n].checked - } - - function get_checkboxes() { - for (var e = document.getElementsByName("file[]"), t = [], n = e.length - 1; n >= 0; n--) (e[n].type = "checkbox") && t.push(e[n]); return t - } - - function select_all() { - change_checkboxes(get_checkboxes(), !0) - } - - function unselect_all() { - change_checkboxes(get_checkboxes(), !1) - } - - function invert_all() { - change_checkboxes(get_checkboxes()) - } - - function checkbox_toggle() { - var e = get_checkboxes(); - e.push(this), change_checkboxes(e) - } - - /** - * Create file backup with .bck - */ - function backup(e, t) { + function rename(e, t) {var n = prompt("New name", t);null !== n && "" !== n && n != t && (window.location.search = "p=" + encodeURIComponent(e) + "&ren=" + encodeURIComponent(t) + "&to=" + encodeURIComponent(n))} + function change_checkboxes(e, t) { for (var n = e.length - 1; n >= 0; n--) e[n].checked = "boolean" == typeof t ? t : !e[n].checked } + function get_checkboxes() { for (var e = document.getElementsByName("file[]"), t = [], n = e.length - 1; n >= 0; n--) (e[n].type = "checkbox") && t.push(e[n]); return t } + function select_all() { change_checkboxes(get_checkboxes(), !0) } + function unselect_all() { change_checkboxes(get_checkboxes(), !1) } + function invert_all() { change_checkboxes(get_checkboxes()) } + function checkbox_toggle() { var e = get_checkboxes(); e.push(this), change_checkboxes(e) } + function backup(e, t) { //Create file backup with .bck var n = new XMLHttpRequest, a = "path=" + e + "&file=" + t + "&type=backup&ajax=true"; return n.open("POST", "", !0), n.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), n.onreadystatechange = function () { 4 == n.readyState && 200 == n.status && alert(n.responseText) }, n.send(a), !1 } - //Save file function edit_save(e, t) { var n = "ace" == t ? editor.getSession().getValue() : document.getElementById("normal-editor").value; @@ -3069,10 +3157,7 @@ global $lang; o.appendChild(c), a.appendChild(o), document.body.appendChild(a), a.submit() } } - - /** - * Get latest release from git repo - */ + //Get latest release from git repo function latest_release_info() { $.getJSON("https://api.github.com/repos/prasathmani/tinyfilemanager/releases/latest").done(function(release) { if(release) { @@ -3084,72 +3169,56 @@ global $lang; } }); } - - /** - * Save Settings - * @param Object $this - */ + //Save Settings function save_settings($this) { let form = $($this); $.ajax({ - type: form.attr('method'), - url: form.attr('action'), - data: form.serialize()+"&ajax="+true, - success: function (data) { - if(data) { - window.location.reload(); - } - } - }); - return false; + type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&ajax="+true, + success: function (data) {if(data) { window.location.reload();}} + }); return false; } - - /** - * Create new password hash - * @param Object $this - */ + //Create new password hash function new_password_hash($this) { - let form = $($this); - let $pwd = $("#js-pwd-result"); - $pwd.val(''); + let form = $($this), $pwd = $("#js-pwd-result"); $pwd.val(''); $.ajax({ - type: form.attr('method'), - url: form.attr('action'), - data: form.serialize()+"&ajax="+true, + type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&ajax="+true, + success: function (data) { if(data) { $pwd.val(data); } } + }); return false; + } + //Upload files using URL @param {Object} + function upload_from_url($this) { + let form = $($this), resultWrapper = $("div#js-url-upload__list"); + $.ajax({ + type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&ajax="+true, + beforeSend: function() { form.find("input[name=uploadurl]").attr("disabled","disabled"); form.find("button").hide(); form.find(".lds-facebook").addClass('show-me'); }, success: function (data) { if(data) { - $pwd.val(data); + data = JSON.parse(data); + if(data.done) { + resultWrapper.append('
    Uploaded Successful: '+data.done.name+'
    '); form.find("input[name=uploadurl]").val(''); + } else if(data['fail']) { resultWrapper.append('
    Error: '+data.fail.message+'
    '); } + form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me'); } + }, + error: function(xhr) { + form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');console.error(xhr); } - }); - return false; + }); return false; } - - /** - * jQuery Document Ready Event - */ + // Dom Ready Event $(document).ready( function () { //dataTable init var $table = $('#main-table'), tableLng = $table.find('th').length, _targets = (tableLng && tableLng == 7 ) ? [0, 4,5,6] : tableLng == 5 ? [0,4] : [3], - mainTable = $('#main-table').DataTable({ - "paging": false, - "info": false, - "columnDefs": [ - { - "targets": _targets, - "orderable": false - } - ] + mainTable = $('#main-table').DataTable({"paging": false, "info": false, "columnDefs": [{"targets": _targets, "orderable": false}] }); - - /** - * Search using custom input box - */ - $('#search-addon').on( 'keyup', function () { + $('#search-addon').on( 'keyup', function () { //Search using custom input box mainTable.search( this.value ).draw(); }); + $("a.js-url-upload").on("click", function(e){ //upload using URL + e.preventDefault(); $("#fileUploader").hide(); $("div.upload-url-wrapper").show(); + }); }); @@ -3164,14 +3233,10 @@ global $lang; //editor.setTheme("ace/theme/twilight"); //Dark Theme function ace_commend (cmd) { editor.commands.exec(cmd, editor); } editor.commands.addCommands([{ - name: 'save', - bindKey: {win: 'Ctrl-S', mac: 'Command-S'}, - exec: function(editor) { - edit_save(this, 'ace'); - } + name: 'save', bindKey: {win: 'Ctrl-S', mac: 'Command-S'}, + exec: function(editor) { edit_save(this, 'ace'); } },{ - name: 'goToNo', - bindKey: {win: 'Ctrl-G', mac: 'Command-G'}, + name: 'goToNo', bindKey: {win: 'Ctrl-G', mac: 'Command-G'}, exec: function(editor) { let x = parseInt(prompt("Enter a Line Number [1 - "+editor.session.getLength()+"]", "1"), 10); editor.gotoLine(x); @@ -3198,15 +3263,13 @@ global $lang; }); $("select#js-ace-mode, select#js-ace-theme").on("change", function(e){ e.preventDefault(); - let selectedValue = $(this).val(); - let selectionType = $(this).attr("data-type"); + let selectedValue = $(this).val(), selectionType = $(this).attr("data-type"); if(selectedValue && selectionType == "mode") { editor.getSession().setMode(selectedValue); } else if(selectedValue && selectionType == "theme") { editor.setTheme(selectedValue); } }); - @@ -3275,7 +3338,7 @@ function lng($txt) { $tr['en']['NewItem'] = 'New Item'; $tr['en']['Folder'] = 'Folder'; $tr['en']['Delete'] = 'Delete'; $tr['en']['Rename'] = 'Rename'; $tr['en']['CopyTo'] = 'Copy to'; $tr['en']['DirectLink'] = 'Direct link'; - $tr['en']['UploadingFiles'] = 'Uploading files'; $tr['en']['ChangePermissions'] = 'Change Permissions'; + $tr['en']['UploadingFiles'] = 'Upload Files'; $tr['en']['ChangePermissions'] = 'Change Permissions'; $tr['en']['Copying'] = 'Copying'; $tr['en']['CreateNewItem'] = 'Create New Item'; $tr['en']['Name'] = 'Name'; $tr['en']['AdvancedEditor'] = 'Advanced Editor'; $tr['en']['RememberMe'] = 'Remember Me'; $tr['en']['Actions'] = 'Actions'; From 1760168933c6b86332e73e33a660c2c598dea8ef Mon Sep 17 00:00:00 2001 From: Prasath Mani Date: Thu, 13 Dec 2018 00:40:23 +0530 Subject: [PATCH 03/11] Modified Readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae4ba6f..1294cda 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ To enable/disable authentication set `$use_auth` to true or false.
  • :cd: Open Source, light and extremely simple
  • :iphone: Mobile friendly view for touch devices
  • :information_source: Basic features likes Create, Delete, Modify, View, Download, Copy and Move files
  • -
  • :arrow_double_up: Ajax Upload, Ability to drag & drop, multiple files upload and file extensions filter
  • +
  • :arrow_double_up: Ajax Upload, Ability to drag & drop, upload from URL, multiple files upload and file extensions filter
  • :file_folder: Ability to create folders and files
  • :gift: Ability to compress, extract files (zip, tar)
  • :sunglasses: Support user permissions - based on session and each user root folder mapping
  • From fb7c4fcebd9628bc9f9237293a6567b2ac42f0a7 Mon Sep 17 00:00:00 2001 From: Prasath Mani Date: Fri, 14 Dec 2018 00:02:25 +0530 Subject: [PATCH 04/11] Modified UI - file upload from url #98 and Code refactor --- tinyfilemanager.php | 82 +++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index 5428512..77be814 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -64,6 +64,10 @@ $GLOBALS['exclude_items'] = array(); // Google Docs Viewer $GLOBALS['online_viewer'] = true; +// private key and session name to store to the session +if ( !defined( 'FM_SESSION_ID')) { + define('FM_SESSION_ID', 'filemanager'); +} //Configuration $cfg = new FM_Config(); @@ -115,7 +119,7 @@ if (defined('FM_EMBED')) { } session_cache_limiter(''); - session_name('filemanager'); + session_name(FM_SESSION_ID ); @session_start(); } @@ -135,7 +139,7 @@ defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . // logout if (isset($_GET['logout'])) { - unset($_SESSION['logged']); + unset($_SESSION[FM_SESSION_ID]['logged']); fm_redirect(FM_SELF_URL); } @@ -146,18 +150,18 @@ if (isset($_GET['img'])) { // Auth if ($use_auth) { - if (isset($_SESSION['logged'], $auth_users[$_SESSION['logged']])) { + if (isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'])) { // Logging In sleep(1); if(function_exists('password_verify')) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']])) { - $_SESSION['logged'] = $_POST['fm_usr']; + $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; fm_set_msg('You are logged in'); fm_redirect(FM_SELF_URL . '?p='); } else { - unset($_SESSION['logged']); + unset($_SESSION[FM_SESSION_ID]['logged']); fm_set_msg('Login failed. Invalid username or password', 'error'); fm_redirect(FM_SELF_URL); } @@ -166,7 +170,7 @@ if ($use_auth) { } } else { // Form - unset($_SESSION['logged']); + unset($_SESSION[FM_SESSION_ID]['logged']); fm_show_header_login(); fm_show_message(); ?> @@ -230,8 +234,8 @@ if ($use_auth) { } // update root path -if ($use_auth && isset($_SESSION['logged'])) { - $root_path = isset($directories_users[$_SESSION['logged']]) ? $directories_users[$_SESSION['logged']] : $root_path; +if ($use_auth && isset($_SESSION[FM_SESSION_ID]['logged'])) { + $root_path = isset($directories_users[$_SESSION[FM_SESSION_ID]['logged']]) ? $directories_users[$_SESSION[FM_SESSION_ID]['logged']] : $root_path; } // clean and check $root_path @@ -246,7 +250,7 @@ defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files); defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_LANG') || define('FM_LANG', $lang); defined('FM_EXTENSION') || define('FM_EXTENSION', $allowed_extensions); -define('FM_READONLY', $use_auth && !empty($readonly_users) && isset($_SESSION['logged']) && in_array($_SESSION['logged'], $readonly_users)); +define('FM_READONLY', $use_auth && !empty($readonly_users) && isset($_SESSION[FM_SESSION_ID]['logged']) && in_array($_SESSION[FM_SESSION_ID]['logged'], $readonly_users)); define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= @@ -327,7 +331,7 @@ if (isset($_POST['ajax']) && !FM_READONLY) { } $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; - $use_curl = false;defined("CURLOPT_PROGRESSFUNCTION"); + $use_curl = false; $temp_file = tempnam(sys_get_temp_dir(), "upload-"); $fileinfo = new stdClass(); $fileinfo->name = trim(basename($url), ".\x00..\x20"); @@ -388,9 +392,7 @@ if (isset($_POST['ajax']) && !FM_READONLY) { // Delete file / folder if (isset($_GET['del']) && !FM_READONLY) { - $del = $_GET['del']; - $del = fm_clean_path($del); - $del = str_replace('/', '', $del); + $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) ); if ($del != '' && $del != '..' && $del != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { @@ -412,10 +414,8 @@ if (isset($_GET['del']) && !FM_READONLY) { // Create folder if (isset($_GET['new']) && isset($_GET['type']) && !FM_READONLY) { - $new = strip_tags($_GET['new']); $type = $_GET['type']; - $new = fm_clean_path($new); - $new = str_replace('/', '', $new); + $new = str_replace( '/', '', fm_clean_path( strip_tags( $_GET['new'] ) ) ); if ($new != '' && $new != '..' && $new != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { @@ -882,18 +882,25 @@ if (isset($_GET['upload']) && !FM_READONLY) {
    -
    -
    - -    Upload from URL - -
    + +
    +
    + +

    + :

    -
    -
    @@ -2008,8 +2014,8 @@ function fm_enc($text) */ function fm_set_msg($msg, $status = 'ok') { - $_SESSION['message'] = $msg; - $_SESSION['status'] = $status; + $_SESSION[FM_SESSION_ID]['message'] = $msg; + $_SESSION[FM_SESSION_ID]['status'] = $status; } /** @@ -2622,7 +2628,7 @@ function fm_show_nav_path($path)
  • +
  • Memory Used:
  • From c22e694e7d5c70c28a78d53d48a2e191499241f6 Mon Sep 17 00:00:00 2001 From: Alessandro Marinuzzi Date: Tue, 25 Dec 2018 14:32:03 +0100 Subject: [PATCH 08/11] improved memory usage improved memory usage --- tinyfilemanager.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index e91298d..ee92a8e 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -107,6 +107,7 @@ function fm_memory($size) { $unit = array('Byte', 'KB', 'MB', 'GB', 'TB', 'PB'); return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i]; } +$memory = fm_memory(memory_get_usage(true)); // Set Cookie setcookie('fm_cache', true, 2147483647, "/"); @@ -1707,7 +1708,7 @@ $all_files_size = 0;
  • -
  • Memory Used:
  • +
  • Memory Used:
  • From 90c079882d98028acbd8bad39b01f1350793e041 Mon Sep 17 00:00:00 2001 From: Alessandro Marinuzzi Date: Tue, 25 Dec 2018 15:11:20 +0100 Subject: [PATCH 09/11] improved memory usage + added translations improved memory usage + added translations --- tinyfilemanager.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index ee92a8e..e8eb0dc 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -1708,7 +1708,7 @@ $all_files_size = 0;
  • -
  • Memory Used:
  • +
  • @@ -3383,6 +3383,8 @@ function lng($txt) { $tr['en']['SourceFolder'] = 'Source Folder'; $tr['en']['Files'] = 'Files'; $tr['en']['Move'] = 'Move'; $tr['en']['Change'] = 'Change'; $tr['en']['Settings'] = 'Settings'; $tr['en']['Language'] = 'Language'; + $tr['en']['MemoryUsed'] = 'Memory used: '; + // French Language $tr['fr']['AppName'] = 'Tiny File Manager'; $tr['fr']['AppTitle'] = 'File Manager'; @@ -3411,6 +3413,7 @@ function lng($txt) { $tr['fr']['SourceFolder'] = 'Dossier Source'; $tr['fr']['Files'] = 'Fichiers'; $tr['fr']['Move'] = 'Déplacer'; $tr['fr']['Change'] = 'Modifier'; $tr['fr']['Settings'] = 'Réglages'; $tr['fr']['Language'] = 'Langue'; + $tr['fr']['MemoryUsed'] = 'Mémoire utilisée: '; // Italian Language $tr['it']['AppName'] = 'Tiny File Manager'; $tr['it']['AppTitle'] = 'File Manager'; @@ -3439,6 +3442,7 @@ function lng($txt) { $tr['it']['SourceFolder'] = 'Cartella di Origine'; $tr['it']['Files'] = 'File'; $tr['it']['Move'] = 'Sposta'; $tr['it']['Change'] = 'Cambia'; $tr['it']['Settings'] = 'Impostazioni'; $tr['it']['Language'] = 'Lingua'; + $tr['it']['MemoryUsed'] = 'Memoria utilizzata: '; // Russian Language $tr['ru']['AppName'] = 'Файловый менеджер'; $tr['ru']['AppTitle'] = 'Файловый менеджер'; @@ -3467,6 +3471,7 @@ function lng($txt) { $tr['ru']['SourceFolder'] = 'Путь папки'; $tr['ru']['Files'] = 'Файлы'; $tr['ru']['Move'] = 'Переместить'; $tr['ru']['Change'] = 'Изменения'; $tr['ru']['Settings'] = 'Свойства'; $tr['ru']['Language'] = 'Язык'; + $tr['ru']['MemoryUsed'] = 'Используемая память: '; if (!strlen($lang)) $lang = 'en'; if (isset($tr[$lang][$txt])) return fm_enc($tr[$lang][$txt]); From 221bc9688217d52930143d522164a0e9cc121760 Mon Sep 17 00:00:00 2001 From: Prasath Mani Date: Tue, 25 Dec 2018 21:48:41 +0530 Subject: [PATCH 10/11] Added Partition size and Memory used #111 --- tinyfilemanager.php | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index e8eb0dc..e9fd163 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -1505,7 +1505,7 @@ if (isset($_GET['chmod']) && !FM_READONLY && !FM_IS_WIN) {

    -   +  

    @@ -1681,9 +1681,11 @@ $all_files_size = 0; - Full size: , - files: , - folders: + Full size: '.fm_get_filesize($all_files_size).'' ?>, + '.$num_files.'' ?>, + '.$num_folders.'' ?>, + '.$memory.'' ?>, + '.fm_get_filesize(disk_free_space($path)) .' free of '.fm_get_filesize(disk_total_space($path)).''; ?> @@ -1708,7 +1710,6 @@ $all_files_size = 0;
  • -
  • @@ -1958,13 +1959,13 @@ function fm_get_filesize($size) if ($size < 1000) { return sprintf('%s B', $size); } elseif (($size / 1024) < 1000) { - return sprintf('%s KiB', round(($size / 1024), 2)); + return sprintf('%s KB', round(($size / 1024), 2)); } elseif (($size / 1024 / 1024) < 1000) { - return sprintf('%s MiB', round(($size / 1024 / 1024), 2)); + return sprintf('%s MB', round(($size / 1024 / 1024), 2)); } elseif (($size / 1024 / 1024 / 1024) < 1000) { - return sprintf('%s GiB', round(($size / 1024 / 1024 / 1024), 2)); + return sprintf('%s GB', round(($size / 1024 / 1024 / 1024), 2)); } else { - return sprintf('%s TiB', round(($size / 1024 / 1024 / 1024 / 1024), 2)); + return sprintf('%s TB', round(($size / 1024 / 1024 / 1024 / 1024), 2)); } } @@ -3369,7 +3370,7 @@ function lng($txt) { $tr['en']['NewItem'] = 'New Item'; $tr['en']['Folder'] = 'Folder'; $tr['en']['Delete'] = 'Delete'; $tr['en']['Rename'] = 'Rename'; $tr['en']['CopyTo'] = 'Copy to'; $tr['en']['DirectLink'] = 'Direct link'; - $tr['en']['UploadingFiles'] = 'Upload Files'; $tr['en']['ChangePermissions'] = 'Change Permissions'; + $tr['en']['UploadingFiles'] = 'Upload Files'; $tr['en']['ChangePermissions'] = 'Change Permissions'; $tr['en']['Copying'] = 'Copying'; $tr['en']['CreateNewItem'] = 'Create New Item'; $tr['en']['Name'] = 'Name'; $tr['en']['AdvancedEditor'] = 'Advanced Editor'; $tr['en']['RememberMe'] = 'Remember Me'; $tr['en']['Actions'] = 'Actions'; @@ -3383,8 +3384,8 @@ function lng($txt) { $tr['en']['SourceFolder'] = 'Source Folder'; $tr['en']['Files'] = 'Files'; $tr['en']['Move'] = 'Move'; $tr['en']['Change'] = 'Change'; $tr['en']['Settings'] = 'Settings'; $tr['en']['Language'] = 'Language'; - $tr['en']['MemoryUsed'] = 'Memory used: '; - + $tr['en']['MemoryUsed'] = 'Memory used'; $tr['en']['PartitionSize'] = 'Partition size'; + // French Language $tr['fr']['AppName'] = 'Tiny File Manager'; $tr['fr']['AppTitle'] = 'File Manager'; @@ -3413,7 +3414,7 @@ function lng($txt) { $tr['fr']['SourceFolder'] = 'Dossier Source'; $tr['fr']['Files'] = 'Fichiers'; $tr['fr']['Move'] = 'Déplacer'; $tr['fr']['Change'] = 'Modifier'; $tr['fr']['Settings'] = 'Réglages'; $tr['fr']['Language'] = 'Langue'; - $tr['fr']['MemoryUsed'] = 'Mémoire utilisée: '; + $tr['fr']['MemoryUsed'] = 'Mémoire utilisée'; $tr['fr']['PartitionSize'] = 'Taille de la partition'; // Italian Language $tr['it']['AppName'] = 'Tiny File Manager'; $tr['it']['AppTitle'] = 'File Manager'; @@ -3442,7 +3443,7 @@ function lng($txt) { $tr['it']['SourceFolder'] = 'Cartella di Origine'; $tr['it']['Files'] = 'File'; $tr['it']['Move'] = 'Sposta'; $tr['it']['Change'] = 'Cambia'; $tr['it']['Settings'] = 'Impostazioni'; $tr['it']['Language'] = 'Lingua'; - $tr['it']['MemoryUsed'] = 'Memoria utilizzata: '; + $tr['it']['MemoryUsed'] = 'Memoria utilizzata'; $tr['it']['PartitionSize'] = 'Dimensione della partizione'; // Russian Language $tr['ru']['AppName'] = 'Файловый менеджер'; $tr['ru']['AppTitle'] = 'Файловый менеджер'; @@ -3471,7 +3472,7 @@ function lng($txt) { $tr['ru']['SourceFolder'] = 'Путь папки'; $tr['ru']['Files'] = 'Файлы'; $tr['ru']['Move'] = 'Переместить'; $tr['ru']['Change'] = 'Изменения'; $tr['ru']['Settings'] = 'Свойства'; $tr['ru']['Language'] = 'Язык'; - $tr['ru']['MemoryUsed'] = 'Используемая память: '; + $tr['ru']['MemoryUsed'] = 'Используемая память'; $tr['ru']['PartitionSize'] = 'Размер раздела'; if (!strlen($lang)) $lang = 'en'; if (isset($tr[$lang][$txt])) return fm_enc($tr[$lang][$txt]); From ba9826fe9ccfe889b8a8df44bf8313b6bfe58a54 Mon Sep 17 00:00:00 2001 From: Prasath Mani Date: Mon, 31 Dec 2018 14:36:03 +0530 Subject: [PATCH 11/11] Added check latest version --- tinyfilemanager.php | 122 ++++++++++++++++++++++++++++++-------------- 1 file changed, 84 insertions(+), 38 deletions(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index e9fd163..cec31b5 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -1,9 +1,9 @@ —— © - CCP Programmers —— + CCP Programmers —— @@ -1050,10 +1046,10 @@ if (isset($_GET['settings']) && !FM_READONLY) { global $cfg, $lang, $lang_list; ?> -
    +
    - +
    @@ -1061,7 +1057,7 @@ if (isset($_GET['settings']) && !FM_READONLY) {
    -
    +
    +
    - +
    @@ -1684,8 +1696,8 @@ $all_files_size = 0; Full size: '.fm_get_filesize($all_files_size).'' ?>, '.$num_files.'' ?>, '.$num_folders.'' ?>, - '.$memory.'' ?>, - '.fm_get_filesize(disk_free_space($path)) .' free of '.fm_get_filesize(disk_total_space($path)).''; ?> + '.fm_get_filesize(@memory_get_usage(true)).'' ?>, + '.fm_get_filesize(@disk_free_space($path)) .' free of '.fm_get_filesize(@disk_total_space($path)).''; ?> @@ -1712,9 +1724,9 @@ $all_files_size = 0;
    - + - +
    @@ -2651,6 +2663,7 @@ function fm_show_nav_path($path) +
    @@ -2786,6 +2799,11 @@ $isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal'; a:hover, a:visited, a:focus { text-decoration: none !important; } + * { + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; + } .filename, td, th { white-space: nowrap } @@ -3136,6 +3154,29 @@ $isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal';
    + + +