mailboxMapper = $mailboxMapper; $this->mailAccountMapper = $mailAccountMapper; $this->mailManager = $mailManager; $this->migration = $migration; $this->logger = $logger; $this->imapClientFactory = $imapClientFactory; } /** * @param array $argument * * @return void */ #[\Override] public function run($argument) { $mailboxId = (int)$argument['mailboxId']; try { $mailbox = $this->mailboxMapper->findById($mailboxId); } catch (DoesNotExistException $e) { $this->logger->debug('Could not find mailbox <' . $mailboxId . '>'); return; } $accountId = $mailbox->getAccountId(); try { $mailAccount = $this->mailAccountMapper->findById($accountId); } catch (DoesNotExistException $e) { $this->logger->debug('Could not find account <' . $accountId . '>'); return; } $account = new Account($mailAccount); $client = $this->imapClientFactory->getClient($account); try { if ($this->mailManager->isPermflagsEnabled($client, $account, $mailbox->getName()) === false) { $this->logger->debug('Permflags not enabled for <' . $accountId . '>'); return; } try { $this->migration->migrateImportantOnImap($client, $account, $mailbox); } catch (ServiceException $e) { $this->logger->debug('Could not flag messages on IMAP for mailbox <' . $mailboxId . '>.'); } try { $this->migration->migrateImportantFromDb($client, $account, $mailbox); } catch (ServiceException $e) { $this->logger->debug('Could not flag messages from DB on IMAP for mailbox <' . $mailboxId . '>.'); } } finally { $client->logout(); } } }