Loading lib/Command/RecoveryWarningNotificationCommand.php +5 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ use OCA\EmailRecovery\Service\NotificationService; use OCA\EmailRecovery\Service\RecoveryEmailService; use OCP\AppFramework\Utility\ITimeFactory; use OCP\IConfig; use OCA\EmailRecovery\Db\ConfigMapper; use OCP\IUser; use OCP\Util; use OCP\IGroupManager; Loading Loading @@ -58,7 +59,8 @@ class RecoveryWarningNotificationCommand extends Command { NotificationService $notificationService, private IGroupManager $groupManager, private IConfig $config, private Util $util private Util $util, private ConfigMapper $configMapper ) { parent::__construct(); $this->userManager = $userManager; Loading @@ -68,6 +70,7 @@ class RecoveryWarningNotificationCommand extends Command { $this->urlGenerator = $urlGenerator; $this->timeFactory = $timeFactory; $this->notificationService = $notificationService; $this->configMapper = $configMapper; // Load configuration $this->loadConfiguration(); Loading Loading @@ -192,7 +195,7 @@ class RecoveryWarningNotificationCommand extends Command { private function identifyUnverifiedUsers(OutputInterface $output, bool $checkDisable = false, bool $checkDelete = false): void { $identificationStart = microtime(true); $users = $this->config->getUsersForUserValue(Application::APP_ID, 'recovery-email', ''); $users = $this->configMapper->getUsersByVerifiedRecoveryEmail(''); if (!is_array($users)) { $output->writeln('<error>Error: Expected array for recovery-email users, got ' . gettype($users) . '</error>'); return; Loading lib/Db/ConfigMapper.php +15 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,21 @@ class ConfigMapper { return $result->fetchAll(); } public function getUsersByVerifiedRecoveryEmail(string $value) : array { $qb = $this->connection->getQueryBuilder(); $qb->selectDistinct('userid') ->from('preferences') ->where($qb->expr()->eq('appid', $qb->createNamedParameter($this->appName))) ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('recovery-email'))) ->andWhere($qb->expr()->eq($qb->func()->lower('configvalue'), $qb->createNamedParameter(strtolower($value)))); $result = $qb->executeQuery(); $users = $result->fetchAll(FetchMode::COLUMN); return $users; } public function searchUsers(string $search, int $limit = 10, int $offset = 0) : array { $search = '%' . strtolower($search) . '%'; $qb = $this->connection->getQueryBuilder(); Loading Loading
lib/Command/RecoveryWarningNotificationCommand.php +5 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ use OCA\EmailRecovery\Service\NotificationService; use OCA\EmailRecovery\Service\RecoveryEmailService; use OCP\AppFramework\Utility\ITimeFactory; use OCP\IConfig; use OCA\EmailRecovery\Db\ConfigMapper; use OCP\IUser; use OCP\Util; use OCP\IGroupManager; Loading Loading @@ -58,7 +59,8 @@ class RecoveryWarningNotificationCommand extends Command { NotificationService $notificationService, private IGroupManager $groupManager, private IConfig $config, private Util $util private Util $util, private ConfigMapper $configMapper ) { parent::__construct(); $this->userManager = $userManager; Loading @@ -68,6 +70,7 @@ class RecoveryWarningNotificationCommand extends Command { $this->urlGenerator = $urlGenerator; $this->timeFactory = $timeFactory; $this->notificationService = $notificationService; $this->configMapper = $configMapper; // Load configuration $this->loadConfiguration(); Loading Loading @@ -192,7 +195,7 @@ class RecoveryWarningNotificationCommand extends Command { private function identifyUnverifiedUsers(OutputInterface $output, bool $checkDisable = false, bool $checkDelete = false): void { $identificationStart = microtime(true); $users = $this->config->getUsersForUserValue(Application::APP_ID, 'recovery-email', ''); $users = $this->configMapper->getUsersByVerifiedRecoveryEmail(''); if (!is_array($users)) { $output->writeln('<error>Error: Expected array for recovery-email users, got ' . gettype($users) . '</error>'); return; Loading
lib/Db/ConfigMapper.php +15 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,21 @@ class ConfigMapper { return $result->fetchAll(); } public function getUsersByVerifiedRecoveryEmail(string $value) : array { $qb = $this->connection->getQueryBuilder(); $qb->selectDistinct('userid') ->from('preferences') ->where($qb->expr()->eq('appid', $qb->createNamedParameter($this->appName))) ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('recovery-email'))) ->andWhere($qb->expr()->eq($qb->func()->lower('configvalue'), $qb->createNamedParameter(strtolower($value)))); $result = $qb->executeQuery(); $users = $result->fetchAll(FetchMode::COLUMN); return $users; } public function searchUsers(string $search, int $limit = 10, int $offset = 0) : array { $search = '%' . strtolower($search) . '%'; $qb = $this->connection->getQueryBuilder(); Loading