-
-
Notifications
You must be signed in to change notification settings - Fork 290
Description
Describe the problem
Sorting fails with “Invalid ORDER BY column” when:
- Sorting by owner in DNS Zones overview.
- Sorting by id or disabled in Records overview of a Zone after applying a filter.
The likely cause is that the columns are missing from the $allowedSortColumns arrays:
- owner missing in DomainRepository::getZones()
- id and disabled missing in RecordRepository::getFilteredRecords()
(getZoneTemplRecords() and getReverseZones() include all required sortable columns)
Steps to reproduce
DNS Zones overview
- Click column header to sort by owner
→ Error occurs
Zones → Edit a Zone (Records)
- Apply a filter
- Click column header to sort by id or disabled
→ Error occurs
Poweradmin version
4.0.1
Database
MySQL
Additional information (optional)
Browser error
An error occurred while processing the request.
php error log (zone)
PHP message: Invalid ORDER BY column: owner
PHP message: #0 /poweradmin/lib/Domain/Repository/DomainRepository.php(223): Poweradmin\Infrastructure\Database\TableNameService->validateOrderBy()
#1 /poweradmin/lib/Application/Controller/ListForwardZonesController.php(107): Poweradmin\Domain\Repository\DomainRepository->getZones()
#2 /poweradmin/lib/Application/Controller/ListForwardZonesController.php(58): Poweradmin\Application\Controller\ListForwardZonesController->listForwardZones()
#3 /poweradmin/lib/Application/Routing/BasicRouter.php(190): Poweradmin\Application\Controller\ListForwardZonesController->run()
#4 /poweradmin/index.php(68): Poweradmin\Application\Routing\BasicRouter->process()
#5 {main}
php error log (records)
PHP message: Invalid ORDER BY column: id
PHP message: #0 /poweradmin/lib/Domain/Repository/RecordRepository.php(376): Poweradmin\Infrastructure\Database\TableNameService->validateOrderBy()
#1 /poweradmin/lib/Application/Controller/EditController.php(377): Poweradmin\Domain\Repository\RecordRepository->getFilteredRecords()
#2 /poweradmin/lib/Application/Routing/BasicRouter.php(190): Poweradmin\Application\Controller\EditController->run()
#3 /poweradmin/index.php(68): Poweradmin\Application\Routing\BasicRouter->process()
#4 {main}
Fix
Add the missing columns to the respective $allowedSortColumns arrays so that sorting by owner (Zones) and id / disabled (Records) is allowed.
--- a/lib/Domain/Repository/RecordRepository.php
+++ b/lib/Domain/Repository/RecordRepository.php
@@ -372,7 +372,7 @@ class RecordRepository implements RecordRepositoryInterface
string $content_filter = ''
): array {
// Validate sort parameters
- $allowedSortColumns = ['name', 'type', 'content', 'ttl', 'prio'];
+ $allowedSortColumns = ['id', 'name', 'type', 'content', 'ttl', 'prio', 'disabled'];
$sort_by = $this->tableNameService->validateOrderBy($sort_by, $allowedSortColumns);
$sort_direction = $this->tableNameService->validateDirection($sort_direction);
--- a/lib/Domain/Repository/DomainRepository.php
+++ b/lib/Domain/Repository/DomainRepository.php
@@ -219,7 +219,7 @@ class DomainRepository implements DomainRepositoryInterface
public function getZones(string $perm, int $userid = 0, string $letterstart = 'all', int $rowstart = 0, int $rowamount = Constants::DEFAULT_MAX_ROWS, string $sortby = 'name', string $sortDirection = 'ASC', bool $excludeReverse = false): array
{
// Validate sort parameters
- $allowedSortColumns = ['name', 'type', 'count_records'];
+ $allowedSortColumns = ['name', 'type', 'count_records', 'owner'];
$sortby = $this->tableNameService->validateOrderBy($sortby, $allowedSortColumns);
$sortDirection = $this->tableNameService->validateDirection($sortDirection);
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
uiUser InterfaceUser Interface