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(); } }