Files
projectsend/app/Modules/Files/Versions/LinkPreview.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

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Modules\Files\Versions;
/**
* What FileVersions::link() would do to recipients, shown before it does it.
*
* Linking moves the subject's own assignment rows onto the original, because
* a revision holds none of its own — so a link can widen the original's
* audience. That is the right outcome (nobody loses access the way dropping
* the rows would) but it is not something to do silently to a file the
* staffer is not currently looking at.
*/
final readonly class LinkPreview
{
/**
* @param list<string> $clientNames
* @param list<string> $groupNames
*/
public function __construct(
public array $clientNames = [],
public array $groupNames = [],
) {}
public function isEmpty(): bool
{
return $this->clientNames === [] && $this->groupNames === [];
}
/**
* @return array{clients: list<string>, groups: list<string>, empty: bool}
*/
public function toArray(): array
{
return [
'clients' => $this->clientNames,
'groups' => $this->groupNames,
'empty' => $this->isEmpty(),
];
}
}