56 lines
2.1 KiB
PHP
56 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace KupShop\UserBundle\Resources\script;
|
|
|
|
use KupShop\AdminBundle\Util\Script\Script;
|
|
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
|
|
use KupShop\KupShopBundle\Util\Mail\EmailCheck;
|
|
use Query\Operator;
|
|
|
|
class CheckUsersEmailsScript extends Script
|
|
{
|
|
protected static $name = 'Check Users Emails (isEmailDomainValid)';
|
|
protected static $defaultParameters = [
|
|
'limit' => 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;
|