diff options
author | Fbenas <philbeansburton@gmail.com> | 2019-04-02 00:23:49 +0100 |
---|---|---|
committer | Fbenas <philbeansburton@gmail.com> | 2019-04-02 00:23:49 +0100 |
commit | b57bb1e8bb5fabcba4a2b584f08310c4479d5e6f (patch) | |
tree | 735359c99bdd79b5d0417efa11e250441faf1684 | |
parent | 581d69f4cc57c9acf51913119d76cae19fdfeaac (diff) |
Stop using modified date as a key in array by using an assoc array. Here we have add sizes as an item, and move the date key in too. We then ditch new array, sizes array and ordered array for a single collection that we mainpulate with usort. The listing array is then built off this
-rw-r--r-- | index.php | 76 |
1 files changed, 51 insertions, 25 deletions
@@ -113,7 +113,7 @@ date_default_timezone_set("GB"); $files_directory = "./"; -$new_array = array(); +$fileCollection = array(); $files = array(); $fdirectory = opendir("$files_directory"); @@ -124,56 +124,82 @@ while ($file = readdir($fdirectory)) { } } -foreach ($files as $key=> $file) { +foreach ($files as $key => $file) { $c_date = filemtime("$files_directory/$file"); - $new_array[$c_date] = $file; - $size_array[$c_date] = filesize("$files_directory/$file"); + $fileCollection[] = [ + 'date' => $c_date, + 'file' => $file, + 'size' => filesize("$files_directory/$file") + ]; } if (isset($sort)) { // Sort by modified date if ($sort[0] == "M") { if ($sort[1] == "A") { - ksort($new_array); + usort( + $fileCollection, + function($a, $b) { + return $a['date'] > $b['date']; + } + ); } else { - krsort($new_array); + usort( + $fileCollection, + function($a, $b) { + return $a['date'] < $b['date']; + } + ); } - $ordered_array = $new_array; // Sort by name } else if ($sort[0] == "N") { if ($sort[1] == "A") { - asort($new_array); + usort( + $fileCollection, + function($a, $b) { + return $a['file'] > $b['file']; + } + ); } else { - arsort($new_array); + usort( + $fileCollection, + function($a, $b) { + return $a['file'] < $b['file']; + } + ); } - $ordered_array = $new_array; // Sort by size } else if ($sort[0] == "S") { if ($sort[1] == "A") { - asort($size_array); + usort( + $fileCollection, + function($a, $b) { + return $a['size'] > $b['size']; + } + ); } else { - arsort($size_array); + usort( + $fileCollection, + function($a, $b) { + return $a['size'] < $b['size']; + } + ); } - $ordered_array = $size_array; } } else { - krsort($new_array); - $ordered_array = $new_array; + krsort($fileCollection); } $listsize = 0; -while ($this_array = each($ordered_array)) { - $key = $this_array['key']; - $value = $new_array[$key]; - +foreach ($fileCollection as $item) { // Only show last X entries if requested if (isset($_GET['last']) && ($listsize > $_GET['last'] - 1)) { break; } // Drop if on index ignore list - if (in_array($value, $indexignore)) { + if (in_array($item['file'], $indexignore)) { continue; } @@ -195,12 +221,12 @@ while ($this_array = each($ordered_array)) { $to = time(); } - if ($key < $from || $key > $to) { + if ($item['date'] < $from || $item['date'] > $to) { continue; } } - $fileparts = explode(".", strtolower($value)); + $fileparts = explode(".", strtolower($item['file'])); $icon = "unknown"; switch ($fileparts[count($fileparts)-1]) { @@ -298,10 +324,10 @@ while ($this_array = each($ordered_array)) { break; } - $listing[$listsize]['filename'] = utf8_encode($value); + $listing[$listsize]['filename'] = utf8_encode($item['file']); $listing[$listsize]['type'] = $icon; - $listing[$listsize]['modified'] = $key; - $listing[$listsize]['size'] = $size_array[$key]; + $listing[$listsize]['modified'] = $item['date']; + $listing[$listsize]['size'] = $item['size']; $listsize++; } |