From bbb5355687acda1c7dbe7b51d03efe5c4a764b6a Mon Sep 17 00:00:00 2001 From: allixx <1695323+allixx@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:24:20 +0300 Subject: [PATCH] fix(_getdir): Fix dirs/files sort --- plugins/_getdir/listdir.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/_getdir/listdir.php b/plugins/_getdir/listdir.php index f979e1cb9..903f950e0 100644 --- a/plugins/_getdir/listdir.php +++ b/plugins/_getdir/listdir.php @@ -3,6 +3,15 @@ require_once( '../../php/settings.php' ); eval(FileUtil::getPluginConf("_getdir")); +function compareEntries( $a, $b ) +{ + if($a=='..') + return( -1 ); + if($b=='..') + return( 1 ); + return( strcmp(mb_strtolower($a), mb_strtolower($b)) ); +} + $theSettings = rTorrentSettings::get(); $requestedDir = $_REQUEST['dir']; @@ -28,7 +37,7 @@ } $dir = FileUtil::addslash($dir); -$items = array_diff(scandir($dir), (($dir == $topDirectory) ? ["..", "."] : ["."])); +$items = array_diff(scandir($dir, SCANDIR_SORT_NONE), (($dir == $topDirectory) ? ["..", "."] : ["."])); $directories = array_filter($items, function ($item) { global $dir; return is_dir($dir.$item); @@ -38,6 +47,9 @@ return is_file($dir.$item); }); +usort($directories, "compareEntries"); +usort($files, "compareEntries"); + header("Content-Type: application/json"); echo JSON::safeEncode(array( "path" => $dir,