New categories
authorChristian Weiske <cweiske@cweiske.de>
Tue, 21 Jan 2020 21:02:03 +0000 (22:02 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Tue, 21 Jan 2020 21:02:03 +0000 (22:02 +0100)
bin/filters.php
bin/import-game-data.php

index 628936a899e2057499f56a1ad7d5e3a14e0174e7..a10777a03ed65bcec36ed507da65c6dc93a30e2b 100644 (file)
@@ -102,6 +102,29 @@ function filterBestRated($origGames, $limit)
     return array_slice($games, 0, $limit);
 }
 
     return array_slice($games, 0, $limit);
 }
 
+function filterMostDownloaded($origGames, $limit)
+{
+    $games = array_values($origGames);
+    usort(
+        $games,
+        function ($gameA, $gameB) {
+            return $gameB->rating->count - $gameA->rating->count;
+        }
+    );
+
+    return array_slice($games, 0, $limit);
+}
+
+function filterRandom($origGames, $limit)
+{
+    $randKeys = array_rand($origGames, $limit);
+    $games = [];
+    foreach ($randKeys as $key) {
+        $games[] = $origGames[$key];
+    }
+    return $games;
+}
+
 function sortByTitle($games)
 {
     usort(
 function sortByTitle($games)
 {
     usort(
index fba427d6a97cd2b590d684d1cb37b5a6ad4a316b..1eb783c7bb8fd1ed9269c7dd45d70279bacdcf13 100755 (executable)
@@ -157,13 +157,37 @@ function buildDiscover(array $games)
         filterByPackageNames($games, $GLOBALS['packagelists']['cweiskepicks'])
     );
 
         filterByPackageNames($games, $GLOBALS['packagelists']['cweiskepicks'])
     );
 
+    addDiscoverRow(
+        $data, 'Special',
+        [
+            'Best rated',
+            'Most rated',
+            'Random',
+        ]
+    );
+    writeJson(
+        'api/v1/discover-data/' . categoryPath('Best rated') . '.json',
+        buildSpecialCategory('Best rated', filterBestRated($games, 99))
+    );
+    writeJson(
+        'api/v1/discover-data/' . categoryPath('Most rated') . '.json',
+        buildSpecialCategory('Most rated', filterMostDownloaded($games, 99))
+    );
+    writeJson(
+        'api/v1/discover-data/' . categoryPath('Random') . '.json',
+        buildSpecialCategory(
+            'Random' . date('Y-m-d H:i'),
+            filterRandom($games, 99)
+        )
+    );
+
     $players = [
         //1 => '1 player',
         2 => '2 players',
         3 => '3 players',
         4 => '4 players',
     ];
     $players = [
         //1 => '1 player',
         2 => '2 players',
         3 => '3 players',
         4 => '4 players',
     ];
-    addDiscoverRow($data, '# of players', $players);
+    addDiscoverRow($data, 'Multiplayer', $players);
     foreach ($players as $num => $title) {
         writeJson(
             'api/v1/discover-data/' . categoryPath($title) . '.json',
     foreach ($players as $num => $title) {
         writeJson(
             'api/v1/discover-data/' . categoryPath($title) . '.json',
@@ -246,6 +270,25 @@ function buildMakeCategory($name, $games)
     return $data;
 }
 
     return $data;
 }
 
+function buildSpecialCategory($name, $games)
+{
+    $data = [
+        'title' => $name,
+        'rows'  => [],
+        'tiles' => [],
+    ];
+
+    $first3 = array_slice($games, 0, 3);
+    $chunks = array_chunk(array_slice($games, 3), 4);
+    array_unshift($chunks, $first3);
+
+    foreach ($chunks as $chunkGames) {
+        addDiscoverRow($data, '', $chunkGames);
+    }
+
+    return $data;
+}
+
 function buildDiscoverHome(array $games)
 {
     //we do not want anything here for now
 function buildDiscoverHome(array $games)
 {
     //we do not want anything here for now