diff options
author | MaadixNet <contact@maadix.net> | 2022-07-26 12:38:26 +0300 |
---|---|---|
committer | MaadiX <contact@maadix.net> | 2022-10-14 12:55:42 +0300 |
commit | f55dfcf6b5e7611746ae176d2205cbf66099854f (patch) | |
tree | df1b23cfa6c3b080e3cb0f05f7ac285204ccadc8 /lib | |
parent | 09f7a0cfc3ecf10a667b6f245bc3ac078d04852d (diff) |
Optional values + cs:fix
Signed-off-by: MaadiX <contact@maadix.net>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Command/UpdateAccount.php | 200 |
1 files changed, 95 insertions, 105 deletions
diff --git a/lib/Command/UpdateAccount.php b/lib/Command/UpdateAccount.php index 0d70bc4bb..e6f63244d 100644 --- a/lib/Command/UpdateAccount.php +++ b/lib/Command/UpdateAccount.php @@ -22,7 +22,6 @@ namespace OCA\Mail\Command; -use OCA\Mail\Db\MailAccount; use OCA\Mail\Db\MailAccountMapper; use OCP\Security\ICrypto; use Symfony\Component\Console\Command\Command; @@ -33,21 +32,20 @@ use Symfony\Component\Console\Output\OutputInterface; class UpdateAccount extends Command { public const ARGUMENT_USER_ID = 'user-id'; - public const ARGUMENT_NAME = 'name'; - public const ARGUMENT_EMAIL = 'email'; - public const ARGUMENT_IMAP_HOST = 'imap-host'; - public const ARGUMENT_IMAP_PORT = 'imap-port'; - public const ARGUMENT_IMAP_SSL_MODE = 'imap-ssl-mode'; - public const ARGUMENT_IMAP_USER = 'imap-user'; - public const ARGUMENT_IMAP_PASSWORD = 'imap-password'; - public const ARGUMENT_SMTP_HOST = 'smtp-host'; - public const ARGUMENT_SMTP_PORT = 'smtp-port'; - public const ARGUMENT_SMTP_SSL_MODE = 'smtp-ssl-mode'; - public const ARGUMENT_SMTP_USER = 'smtp-user'; - public const ARGUMENT_SMTP_PASSWORD = 'smtp-password'; + public const ARGUMENT_EMAIL = 'email'; + public const ARGUMENT_IMAP_HOST = 'imap-host'; + public const ARGUMENT_IMAP_PORT = 'imap-port'; + public const ARGUMENT_IMAP_SSL_MODE = 'imap-ssl-mode'; + public const ARGUMENT_IMAP_USER = 'imap-user'; + public const ARGUMENT_IMAP_PASSWORD = 'imap-password'; + public const ARGUMENT_SMTP_HOST = 'smtp-host'; + public const ARGUMENT_SMTP_PORT = 'smtp-port'; + public const ARGUMENT_SMTP_SSL_MODE = 'smtp-ssl-mode'; + public const ARGUMENT_SMTP_USER = 'smtp-user'; + public const ARGUMENT_SMTP_PASSWORD = 'smtp-password'; /** @var mapper */ - private $mapper; + private $mapper; /** @var ICrypto */ private $crypto; @@ -55,7 +53,7 @@ class UpdateAccount extends Command { public function __construct(MailAccountMapper $mapper, ICrypto $crypto) { parent::__construct(); - $this->mapper = $mapper; + $this->mapper = $mapper; $this->crypto = $crypto; } @@ -64,100 +62,92 @@ class UpdateAccount extends Command { */ protected function configure() { $this->setName('mail:account:update'); - $this->setDescription('Update a user\'s IMAP account(s)'); + $this->setDescription('Update a user\'s IMAP account'); $this->addArgument(self::ARGUMENT_USER_ID, InputArgument::REQUIRED); - $this->addArgument(self::ARGUMENT_EMAIL, InputArgument::REQUIRED); - - - $this->addOption(self::ARGUMENT_IMAP_HOST,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_IMAP_PORT,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_IMAP_SSL_MODE,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_IMAP_USER,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_IMAP_PASSWORD,'', InputOption::VALUE_REQUIRED); - - $this->addOption(self::ARGUMENT_SMTP_HOST,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_SMTP_PORT,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_SMTP_SSL_MODE,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_SMTP_USER,'', InputOption::VALUE_REQUIRED); - $this->addOption(self::ARGUMENT_SMTP_PASSWORD,'',InputOption::VALUE_REQUIRED); - + $this->addArgument(self::ARGUMENT_EMAIL, InputArgument::REQUIRED); + + $this->addOption(self::ARGUMENT_IMAP_HOST, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_IMAP_PORT, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_IMAP_SSL_MODE, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_IMAP_USER, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_IMAP_PASSWORD, '', InputOption::VALUE_OPTIONAL); + + $this->addOption(self::ARGUMENT_SMTP_HOST, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_SMTP_PORT, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_SMTP_SSL_MODE, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_SMTP_USER, '', InputOption::VALUE_OPTIONAL); + $this->addOption(self::ARGUMENT_SMTP_PASSWORD, '', InputOption::VALUE_OPTIONAL); } protected function execute(InputInterface $input, OutputInterface $output): int { - - $userId = $input->getArgument(self::ARGUMENT_USER_ID); - $email = $input->getArgument(self::ARGUMENT_EMAIL); - - - $imapHost = $input->getOption(self::ARGUMENT_IMAP_HOST); - $imapPort = $input->getOption(self::ARGUMENT_IMAP_PORT); - $imapSslMode = $input->getOption(self::ARGUMENT_IMAP_SSL_MODE); - $imapUser = $input->getOption(self::ARGUMENT_IMAP_USER); - $imapPassword = $input->getOption(self::ARGUMENT_IMAP_PASSWORD); - - $smtpHost = $input->getOption(self::ARGUMENT_SMTP_HOST); - $smtpPort = $input->getOption(self::ARGUMENT_SMTP_PORT); - $smtpSslMode = $input->getOption(self::ARGUMENT_SMTP_SSL_MODE); - $smtpUser = $input->getOption(self::ARGUMENT_SMTP_USER); - $smtpPassword = $input->getOption(self::ARGUMENT_SMTP_PASSWORD); - - $accounts = $this->mapper->findByUserId($userId); - - foreach ($accounts as $account) { - # User may have have more than one email account. Only update the given one - if ($account->getEmail() == $email) { - $mailAccount = $account; - break; - } - } - if ($mailAccount) { - //INBOUND - if ($input->getOption(self::ARGUMENT_IMAP_HOST)) { - $mailAccount->setInboundHost($imapHost); - } - - if ($input->getOption(self::ARGUMENT_IMAP_PORT)) { - $mailAccount->setInboundPort((int) $imapPort); - } - - if ($input->getOption(self::ARGUMENT_IMAP_SSL_MODE)) { - $mailAccount->setInboundSslMode($imapSslMode); - } - if ($input->getOption(self::ARGUMENT_IMAP_PASSWORD)) { - $mailAccount->setInboundPassword($this->crypto->encrypt($imapPassword)); - } - - if ($input->getOption(self::ARGUMENT_SMTP_USER)) { - $mailAccount->setInboundUser($imapUser); - } - - // OUTBOUND - - if ($input->getOption(self::ARGUMENT_SMTP_HOST)) { - $mailAccount->setOutboundHost($smtpHost); - } - - if ($input->getOption(self::ARGUMENT_SMTP_PORT)) { - $mailAccount->setOutboundPort((int) $smtpPort); - } - if ($input->getOption(self::ARGUMENT_SMTP_SSL_MODE)) { - $mailAccount->setOutboundSslMode($smtpSslMode); - } - - if ($input->getOption(self::ARGUMENT_SMTP_PASSWORD)) { - $mailAccount->setOutboundPassword($this->crypto->encrypt($smtpPassword)); - } - if ($input->getOption(self::ARGUMENT_SMTP_USER)) { - $mailAccount->setOutboundUser($smtpUser); - } - - $this->mapper->save($mailAccount); - - $output->writeln("<info>Account $email for user $userId succesfully updated </info>"); - - } else { - $output->writeln("<info>No Email Account $email found for user $userId </info>"); - } + $userId = $input->getArgument(self::ARGUMENT_USER_ID); + $email = $input->getArgument(self::ARGUMENT_EMAIL); + + $imapHost = $input->getOption(self::ARGUMENT_IMAP_HOST); + $imapPort = $input->getOption(self::ARGUMENT_IMAP_PORT); + $imapSslMode = $input->getOption(self::ARGUMENT_IMAP_SSL_MODE); + $imapUser = $input->getOption(self::ARGUMENT_IMAP_USER); + $imapPassword = $input->getOption(self::ARGUMENT_IMAP_PASSWORD); + + $smtpHost = $input->getOption(self::ARGUMENT_SMTP_HOST); + $smtpPort = $input->getOption(self::ARGUMENT_SMTP_PORT); + $smtpSslMode = $input->getOption(self::ARGUMENT_SMTP_SSL_MODE); + $smtpUser = $input->getOption(self::ARGUMENT_SMTP_USER); + $smtpPassword = $input->getOption(self::ARGUMENT_SMTP_PASSWORD); + + $mailAccount = $this->mapper->findByUserIdAndEmail($userId, $email); + + if ($mailAccount) { + //INBOUND + if ($input->getOption(self::ARGUMENT_IMAP_HOST)) { + $mailAccount->setInboundHost($imapHost); + } + + if ($input->getOption(self::ARGUMENT_IMAP_PORT)) { + $mailAccount->setInboundPort((int) $imapPort); + } + + if ($input->getOption(self::ARGUMENT_IMAP_SSL_MODE)) { + $mailAccount->setInboundSslMode($imapSslMode); + } + + if ($input->getOption(self::ARGUMENT_IMAP_PASSWORD)) { + $mailAccount->setInboundPassword($this->crypto->encrypt($imapPassword)); + } + + if ($input->getOption(self::ARGUMENT_SMTP_USER)) { + $mailAccount->setInboundUser($imapUser); + } + + // OUTBOUND + + if ($input->getOption(self::ARGUMENT_SMTP_HOST)) { + $mailAccount->setOutboundHost($smtpHost); + } + + if ($input->getOption(self::ARGUMENT_SMTP_PORT)) { + $mailAccount->setOutboundPort((int) $smtpPort); + } + + if ($input->getOption(self::ARGUMENT_SMTP_SSL_MODE)) { + $mailAccount->setOutboundSslMode($smtpSslMode); + } + + if ($input->getOption(self::ARGUMENT_SMTP_PASSWORD)) { + $mailAccount->setOutboundPassword($this->crypto->encrypt($smtpPassword)); + } + + if ($input->getOption(self::ARGUMENT_SMTP_USER)) { + $mailAccount->setOutboundUser($smtpUser); + } + + $this->mapper->save($mailAccount); + + $output->writeln("<info>Account $email for user $userId succesfully updated </info>"); + return 1; + } else { + $output->writeln("<info>No Email Account $email found for user $userId </info>"); + } return 0; } |