Привет всем! Пришлось столкнуться с друпалом 5.х, пробую написать для него модуль, но как написано в книге, почему-то не работает. Подскажите пожалуйста, в чем ошибка.
Задание такое:
- Модератор добавляет пользователя вручную, при этом создается отдельная папка для данного пользователя и данные о расположении этой папки заносятся в отдельную таблицу.
- При входе пользователя нужно проверить, не присвоена ли ему эта отдельная папка. Если да, то добавить к объекту $user, дополнительные данные(путь к папке).
Набросал свой модуль, в котором пытаюсь хукнуть функцию $user:
<?php
function addlinkpatch_user($op, &$edit, &$user) {
global $user;
if ($op == 'login') {
$sql=db_query("SELECT ....
if ($sql!=""){$patchuser=array('uspatch'=>t('$sql')); $user_save($user,$patchuser);}
else {$patchuser=array('uspatch'=>t('nopatch')); $user_save($user,$patchuser);}
# и так еще пробую
if ($sql!=""){$user->roles['addlinkpatch']=$sql;}else {$user->roles['addlinkpatch']="nopatch";}
}
}?>
Может кто сталкивался с таким вопросом, подскажите, что делаю не так?
Комментарии
Надо $op == "load" или $op == "view" использовать, а не login.
И global $user; здесь не нужен.
Спасибо! Заработало.
Только видимо нужно искать какой другой способ, т.к. локально все работает, а вылил на хостинг, выдает Fatal error: Maximum execution time of 30 seconds exceeded
Возник еще вопрос в этом направлении...
При удалении пользователя, нужно удалить о нем дополнительную информацию в других таблицах.
Пробую сделать так:
<?php
function deluserpatch_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'delete') {
db_query('DELETE FROM {usersinfo_r_file} WHERE usid = d%', 555);
db_query('DELETE FROM {usersinfo} WHERE klienpatch = d%', 555);
}
}?>
и так:
<?php
function deluserpatch_user_delete($edit, $uid) {
$account = user_load(array('uid' => $uid));
db_query('DELETE FROM {usersinfo_r_file} WHERE usid = d%', $uid);
db_query('DELETE FROM {usersinfo} WHERE klienpatch = d%', $uid);
}?>
но данные хуки не срабатывают, подскажите, что не так.