Files
projectsend/app/Modules/Platform/Capabilities/CapabilityRegistry.php
ignacionelson 6e47d76ba6 ProjectSend 2.0.0
Client file sharing, rebuilt from the ground up: a private area per
client, resumable uploads, folders, groups and categories, sharing with
expiry dates and download limits, comments, file versions, an activity
log, a REST API, and sixteen languages.

This repository begins here. ProjectSend 2 was developed privately, and
that development history is not published — the previous generation
remains available, with its own history, at projectsend/legacy.

Free software under the GNU General Public License v2, or (at your
option) any later version.
2026-08-14 01:38:12 -03:00

48 lines
1002 B
PHP

<?php
declare(strict_types=1);
namespace App\Modules\Platform\Capabilities;
class CapabilityRegistry
{
public function __construct(
private readonly Edition $edition,
) {}
public function edition(): Edition
{
return $this->edition;
}
public function has(Capability $capability): bool
{
return $capability->availableIn($this->edition);
}
/**
* @return list<Capability>
*/
public function enabled(): array
{
return array_values(array_filter(
Capability::cases(),
fn (Capability $capability): bool => $this->has($capability),
));
}
/**
* Capability keys enabled for this edition, for Inertia shared props and
* API responses.
*
* @return list<string>
*/
public function enabledKeys(): array
{
return array_map(
fn (Capability $capability): string => $capability->value,
$this->enabled(),
);
}
}