Skip to content

Commit

Permalink
fix(site-awards): filter out beaten games from awards displays [V3.2.…
Browse files Browse the repository at this point in the history
…1] (#1749)

* fix(site-awards): filter out beaten games from awards displays

* chore: lint

---------

Co-authored-by: Searo <searo1205@gmail.com>
  • Loading branch information
wescopeland and Tsearo committed Aug 12, 2023
1 parent b9709d3 commit 289f8b5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion app/Helpers/database/site-award.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ function getUsersSiteAwards(string $user, bool $showHidden = false): array
FROM SiteAwards AS saw
LEFT JOIN GameData AS gd ON ( gd.ID = saw.AwardData AND saw.AwardType = " . AwardType::Mastery . " )
LEFT JOIN Console AS c ON c.ID = gd.ConsoleID
WHERE saw.AwardType = " . AwardType::Mastery . " AND saw.User = :username
WHERE (saw.AwardType = " . AwardType::Mastery . " OR saw.AwardType = " . AwardType::GameBeaten . ") AND saw.User = :username
GROUP BY saw.AwardType, saw.AwardData, saw.AwardDataExtra
UNION
SELECT " . unixTimestampStatement('MAX(saw.AwardDate)', 'AwardedAt') . ", saw.AwardType, MAX( saw.AwardData ), saw.AwardDataExtra, saw.DisplayOrder, NULL, NULL, NULL, NULL
Expand Down
11 changes: 8 additions & 3 deletions app/Helpers/render/site-award.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ function SeparateAwards(array $userAwards): array

$eventAwards = array_values(array_filter($eventAwards, fn ($award) => !in_array($award, $devEventAwards)));

$siteAwards = array_values(array_filter($userAwards, fn ($award) => ($award['AwardType'] != AwardType::Mastery && AwardType::isActive((int) $award['AwardType']))
|| in_array($award, $devEventAwards)
));
$filterSiteAwards = function ($userAward) use ($devEventAwards) {
$isNotMasteryOrGameBeaten = $userAward['AwardType'] != AwardType::Mastery && $userAward['AwardType'] != AwardType::GameBeaten;
$isActiveAwardType = AwardType::isActive((int) $userAward['AwardType']);
$isDevEventAward = in_array($userAward, $devEventAwards);

return ($isNotMasteryOrGameBeaten && $isActiveAwardType) || $isDevEventAward;
};
$siteAwards = array_values(array_filter($userAwards, $filterSiteAwards));

return [$gameAwards, $eventAwards, $siteAwards];
}
Expand Down

0 comments on commit 289f8b5

Please sign in to comment.