addType('imapPort', 'integer'); $this->addType('smtpPort', 'integer'); $this->addType('masterPasswordEnabled', 'boolean'); $this->addType('masterPassword', 'string'); $this->addType('sieveEnabled', 'boolean'); $this->addType('sievePort', 'integer'); $this->addType('ldapAliasesProvisioning', 'boolean'); } #[\Override] #[ReturnTypeWillChange] public function jsonSerialize() { return [ 'id' => $this->getId(), 'provisioningDomain' => $this->getProvisioningDomain(), 'emailTemplate' => $this->getEmailTemplate(), 'imapUser' => $this->getImapUser(), 'imapHost' => $this->getImapHost(), 'imapPort' => $this->getImapPort(), 'imapSslMode' => $this->getImapSslMode(), 'smtpUser' => $this->getSmtpUser(), 'smtpHost' => $this->getSmtpHost(), 'smtpPort' => $this->getSmtpPort(), 'smtpSslMode' => $this->getSmtpSslMode(), 'masterPasswordEnabled' => $this->getMasterPasswordEnabled(), 'masterPassword' => !empty($this->getMasterPassword()) ? self::MASTER_PASSWORD_PLACEHOLDER : null, 'sieveEnabled' => $this->getSieveEnabled(), 'sieveUser' => $this->getSieveUser(), 'sieveHost' => $this->getSieveHost(), 'sievePort' => $this->getSievePort(), 'sieveSslMode' => $this->getSieveSslMode(), 'aliases' => $this->getAliases(), 'ldapAliasesProvisioning' => $this->getLdapAliasesProvisioning(), 'ldapAliasesAttribute' => $this->getLdapAliasesAttribute(), ]; } /** * @return string */ public function buildImapUser(IUser $user) { if (!is_null($this->getImapUser())) { return $this->buildUserEmail($this->getImapUser(), $user); } return $this->buildEmail($user); } /** * @param IUser $user * @return string */ public function buildEmail(IUser $user) { return $this->buildUserEmail($this->getEmailTemplate(), $user); } /** * Replace %USERID% and %EMAIL% to allow special configurations * * @param string $original * @param IUser $user * @return string */ private function buildUserEmail(string $original, IUser $user) { if ($user->getUID() !== null) { $original = str_replace('%USERID%', $user->getUID(), $original); } if ($user->getEMailAddress() !== null) { $original = str_replace('%EMAIL%', $user->getEMailAddress(), $original); } return $original; } /** * @param IUser $user * @return string */ public function buildSmtpUser(IUser $user) { if (!is_null($this->getSmtpUser())) { return $this->buildUserEmail($this->getSmtpUser(), $user); } return $this->buildEmail($user); } /** * @param IUser $user * @return string */ public function buildSieveUser(IUser $user) { if (!is_null($this->getSieveUser())) { return $this->buildUserEmail($this->getSieveUser(), $user); } return $this->buildEmail($user); } }