Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamiras authored Feb 29, 2024
2 parents f0e546c + c0a518d commit f55f760
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 12 deletions.
40 changes: 36 additions & 4 deletions app/Helpers/database/user.php
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,39 @@ function getUserListByPerms(int $sortBy, int $offset, int $count, ?array &$dataO
return count($dataOut);
}

function GetDeveloperStatsFull(int $count, int $sortBy, int $devFilter = 7): array
// TODO: Used in developerstats.blade.php. Migrate to a controller.
function getDeveloperStatsTotalCount(int $devFilter = 7): int
{
$query = User::where('ContribCount', '>', 0)
->where('ContribYield', '>', 0);

switch ($devFilter) {
case 1: // Active
$query->where('Permissions', '>=', Permissions::Developer);
break;
case 2: // Junior
$query->where('Permissions', '=', Permissions::JuniorDeveloper);
break;
case 3: // Active + Junior
$query->where('Permissions', '>=', Permissions::JuniorDeveloper);
break;
case 4: // Inactive
$query->where('Permissions', '<=', Permissions::Registered);
break;
case 5: // Active + Inactive
$query->where('Permissions', '<>', Permissions::JuniorDeveloper);
break;
case 6: // Junior + Inactive
$query->where('Permissions', '<=', Permissions::JuniorDeveloper);
break;
default: // Active + Junior + Inactive
break;
}

return $query->count();
}

function GetDeveloperStatsFull(int $count, int $offset = 0, int $sortBy = 0, int $devFilter = 7): array
{
$stateCond = match ($devFilter) {
// Active
Expand Down Expand Up @@ -212,11 +244,11 @@ function GetDeveloperStatsFull(int $count, int $sortBy, int $devFilter = 7): arr
}
};

$buildDevList = function ($query) use ($count, $buildData, &$devs) {
$buildDevList = function ($query) use ($count, $offset, $buildData, &$devs) {
// build an ordered list of the user_ids that will be displayed
// these will be used to limit the query results of the subsequent queries
$devs = [];
foreach (legacyDbFetchAll($query . " LIMIT $count") as $row) {
foreach (legacyDbFetchAll($query . " LIMIT $offset, $count") as $row) {
$devs[] = $row['ID'];
}
if (empty($devs)) {
Expand Down Expand Up @@ -282,7 +314,7 @@ function GetDeveloperStatsFull(int $count, int $sortBy, int $devFilter = 7): arr
WHERE $stateCond
GROUP BY ua.ID
ORDER BY $order
LIMIT $count";
LIMIT $offset, $count";
$buildData($query);
}

Expand Down
51 changes: 43 additions & 8 deletions resources/views/pages-legacy/developerstats.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,35 @@
$type = requestInputSanitized('t', 0, 'integer');
$defaultFilter = 7; // set all 3 status' to enabled
$devFilter = requestInputSanitized('f', 7, 'integer');
$resolvedForOthersTicketFilter = TicketFilters::AllFilters & ~TicketFilters::StateOpen
& ~TicketFilters::StateRequest
& ~TicketFilters::StateClosed;
$offset = requestInputSanitized('o', 0, 'integer');
$resolvedForOthersTicketFilter = (
TicketFilters::AllFilters
& ~TicketFilters::StateOpen
& ~TicketFilters::StateRequest
& ~TicketFilters::StateClosed
);
$devStatsList = GetDeveloperStatsFull(25, $offset, $type, $devFilter);
$filteredDevCount = sizeof($devStatsList);
$totalDevCount = getDeveloperStatsTotalCount($devFilter);
$totalPages = ceil($totalDevCount / $filteredDevCount);
$currentPage = ($offset / $filteredDevCount) + 1;
$previousPageHref = null;
$nextPageHref = null;
if ($currentPage > 1) {
$previousOffset = $offset - $filteredDevCount;
$previousPageHref = url('developerstats.php?t=' . $type . '&f=' . $devFilter . '&o=' . $previousOffset);
}
if ($currentPage < $totalPages) {
$nextOffset = $offset + $filteredDevCount;
$nextPageHref = url('developerstats.php?t=' . $type . '&f=' . $devFilter . '&o=' . $nextOffset);
}
?>

<x-app-layout pageTitle="Developer Stats">
<h3>Developer Stats</h3>
<?php
$devStatsList = GetDeveloperStatsFull(100, $type, $devFilter);
$filteredDevCount = sizeof($devStatsList);
echo "<div class='embedded mb-1'>";
$activeDev = ($devFilter & (1 << 0));
$juniorDev = ($devFilter & (1 << 1));
Expand Down Expand Up @@ -51,7 +70,7 @@
echo "<a href='/developerstats.php?t=$type&f=" . ($devFilter | (1 << 2)) . "'>Inactive</a>";
}
echo "<br>";
echo "Filtered Developers: $filteredDevCount";
echo "Filtered Developers: $filteredDevCount of $totalDevCount";
echo "</div>";
// Clear Filter
Expand All @@ -65,7 +84,7 @@
echo "<div class='float-right'>* = ordered by</div>";
echo "<br style='clear:both;'>";
echo "<div class='table-wrapper'><table class='table-highlight'><tbody>";
echo "<div class='table-wrapper mb-2'><table class='table-highlight'><tbody>";
echo "<tr class='do-not-highlight'>";
echo "<th></th>";
Expand Down Expand Up @@ -109,4 +128,20 @@
}
echo "</tbody></table></div>";
?>

@if ($previousPageHref || $nextPageHref)
<div class="flex flex-col gap-y-4 items-center justify-between sm:flex-row sm:justify-end md:gap-x-4">
<div class="flex gap-x-4 items-center">
@if ($previousPageHref)
<a class="btn transition-transform lg:active:scale-95" href="{{ $previousPageHref }}">< Previous</a>
@endif

<p>Viewing Page {{ $currentPage }} of {{ $totalPages }}</p>

@if ($nextPageHref)
<a class="btn transition-transform lg:active:scale-95" href="{{ $nextPageHref }}">Next ></a>
@endif
</div>
</div>
@endif
</x-app-layout>

0 comments on commit f55f760

Please sign in to comment.