]> git.mxchange.org Git - friendica.git/commitdiff
Remove album name bin2hex conversion in file browser
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 22 Apr 2020 02:14:11 +0000 (22:14 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 22 Apr 2020 02:14:11 +0000 (22:14 -0400)
- Avoids Javascript hex2bin() limitation to Latin-1 string encoding

mod/fbrowser.php
mod/photos.php
mod/wall_upload.php
view/js/filebrowser.js
view/templates/filebrowser.tpl
view/theme/frio/js/filebrowser.js
view/theme/frio/templates/filebrowser.tpl

index a4ade6f8c10eac558811aa60fc0821a606babdbe..984747bcd8124b529281b90137e5e4c56f4d146a 100644 (file)
@@ -39,31 +39,26 @@ function fbrowser_content(App $a)
 
        switch ($a->argv[1]) {
                case "image":
-                       $path = [["", DI::l10n()->t("Photos")]];
+                       $path = ['' => DI::l10n()->t('Photos')];
                        $albums = false;
                        $sql_extra = "";
                        $sql_extra2 = " ORDER BY created DESC LIMIT 0, 10";
 
                        if ($a->argc==2) {
-                               $albums = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' ",
+                               $photos = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' ",
                                        intval(local_user()),
                                        DBA::escape('Contact Photos'),
                                        DBA::escape(DI::l10n()->t('Contact Photos'))
                                );
 
-                               function _map_folder1($el)
-                               {
-                                       return [bin2hex($el['album']),$el['album']];
-                               };
-
-                               $albums = array_map("_map_folder1", $albums);
+                               $albums = array_column($photos, 'album');
                        }
 
                        if ($a->argc == 3) {
-                               $album = hex2bin($a->argv[2]);
+                               $album = $a->argv[2];
                                $sql_extra = sprintf("AND `album` = '%s' ", DBA::escape($album));
                                $sql_extra2 = "";
-                               $path[] = [$a->argv[2], $album];
+                               $path[$album] = $album;
                        }
 
                        $r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
index 3f558429d4ea4d45714044494b1a4b1b02e31f13..ae45c714c6e8b46fc68ffd758f8b29e240afdd0b 100644 (file)
@@ -309,7 +309,7 @@ function photos_post(App $a)
                $desc        = !empty($_POST['desc'])      ? Strings::escapeTags(trim($_POST['desc']))      : '';
                $rawtags     = !empty($_POST['newtag'])    ? Strings::escapeTags(trim($_POST['newtag']))    : '';
                $item_id     = !empty($_POST['item_id'])   ? intval($_POST['item_id'])                      : 0;
-               $albname     = !empty($_POST['albname'])   ? Strings::escapeTags(trim($_POST['albname']))   : '';
+               $albname     = !empty($_POST['albname'])   ? trim($_POST['albname'])                        : '';
                $origaname   = !empty($_POST['origaname']) ? Strings::escapeTags(trim($_POST['origaname'])) : '';
 
                $aclFormatter = DI::aclFormatter();
@@ -615,10 +615,10 @@ function photos_post(App $a)
        Hook::callAll('photo_post_init', $_POST);
 
        // Determine the album to use
-       $album    = !empty($_REQUEST['album'])    ? Strings::escapeTags(trim($_REQUEST['album']))    : '';
-       $newalbum = !empty($_REQUEST['newalbum']) ? Strings::escapeTags(trim($_REQUEST['newalbum'])) : '';
+       $album    = trim($_REQUEST['album'] ?? '');
+       $newalbum = trim($_REQUEST['newalbum'] ?? '');
 
-       Logger::log('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , Logger::DEBUG);
+       Logger::info('album= ' . $album . ' newalbum= ' . $newalbum);
 
        if (!strlen($album)) {
                if (strlen($newalbum)) {
index 3841ef97b52c399ae64b3374499c167944d45c3a..ad0b5d3c0b9a0ae04546bf5027cbd44c78c16950 100644 (file)
@@ -41,7 +41,7 @@ function wall_upload_post(App $a, $desktopmode = true)
        Logger::log("wall upload: starting new upload", Logger::DEBUG);
 
        $r_json = (!empty($_GET['response']) && $_GET['response'] == 'json');
-       $album = (!empty($_GET['album']) ? Strings::escapeTags(trim($_GET['album'])) : '');
+       $album = trim($_GET['album'] ?? '');
 
        if ($a->argc > 1) {
                if (empty($_FILES['media'])) {
index 1faef4acc4f23a88d9185270404fc76f7ac9fa5f..4546ed8ffccd250bc8570eadb5d952a51ee1294f 100644 (file)
@@ -77,8 +77,7 @@ var FileBrowser = {
 
                $(".folders a, .path a").on("click", function(e){
                        e.preventDefault();
-                       var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=minimal" + location['hash'];
-                       location.href = url;
+                       location.href = baseurl + "/fbrowser/" + FileBrowser.type + "/" + encodeURIComponent(this.dataset.folder) + "?mode=minimal" + location['hash'];
                });
 
                $(".photo-album-photo-link").on('click', function(e){
index b684d77f4be46ab75e07a0fdd91473014b7f24c9..683ca4ec6eecc097d9d5cff6e7703a68b17150f8 100644 (file)
        </div>
 
        <div class="path">
-               {{foreach $path as $p}}<a href="#" data-folder="{{$p.0}}">{{$p.1}}</a>{{/foreach}}
+               {{foreach $path as $folder => $name}}
+                       <a href="#" data-folder="{{$folder}}">{{$name}}</a>
+               {{/foreach}}
        </div>
 
        {{if $folders }}
        <div class="folders">
                <ul>
-                       {{foreach $folders as $f}}<li><a href="#" data-folder="{{$f.0}}">{{$f.1}}</a></li>{{/foreach}}
+               {{foreach $folders as $folder}}
+                       <li><a href="#" data-folder="{{$folder}}">{{$folder}}</a></li>
+               {{/foreach}}
                </ul>
        </div>
        {{/if}}
index b43cf5ce4364ffef9fcdc6c18ba86f5346ff3737..016b359c7ce8093abf33c0751fb7d3062a852406 100644 (file)
@@ -99,7 +99,7 @@ var FileBrowser = {
                // Click on album link
                $(".fbrowser").on("click", ".folders a, .path a", function(e) {
                        e.preventDefault();
-                       var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=none&theme=frio";
+                       var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + encodeURIComponent(this.dataset.folder) + "?mode=none&theme=frio";
                        FileBrowser.folder = this.dataset.folder;
 
                        FileBrowser.loadContent(url);
@@ -161,12 +161,11 @@ var FileBrowser = {
        // Initialize the AjaxUpload for the upload buttons
        uploadButtons: function() {
                if ($("#upload-image").length) {
-                       // To get the albumname we need to convert it from hex
-                       var albumname = hex2bin(FileBrowser.folder);
                        //AjaxUpload for images
                        var image_uploader = new window.AjaxUpload(
                                'upload-image',
-                               {       action: 'wall_upload/' + FileBrowser.nickname + '?response=json&album=' + albumname,
+                               {
+                                       action: 'wall_upload/' + FileBrowser.nickname + '?response=json&album=' + encodeURIComponent(FileBrowser.folder),
                                        name: 'userfile',
                                        responseType: 'json',
                                        onSubmit: function(file, ext) {
@@ -183,9 +182,8 @@ var FileBrowser = {
                                                        return;
                                                }
 
-                                               var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + FileBrowser.folder + "?mode=none&theme=frio";
                                                // load new content to fbrowser window
-                                               FileBrowser.loadContent(url);
+                                               FileBrowser.loadContent(baseurl + '/fbrowser/' + FileBrowser.type + '/' + encodeURIComponent(FileBrowser.folder) + '?mode=none&theme=frio');
                                        }
                                }
                        );
index 6d1e092d0cd4e4eef9d3e5aed39fb3f2f6368c02..fdcb7614458a54c78e4db9b93ed6c07537ffc656 100644 (file)
@@ -9,7 +9,9 @@
 
                {{* The breadcrumb navigation *}}
                <ol class="path breadcrumb" aria-label="Breadcrumb" role="navigation">
-                       {{foreach $path as $p}}<li role="presentation"><a href="#" data-folder="{{$p.0}}">{{$p.1}}</a></li>{{/foreach}}
+               {{foreach $path as $folder => $name}}
+                       <li role="presentation"><a href="#" data-folder="{{$folder}}">{{$name}}</a></li>
+               {{/foreach}}
 
                        {{* Switch between image and file mode *}}
                        <div class="fbswitcher btn-group btn-group-xs pull-right" aria-label="Switch between image and file mode">
@@ -24,9 +26,9 @@
                        {{if $folders }}
                        <div class="folders media-left" role="navigation" aria-label="Album Navigation">
                                <ul role="menu">
-                                       {{foreach $folders as $f}}
+                                       {{foreach $folders as $folder}}
                                        <li role="presentation">
-                                               <a href="#" data-folder="{{$f.0}}" role="menuitem">{{$f.1}}</a>
+                                               <a href="#" data-folder="{{$folder}}" role="menuitem">{{$folder}}</a>
                                        </li>
                                        {{/foreach}}
                                </ul>