1000, 'offset' => 0, 'delete_users' => false, ]; protected function run(array $arguments) { /** @var EmailCheck $emailCheck */ $emailCheck = ServiceContainer::getService(EmailCheck::class); $users = sqlQueryBuilder()->select('u.id, u.email, u.figure, u.get_news, COUNT(o.id) AS orders_count') ->from('users', 'u')->leftJoin('u', 'orders', 'o', 'o.id_user = u.id') ->groupBy('u.id')->orderBy('u.id') ->setFirstResult($arguments['offset'] ?? 0)->setMaxResults($arguments['limit'] ?? 1000) ->execute()->fetchAll(); $users = array_combine(array_column($users, 'email'), $users); $u = []; $delete_users = !empty($arguments['delete_users']); $deleted = 0; foreach ($users as $email => $user) { if (!empty($email) && !$emailCheck->isEmailDomainValid($email)) { if (empty($user['orders_count'])) { if ($delete_users) { $user['deleted'] = sqlQueryBuilder()->delete('users')->where(Operator::equals(['id' => $user['id']]))->execute(); $deleted += $user['deleted']; } } else { $user["can't delete"] = $user['orders_count'].' orders'; } $u[$email] = $user; } } $this->log('Not valid: '.count($u).' users of '.count($users).' selected'); if ($delete_users) { $this->log("delete_users: {$deleted}, can't delete: ".(count($u) - $deleted)); } $this->log(var_dump($u)); $this->log('Hotovo.'); } } return CheckUsersEmailsScript::class;