id = (int)($data['id'] ?? 0); $instance->displayName = $data['angezeigtername'] ?? ''; $instance->emailAddress = $data['email'] ?? ''; $instance->description = $data['internebeschreibung'] ?? ''; $instance->username = $data['benutzername'] ?? ''; $instance->password = $data['passwort'] ?? ''; $instance->server = $data['server'] ?? ''; $instance->imapIsSentFolderActive = 1 === (int)($data['imap_sentfolder_aktiv'] ?? 0); $instance->imapSentFolder = $data['imap_sentfolder'] ?? ''; $instance->imapPort = (int)($data['imap_port'] ?? 0); $instance->imapType = (int)($data['imap_type'] ?? 0); $instance->letterTemplateId = (int)($data['geschaeftsbriefvorlage'] ?? 0); $instance->isAutoresponseActive = 1 === (int)($data['autoresponder'] ?? 0); $instance->autoresponseSubject = $data['autoresponderbetreff'] ?? ''; $instance->autoresponseText = $data['autorespondertext'] ?? ''; $instance->autoResponseLimitEnabled = 1 === (int)($data['autosresponder_blacklist'] ?? null); if (array_key_exists('autoresponder_blacklist', $data)) { $instance->autoResponseLimitEnabled = 1 === (int)($data['autoresponder_blacklist'] ?? 0); } $instance->projectId = (int)($data['projekt'] ?? 0); $instance->isBackupEnabled = 1 === (int)($data['emailbackup'] ?? 0); $instance->backupDeleteAfter = (int)($data['loeschtage'] ?? 0); $instance->addressId = (int)($data['adresse'] ?? 0); $instance->companyId = (int)($data['firma'] ?? 0); $instance->isDeleted = 1 === (int)($data['geloescht'] ?? 0); $instance->isTicketSystemActive = 1 === (int)($data['ticket'] ?? 0); $instance->isTicketDeleteEnabled = 1 === (int)($data['ticketloeschen'] ?? 0); $instance->isTicketMarkAsFinishedEnabled = 1 === (int)($data['ticketabgeschlossen'] ?? 0); $instance->ticketQueueId = $data['ticketqueue'] ?? ''; $instance->ticketProjectId = (int)($data['ticketprojekt'] ?? 0); $instance->isTicketInboundEmailAddressEnabled = 1 === (int)($data['ticketemaileingehend'] ?? 0); $instance->ticketStartDay = $data['abdatum'] ?? ''; $instance->isSmtpActive = 1 === (int)($data['smtp_extra'] ?? 0); $instance->smtpServer = $data['smtp'] ?? ''; switch ((int)($data['smtp_ssl'] ?? 0)) { case 0: $instance->smtpSecurity = ''; break; case 1: $instance->smtpSecurity = 'tls'; break; case 2: $instance->smtpSecurity = 'ssl'; break; default: $instance->smtpSecurity = ''; } $instance->smtpPort = (int)($data['smtp_port'] ?? 0); $instance->smtpSenderEmail = $data['smtp_frommail'] ?? ''; $instance->smtpSenderName = $data['smtp_fromname'] ?? ''; $instance->smtpAuthType = mb_strtolower($data['smtp_authtype'] ?? ''); $instance->smtpAuthParam = $data['smtp_authparam'] ?? ''; $instance->smtpDebugEnabled = (int)($data['smtp_loglevel'] ?? 0) > 0; $instance->clientAlias = $data['client_alias'] ?? ''; $instance->isSignatureActive = 1 === (int)($data['eigenesignatur'] ?? 0); $instance->signatureText = $data['signatur'] ?? ''; $instance->signatureMutex = (int)($data['mutex'] ?? 0); return $instance; } /** * @param string $name * * @return EmailBackupAccount */ public function withSmtpSenderName(string $name): EmailBackupAccount { $clone = clone($this); $clone->smtpSenderName = $name; return $clone; } /** * @param string $name * * @return EmailBackupAccount */ public function withDisplayName(string $name): EmailBackupAccount { $clone = clone($this); $clone->displayName = $name; return $clone; } /** * @inheritDoc */ public function getType():string { if (!$this->isSmtpActive) { return 'imap'; } return $this->smtpAuthType; } /** * @inheritDoc */ public function getServerAddress():string { if ($this->isSmtpActive === true) { return $this->smtpServer; } return $this->server; } /** * @inheritDoc */ public function getClientAlias():string { return $this->clientAlias; } /** * @inheritDoc */ public function getSenderEmailAddress():string { if ($this->isSmtpActive === true && $this->smtpSenderEmail !== '') { return $this->smtpSenderEmail; } return $this->emailAddress; } /** * @inheritDoc */ public function getSenderName():string { if ($this->isSmtpActive === true && $this->smtpSenderEmail !== '') { return $this->smtpSenderEmail; } return $this->displayName; } /** * @inheritDoc */ public function getUserName():string { if ($this->smtpAuthType === MailAccountInterface::TYPE_GOOGLE) { return $this->smtpSenderEmail; } return $this->username; } /** * @return int */ public function getId(): int { return $this->id; } /** * @return string */ public function getDisplayName(): string { return $this->displayName; } /** * @return string */ public function getDescription(): string { return $this->description; } /** * @return string */ public function getPassword(): string { return $this->password; } /** * @return string */ public function getImapServer(): string { return $this->server; } /** * @return string */ public function getEmailAddress(): string { return $this->emailAddress; } /** * @return bool */ public function isCopyToOutgoingFolderEnabled(): bool { return $this->imapIsSentFolderActive && !empty($this->imapSentFolder); } /** * @return string */ public function getImapOutgoingFolder(): string { return $this->imapSentFolder; } /** * @return int */ public function getImapPort(): int { return $this->imapPort; } /** * @return int */ public function getImapType(): int { return $this->imapType; } /** * @return int */ public function getLetterTemplateId(): int { return $this->letterTemplateId; } /** * @return bool */ public function isAutoresponseEnabled(): bool { return $this->isAutoresponseActive; } /** * @return string */ public function getAutoresponseSubject(): string { return $this->autoresponseSubject; } /** * @return string */ public function getAutoresponseText(): string { return $this->autoresponseText; } /** * @return bool */ public function isAutoresponseLimitEnabled(): bool { return $this->autoResponseLimitEnabled; } /** * @return int */ public function getProjectId(): int { return $this->projectId; } /** * @return bool */ public function isBackupEnabled(): bool { return $this->isBackupEnabled; } /** * @return int */ public function getBackupDeleteAfterDays(): int { return $this->backupDeleteAfter; } /** * @return int */ public function getCompanyId(): int { return $this->companyId; } /** * @return int */ public function getAddressId(): int { return $this->addressId; } /** * @return bool */ public function isTicketImportEnabled(): bool { return $this->isTicketSystemActive; } /** * @return bool */ public function isMarkedAsDeleted(): bool { return $this->isDeleted; } /** * @return bool */ public function isDeleteAfterImportEnabled(): bool { return $this->isTicketDeleteEnabled; } /** * @return bool */ public function isTicketMarkAsFinishedEnabled(): bool { return $this->isTicketMarkAsFinishedEnabled; } /** * @return string */ public function getTicketQueueId(): string { return $this->ticketQueueId; } /** * @return int */ public function getTicketProjectId(): int { return $this->ticketProjectId ?? 0; } /** * @return bool */ public function isTicketInboundEmailAddressEnabled(): bool { return $this->isTicketInboundEmailAddressEnabled ?? false; } /** * @return DateTimeInterface|null */ public function getImportStartDate(): ?DateTimeInterface { if (empty($this->ticketStartDay) || $this->ticketStartDay === '0000-00-00') { return null; } $dateTime = DateTime::createFromFormat('Y-m-d', (string)$this->ticketStartDay); if ($dateTime === false) { return null; } return $dateTime; } /** * @return string */ public function getImportStartDateAsString(): string { // ensure legacy code compatibility if (!is_string($this->ticketStartDay) || empty($this->ticketStartDay)) { return '0000-00-00'; } return $this->ticketStartDay; } /** * @return bool */ public function isSmtpEnabled(): bool { return $this->isSmtpActive; } /** * @return string */ public function getSmtpServer(): string { return $this->smtpServer; } /** * @return string */ public function getSmtpSecurity(): string { return $this->smtpSecurity; } /** * @return int */ public function getSmtpPort(): int { return $this->smtpPort; } /** * @return string */ public function getSmtpSenderEmail(): string { return $this->smtpSenderEmail; } /** * @return string */ public function getSmtpSenderName(): string { return $this->smtpSenderName; } /** * @return bool */ public function isSignatureEnabled(): bool { return $this->isSignatureActive; } /** * @return string */ public function getSignatureText(): string { return $this->signatureText; } /** * @return string */ public function getSmtpAuthType(): string { return $this->smtpAuthType; } /** * @return bool */ public function isSmtpDebugEnabled(): bool { return $this->smtpDebugEnabled; } /** * @return array */ public function __debugInfo(): array { return [ 'id' => $this->id, 'displayName' => $this->displayName, 'emailAddress' => $this->emailAddress, 'descrption' => $this->description, 'username' => $this->username, 'password' => '**********', 'server' => $this->server, 'imapIsSentFolderActive' => $this->imapIsSentFolderActive, 'imapSentFolder' => $this->imapSentFolder, 'imapPort' => $this->imapPort, 'imapType' => $this->imapType, 'letterTemplateId' => $this->letterTemplateId, 'isAutoresponseActive' => $this->isAutoresponseActive, 'autoresponseSubject' => $this->autoresponseSubject, 'autoresponseText' => $this->autoresponseText, 'autoresponseLimitEnabled' => $this->autoResponseLimitEnabled, 'projectId' => $this->projectId, 'isBackupEnabled' => $this->isBackupEnabled, 'backupDeleteAfter' => $this->backupDeleteAfter, 'addressId' => $this->addressId, 'companyId' => $this->companyId, 'isDeleted' => $this->isDeleted, 'isTicketImportEnabled' => $this->isTicketSystemActive, 'isTicketDeleteEnabled' => $this->isTicketDeleteEnabled, 'isTicketMarkAsFinishedEnabled' => $this->isTicketMarkAsFinishedEnabled, 'ticketQueueId' => $this->ticketQueueId, 'ticketProjectId' => $this->ticketProjectId, 'isTicketInboundEmailAddressEnabled' => $this->isTicketInboundEmailAddressEnabled, 'ticketStartDate' => $this->ticketStartDay, 'isSmtpEnabled' => $this->isSmtpActive, 'smtpServer' => $this->smtpServer, 'smtpSecurity' => $this->smtpSecurity, 'smtpPort' => $this->smtpPort, 'smtpSenderEmail' => $this->smtpSenderEmail, 'smtpSenderName' => $this->smtpSenderName, 'smtpAuthType' => $this->smtpAuthType, 'smtpAuthParam' => $this->smtpAuthParam, 'smtpDebugEnabled' => $this->smtpDebugEnabled, 'clientAlias' => $this->clientAlias, 'isSignatureEnabled' => $this->isSignatureActive, 'signatureText' => $this->signatureText, 'signatureMutex' => $this->signatureMutex, ]; } }