$db = db_connect();
$colorCounts = $db->query("
SELECT color, COUNT(*) AS total
FROM products
WHERE color IS NOT NULL
AND color != ''
AND is_active = 1
AND is_deleted = 0
AND listing_type != 'ordinary_listing'
GROUP BY color
")->getResult();
$colorCountArray = [];
foreach ($colorCounts as $row) {
$colorCountArray[$row->color] = (int)$row->total;
}
uksort($productColorList, function ($a, $b) use ($colorCountArray) {
$countA = $colorCountArray[$a] ?? 0;
$countB = $colorCountArray[$b] ?? 0;
if ($countA == $countB) {
return 0;
}
return $countB <=> $countA;
});