HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/files.wb-cloud.nl/private_html/apps/circles/lib/Model/Probes/MemberProbe.php
<?php

declare(strict_types=1);


/**
 * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */


namespace OCA\Circles\Model\Probes;

use OCA\Circles\Model\Member;

/**
 * Class MemberProbe
 *
 * @package OCA\Circles\Model\Probes
 */
class MemberProbe extends BasicProbe {
	private int $minimumLevel = Member::LEVEL_NONE;
	private bool $emulateVisitor = false;
	private bool $requestingMembership = false;
	private bool $initiatorDirectMember = false;

	/**
	 * allow the initiator as a requesting member
	 *
	 * @param bool $can
	 *
	 * @return $this
	 */
	public function canBeRequestingMembership(bool $can = true): self {
		$this->requestingMembership = $can;

		return $this;
	}

	/**
	 * @return bool
	 */
	public function isRequestingMembership(): bool {
		return $this->requestingMembership;
	}


	/**
	 * @param bool $include
	 *
	 * @return $this
	 */
	public function initiatorAsDirectMember(bool $include = true): self {
		$this->initiatorDirectMember = $include;

		return $this;
	}

	/**
	 * @return bool
	 */
	public function directMemberInitiator(): bool {
		return $this->initiatorDirectMember;
	}


	/**
	 * force the generation an initiator if visitor
	 *
	 * @return $this
	 */
	public function emulateVisitor(): self {
		$this->emulateVisitor = true;

		return $this;
	}

	public function isEmulatingVisitor(): bool {
		return $this->emulateVisitor;
	}


	/**
	 * @return int
	 */
	public function getMinimumLevel(): int {
		return $this->minimumLevel;
	}

	/**
	 * @return $this
	 */
	public function mustBeMember(bool $must = true): self {
		if ($must) {
			$this->minimumLevel = Member::LEVEL_MEMBER;
		} else {
			$this->minimumLevel = Member::LEVEL_NONE;
		}

		return $this;
	}

	/**
	 * @return $this
	 */
	public function mustBeModerator(): self {
		$this->minimumLevel = Member::LEVEL_MODERATOR;

		return $this;
	}

	/**
	 * @return $this
	 */
	public function mustBeAdmin(): self {
		$this->minimumLevel = Member::LEVEL_ADMIN;

		return $this;
	}

	/**
	 * @return $this
	 */
	public function mustBeOwner(): self {
		$this->minimumLevel = Member::LEVEL_OWNER;

		return $this;
	}


	/**
	 * @return array
	 */
	public function getAsOptions(): array {
		return array_merge(
			[
				'minimumLevel' => $this->getMinimumLevel(),
				'emulateVisitor' => $this->isEmulatingVisitor(),
				'allowRequestingMembership' => $this->isRequestingMembership(),
				'initiatorDirectMember' => $this->directMemberInitiator(),
			],
			parent::getAsOptions()
		);
	}


	/**
	 * @return array
	 */
	public function JsonSerialize(): array {
		return $this->getAsOptions();
	}
}