lookup = Database::queryKeyValueList("SELECT gxl.locationid, GROUP_CONCAT(gxl.groupid SEPARATOR ', ') AS grps FROM passthrough_group_x_location gxl WHERE locationid IN (:allowedLocationIds) GROUP BY locationid", compact('allowedLocationIds')); } public function getColumnHtml(int $locationId): string { return htmlspecialchars($this->lookup[$locationId] ?? ''); } public function getEditUrl(int $locationId): string { if (!User::hasPermission('.passthrough.edit.location', $locationId)) return ''; return '?do=passthrough&show=assignlocation&locationid=' . $locationId; } public function header(): string { return Dictionary::translateFileModule('passthrough', 'module', 'location-column-header'); } public function priority(): int { return 4000; } public function propagateColumn(): bool { return true; } public function propagationOverride(string $parent, string $data): string { if (empty($parent)) return $data; $merge = array_unique(array_merge( explode(', ', $parent), explode(', ', $data))); sort($merge); return implode(', ', $merge); } } return new PassthroughLocationColumn($allowedLocationIds);