Почему это не работает?

Главные вкладки

Аватар пользователя Alex_R Alex_R 25 февраля 2012 в 19:10

мультисайтинг на 2 сайта с модулем domain (т.е. БД общая).
таблица users_roles для каждого сайта своя для первого users_roles, для второго domain_2_users_roles
Цель присваивать на каждом сайте роль с rid = 4 новому пользователю сразу при создании учетной записи.

Создал свой модуль, назвал его startaddrole, в нем единственная функция, отрабатывающая хук user

<?php
function startaddrole_user($op, &$edit, &$account$category NULL){
  if (
$op=='insert'){
       
db_query'INSERT INTO users_roles (uid, rid) VALUES (%d, %d)',  $account->uid4);                                
       
db_query'INSERT INTO domain_2_users_roles (uid, rid) VALUES (%d, %d)'$account->uid4); 
   }
}
?>

Первый запрос к БД отрабатывает, а второй нет (без всяких сообщений об ошибках).

Для проверки заменил $op=='insert' на $op=='login' - стабильно и без всяких проблем отрабатывают оба запроса! Ничего не понимаю, уже всю голову сломал. Кто нибудь может объяснить почему так? И самое главное как сделать правильно?

Комментарии

Аватар пользователя Alex_R Alex_R 26 февраля 2012 в 0:08

orion76 wrote:
db_set_active()

Смысл? БД одна. И обращаюсь я уже напрямую к нужным таблицам в базе. И почему при повешении этой функции на вход существующего пользователя в систему, она работает, а при добавлении нового пользователя отказывается?

Аватар пользователя Alex_R Alex_R 26 февраля 2012 в 0:30

Поскольку когда эта функция повешена на операцию login всё работает, а когда на insert то отрабатывает только запрос к "чужой" таблице, решил посмотреть чем эти операции отличаются.
http://api.drupal.ru/api/function/hook_user/6
«'login': Пользователь логинится. »
«'insert': Создается учетная запись пользователя. Модуль должен сохранить свои дополнительные данные в объект пользователя в базе данных и установить сохраненные значения из массива $edit в NULL. »

Вот этого: «и установить сохраненные значения из массива $edit в NULL.» я не понял, что в моем случае надо в NULL установить и как??? Может кто нибудь это понятно объяснить? Что то мне кажется, что именно в этом проблема.