Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe0abf87 authored by Akhil's avatar Akhil 🙂
Browse files

(fix) query preferences table directly to get users with empty recovery emails

parent 30b26677
Loading
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -68,6 +70,7 @@ class RecoveryWarningNotificationCommand extends Command {
		$this->urlGenerator = $urlGenerator;
		$this->timeFactory = $timeFactory;
		$this->notificationService = $notificationService;
		$this->configMapper = $configMapper;
		
		// Load configuration
		$this->loadConfiguration();
@@ -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;
+15 −0
Original line number Diff line number Diff line
@@ -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();