summaryrefslogblamecommitdiffstats
path: root/modules-available/passthrough/hooks/locations-column.inc.php
blob: 9757ac50e6075c93b0a6eb6f6ae535a031a2caa2 (plain) (tree)















































                                                                                                                                    
<?php

if (!User::hasPermission('.passthrough.view')) {
	return null;
}

class PassthroughLocationColumn extends AbstractLocationColumn
{

	private $lookup;

	public function __construct(array $allowedLocationIds)
	{
		$this->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.assign', $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;
	}

}

return new PassthroughLocationColumn($allowedLocationIds);