first commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
<?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;
|
||||
Reference in New Issue
Block a user