Подскажите событие при регистрации через Login

Здравствуйте! Есть необходимость при регистрации пользователя вносить о нем данные в еще одну таблицу базы данных. Регистрация через Login, вставлять данные нужно в таблицу компонента EasyComm Не понимаю, к какому событию привязывать плагин. В таком виде плагин не срабатывает, никакой записи не создается и вообще при регистрации выдается 500 ошибка. Заранее спасибо за любые подсказки. Вот код плагина:

if ($modx->event->name == 'OnUserSave') {
    if ($user && $mode == 'new') {
        $profile = $user->getOne('Profile');
        if ($profile) {
            $userId = $profile->get('internalKey');

            $existingRecord = $modx->getObject('mod_ec_threads', array('name' => $userId));

            if (!$existingRecord) {
                $sql = "mod_ec_threads (name, resource, title, message_last, message_last_date, count, votes, rating_simple, rating_wilson, properties) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

                $stmt = $modx->getConnection()->prepare($sql);

                if ($stmt) {
                    $votes = json_encode(['rating' => ["1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0]]);
                    $stmt->execute([
                        $userId,
                        0, 
                        '', 
                        0, 
                        null, 
                        0, 
                        $votes, 
                        0.000000,
                        0.000000,
                        null
                    ]);
                } else {
                    $modx->log(modX::LOG_LEVEL_ERROR, 'Failed to prepare SQL statement for inserting data.');
                }
            }
        }
    }
}
Андрей
3 часа назад
modx.pro
10
0

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

Наумов Алексей
2 часа назад
+1
Проблема не в событии, а в других местах.

1. Вот так не будет работать.
$modx->getObject('mod_ec_threads', array('name' => $userId));
метод getObject принимает не имя таблицы, а название объекта, в данном случае ecThread.

2. Но перед тем как получить ecThread — нужно загрузить схему, т.к. modx сам не загружает все классы. Для этого есть метод addPackage (либо getService), почитайте modx.pro/development/22496
    Андрей
    2 часа назад
    0
    большое спасибо за подсказку!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2