Корректное удаление пользователей, как правильно?

Добрый день.
Нужно почистить список пользователей на сайте, отобранные по определенным критериям.
Делаю через консоль, через получение getCollections и вызова remove() на нужных мне пользователей.
Пользователи со списка удаляются, однако консоль выдает и много ошибок, суть которых мне не совсем ясна.
Отсюда и вопрос — это нормальный подход удаления пользователей?
$user = $modx->getObject('modUser',1746);
$user->remove();

Получаемые ошибки
[2020-01-22 12:06:47] (ERROR @ /home/c/ct81850/site/public_html/core/xpdo/xpdo.class.php : 1320)

Could not get table class for class: modAccess

[2020-01-22 12:06:47] (ERROR @ /home/c/ct81850/site/public_html/core/xpdo/xpdo.class.php : 1289)

Could not get table name for class: modAccess

[2020-01-22 12:06:47] (ERROR @ /home/c/ct81850/site/public_html/core/xpdo/om/xpdoobject.class.php : 240)

Error 42000 executing statement: 
Array
(
    [0] => 42000
    [1] => 1064
    [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS `modAccess` WHERE `modAccess`.`principal` = 1746' at line 1
)

[2020-01-22 12:06:47] (INFO @ /home/c/ct81850/site/public_html/core/xpdo/om/xpdoobject.class.php : 1714)

Removed modUserProfile instance with primary key 1739

[2020-01-22 12:06:47] (INFO @ /home/c/ct81850/site/public_html/core/xpdo/om/xpdoobject.class.php : 1714)

Removed modUserSetting instance with primary key Array
(
    [0] => 1746
    [1] => cultureKey
)

[2020-01-22 12:06:47] (INFO @ /home/c/ct81850/site/public_html/core/xpdo/om/xpdoobject.class.php : 1714)

Removed TicketAuthor instance with primary key 1746

[2020-01-22 12:06:47] (INFO @ /home/c/ct81850/site/public_html/core/xpdo/om/xpdoobject.class.php : 1714)

Removed modUser instance with primary key 1746
Александр Мельник
22 января 2020, 12:09
modx.pro
935
0

Комментарии: 4

Павел Романов
22 января 2020, 12:52
0
Попробуйте через процессор (только бэкап на всяк случай сделайте)):
<?php
$data = array(
    'id' => $id // ID юзера
);    
$response = $modx->runProcessor('/security/user/delete', $data);
if ($response->isError()) {
    $modx->log(modX::LOG_LEVEL_ERROR, 'login error. Username: '.$username.', Message: '.$response->getMessage());
}
    Александр Мельник
    22 января 2020, 12:57
    0
    спасибо, попробую.
      Александр Мельник
      28 января 2020, 17:50
      0
      Только сейчас дошли руки попробовать. Нет, не вышло. Ошибки ну просто один в один, хоть через процессор, хоть напрямую.
        Артем
        28 января 2020, 19:03
        0
        Ответ касаемо modAccess гуглится буквально за 30 секунд:
        opengeek Reply #2, 7 years, 1 month ago
        It's a known bug and is harmless. modAccess is an abstract class which all the modAccess tables use and it does not have a table itself.

        Остальное — не ошибки, а уведомление о том, что объект удален, о чем говорит константа LOG_LEVEL_INFO.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4