Добавить дополнительную информацию в объект $user

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

Аватар пользователя mnigma mnigma 21 сентября 2009 в 9:08

Привет всем! Пришлось столкнуться с друпалом 5.х, пробую написать для него модуль, но как написано в книге, почему-то не работает. Подскажите пожалуйста, в чем ошибка.
Задание такое:

  1. Модератор добавляет пользователя вручную, при этом создается отдельная папка для данного пользователя и данные о расположении этой папки заносятся в отдельную таблицу.
  2. При входе пользователя нужно проверить, не присвоена ли ему эта отдельная папка. Если да, то добавить к объекту $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";}
  }
}?>

Может кто сталкивался с таким вопросом, подскажите, что делаю не так?

Комментарии

Аватар пользователя mnigma mnigma 21 сентября 2009 в 13:25

Спасибо! Заработало.
Только видимо нужно искать какой другой способ, т.к. локально все работает, а вылил на хостинг, выдает Fatal error: Maximum execution time of 30 seconds exceeded

Аватар пользователя mnigma mnigma 23 сентября 2009 в 15:44

Возник еще вопрос в этом направлении...
При удалении пользователя, нужно удалить о нем дополнительную информацию в других таблицах.
Пробую сделать так:

<?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);
}
?>

но данные хуки не срабатывают, подскажите, что не так.