You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
4.1 KiB
177 lines
4.1 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
namespace OCA\Talk\Model;
|
|
|
|
use OCA\Circles\Model\Circle;
|
|
use OCP\Federation\ICloudId;
|
|
use OCP\IGroup;
|
|
use OCP\IUser;
|
|
|
|
class InvitationList {
|
|
|
|
/** @var array<string, IUser> */
|
|
protected array $validUsers = [];
|
|
/** @var list<string> */
|
|
protected array $invalidUsers = [];
|
|
|
|
/** @var array<string, ICloudId> */
|
|
protected array $validFederatedUsers = [];
|
|
/** @var list<string> */
|
|
protected array $invalidFederatedUsers = [];
|
|
|
|
/** @var array<string, IGroup> */
|
|
protected array $validGroups = [];
|
|
/** @var list<string> */
|
|
protected array $invalidGroups = [];
|
|
|
|
/** @var array<string, Circle> */
|
|
protected array $validTeams = [];
|
|
/** @var list<string> */
|
|
protected array $invalidTeams = [];
|
|
|
|
/** @var array<string, string> */
|
|
protected array $validEmails = [];
|
|
/** @var list<string> */
|
|
protected array $invalidEmails = [];
|
|
|
|
/** @var array<string, string> */
|
|
protected array $validPhoneNumbers = [];
|
|
/** @var list<string> */
|
|
protected array $invalidPhoneNumbers = [];
|
|
|
|
/**
|
|
* @param array<string, IUser> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setUserResults(array $valid, array $invalid): void {
|
|
$this->validUsers = $valid;
|
|
$this->invalidUsers = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @param array<string, ICloudId> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setFederatedUserResults(array $valid, array $invalid): void {
|
|
$this->validFederatedUsers = $valid;
|
|
$this->invalidFederatedUsers = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @param array<string, IGroup> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setGroupResults(array $valid, array $invalid): void {
|
|
$this->validGroups = $valid;
|
|
$this->invalidGroups = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @param array<string, Circle> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setTeamResults(array $valid, array $invalid): void {
|
|
$this->validTeams = $valid;
|
|
$this->invalidTeams = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @param array<string, string> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setEmailResults(array $valid, array $invalid): void {
|
|
$this->validEmails = $valid;
|
|
$this->invalidEmails = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @param array<string, string> $valid
|
|
* @param list<string> $invalid
|
|
*/
|
|
public function setPhoneNumberResults(array $valid, array $invalid): void {
|
|
$this->validPhoneNumbers = $valid;
|
|
$this->invalidPhoneNumbers = $invalid;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, IUser>
|
|
*/
|
|
public function getUsers(): array {
|
|
return $this->validUsers;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, ICloudId>
|
|
*/
|
|
public function getFederatedUsers(): array {
|
|
return $this->validFederatedUsers;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, IGroup>
|
|
*/
|
|
public function getGroup(): array {
|
|
return $this->validGroups;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, Circle>
|
|
*/
|
|
public function getTeams(): array {
|
|
return $this->validTeams;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public function getEmails(): array {
|
|
return $this->validEmails;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public function getPhoneNumbers(): array {
|
|
return $this->validPhoneNumbers;
|
|
}
|
|
|
|
/**
|
|
* @return array<'users'|'federated_users'|'groups'|'emails'|'phones'|'teams', list<string>>
|
|
*/
|
|
public function getInvalidList(): array {
|
|
$response = [
|
|
'users' => $this->invalidUsers,
|
|
'federated_users' => $this->invalidFederatedUsers,
|
|
'groups' => $this->invalidGroups,
|
|
'teams' => $this->invalidTeams,
|
|
'emails' => $this->invalidEmails,
|
|
'phones' => $this->invalidPhoneNumbers,
|
|
];
|
|
return array_filter($response);
|
|
}
|
|
|
|
public function hasValidInvitations(): bool {
|
|
return !empty($this->validUsers)
|
|
|| !empty($this->validFederatedUsers)
|
|
|| !empty($this->validGroups)
|
|
|| !empty($this->validTeams)
|
|
|| !empty($this->validEmails)
|
|
|| !empty($this->validPhoneNumbers);
|
|
}
|
|
|
|
public function hasInvalidInvitations(): bool {
|
|
return !empty($this->invalidUsers)
|
|
|| !empty($this->invalidFederatedUsers)
|
|
|| !empty($this->invalidGroups)
|
|
|| !empty($this->invalidTeams)
|
|
|| !empty($this->invalidEmails)
|
|
|| !empty($this->invalidPhoneNumbers);
|
|
}
|
|
}
|