Improved the visual separation of package sources
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / package / update / PackageUpdateAction.class.php
index a94d9b8750caf21ed410b40b951d0727c41e8821..7af9a557bc8fd9521ca215cd7635a2e883ea0421 100644 (file)
@@ -450,6 +450,11 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
                $updateVersions = $statement->fetchObjects(PackageUpdateVersion::class, 'packageUpdateVersionID');
                
                // assign versions
+               /**
+                * @var ViewablePackageUpdate[] $thirdPartySources
+                * @var ViewablePackageUpdate[] $trustedSources
+                */
+               $thirdPartySources = $trustedSources = [];
                /**
                 * @var int $packageUpdateID
                 * @var ViewablePackageUpdate $packageUpdate
@@ -459,25 +464,29 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
                        $packageUpdate->setAccessibleVersion($updateVersions[$versionIDs['accessible']]);
                        $packageUpdate->setLatestVersion($updateVersions[$versionIDs['existing']]);
                        $packageUpdate->setUpdateServer($updateServers[$packageUpdate->packageUpdateServerID]);
-               }
-               
-               uasort($packageUpdates, function(ViewablePackageUpdate $a, ViewablePackageUpdate $b) {
-                       $aIsTrusted = $a->getUpdateServer()->isTrustedServer() || $a->getUpdateServer()->isWoltLabStoreServer();
-                       $bIsTrusted = $b->getUpdateServer()->isTrustedServer() || $b->getUpdateServer()->isWoltLabStoreServer();
                        
-                       if ($aIsTrusted === $bIsTrusted) {
-                               return strnatcasecmp($a->getName(), $b->getName());
+                       if ($packageUpdate->getUpdateServer()->isTrustedServer() || $packageUpdate->getUpdateServer()->isWoltLabStoreServer()) {
+                               $trustedSources[] = $packageUpdate;
                        }
-                       
-                       return $aIsTrusted ? -1 : 1;
+                       else {
+                               $thirdPartySources[] = $packageUpdate;
+                       }
+               }
+               
+               uasort($thirdPartySources, function(ViewablePackageUpdate $a, ViewablePackageUpdate $b) {
+                       return strnatcasecmp($a->getName(), $b->getName());
+               });
+               uasort($trustedSources, function(ViewablePackageUpdate $a, ViewablePackageUpdate $b) {
+                       return strnatcasecmp($a->getName(), $b->getName());
                });
                
                WCF::getTPL()->assign([
-                       'packageUpdates' => $packageUpdates,
+                       'thirdPartySources' => $thirdPartySources,
+                       'trustedSources' => $trustedSources,
                ]);
                
                return [
-                       'count' => count($updateData),
+                       'count' => count($thirdPartySources) + count($trustedSources),
                        'template' => WCF::getTPL()->fetch('packageSearchResultList'),
                ];
        }