]> git.sur5r.net Git - bacula/bacula/commitdiff
baculum: Fix sorting files and directories in restore files browser
authorMarcin Haba <marcin.haba@bacula.pl>
Sun, 5 Jul 2015 19:03:57 +0000 (21:03 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 13 Aug 2015 06:51:50 +0000 (08:51 +0200)
gui/baculum/protected/Class/Miscellaneous.php

index f44e0b79307cc50b4df2639eec4136292a4f935c..cf149e9b80f2a604554cc0cb15ba8bd086ce4531 100644 (file)
@@ -1,7 +1,18 @@
 <?php
 
-// small sorting callback function to sort by name
-function sortListByName($a, $b) {
+/*
+ * Small sorting callback function to sort files and directories by name.
+ * Function keeps '.' and '..' names always in the beginning of array.
+ * Used to sort files and directories from Bvfs.
+ */
+function sortFilesListByName($a, $b) {
+       $firstLeft = substr($a['name'], 0, 1);
+       $firstRight = substr($b['name'], 0, 1);
+       if ($firstLeft == '.' && $firstRight != '.') {
+               return -1;
+       } else if ($firstRight == '.' && $firstLeft != '.') {
+               return 1;
+       }
        return strcasecmp($a['name'], $b['name']);
 }
 
@@ -210,7 +221,7 @@ class Miscellaneous extends TModule {
                                $elements[] = array('pathid' => $match['pathid'], 'filenameid' => $match['filenameid'], 'fileid' => $match['fileid'], 'jobid' => $match['jobid'], 'lstat' => $match['lstat'], 'name' => $match['name'], 'type' => 'file'); 
                        }
                }
-               usort($elements, 'sortListByName');
+               usort($elements, 'sortFilesListByName');
                return $elements;
        }