Fix building with php8 and without config file
[stouyapi.git] / bin / filters.php
index 107714d7ca5d5afbfe73354771225aea4b12f3e3..b225c9bd8f90fa8b2d1b81492d1481c186de7327 100644 (file)
@@ -31,7 +31,7 @@ function filterByLetter($origGames, $letter)
 {
     $filtered = [];
     foreach ($origGames as $game) {
-        $gameLetter = strtoupper($game->title{0});
+        $gameLetter = strtoupper($game->title[0]);
         if (!preg_match('#^[A-Z]$#', $gameLetter)) {
             $gameLetter = 'Other';
         }
@@ -48,9 +48,11 @@ function filterByPackageNames($origGames, $packageNames)
     $filtered = [];
     foreach ($origGames as $game) {
         if (isset($names[$game->packageName])) {
-            $filtered[] = $game;
+            $filtered[$names[$game->packageName]] = $game;
         }
     }
+    //keep original order
+    ksort($filtered, SORT_NUMERIC);
     return $filtered;
 }
 
@@ -76,6 +78,19 @@ function filterBySearchWord($origGames, $searchWord)
     return $filtered;
 }
 
+function filterLastAdded($origGames, $limit)
+{
+    $games = array_values($origGames);
+    usort(
+        $games,
+        function ($gameA, $gameB) {
+            return strtotime($gameB->firstRelease->date) - strtotime($gameA->firstRelease->date);
+        }
+    );
+
+    return array_slice($games, 0, $limit);
+}
+
 function filterLastUpdated($origGames, $limit)
 {
     $games = array_values($origGames);
@@ -102,6 +117,14 @@ function filterBestRated($origGames, $limit)
     return array_slice($games, 0, $limit);
 }
 
+function filterBestRatedGames($origGames, $limit)
+{
+    $noApps = filterByGenre($origGames, 'App', true);
+    $noAppsNoEmus = filterByGenre($noApps, 'Emulator', true);
+
+    return filterBestRated($noAppsNoEmus, $limit);
+}
+
 function filterMostDownloaded($origGames, $limit)
 {
     $games = array_values($origGames);