Подскажите событие при регистрации через 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.');
}
}
}
}
}
Комментарии: 2
Проблема не в событии, а в других местах.
1. Вот так не будет работать.
2. Но перед тем как получить ecThread — нужно загрузить схему, т.к. modx сам не загружает все классы. Для этого есть метод addPackage (либо getService), почитайте modx.pro/development/22496
1. Вот так не будет работать.
$modx->getObject('mod_ec_threads', array('name' => $userId));
метод getObject принимает не имя таблицы, а название объекта, в данном случае ecThread.2. Но перед тем как получить ecThread — нужно загрузить схему, т.к. modx сам не загружает все классы. Для этого есть метод addPackage (либо getService), почитайте modx.pro/development/22496
большое спасибо за подсказку!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.