Drupal hook_user остановить выполнение - PullRequest
3 голосов
/ 07 июня 2010

Мне нужно использовать «hook_user» в Drupal 6 для обновления стороннего API всякий раз, когда пользователь обновляет свой профиль.

Поэтому я использую операцию «обновления».Проблема, с которой я сталкиваюсь, заключается в том, что я просто не вижу, как остановить выполнение, если обновление стороннего API завершается неудачно.

Т.е. пользователь обновляет свое имя пользователя, но в случае сбоя API не позволяет Drupal обновить локальную запись.

function myhooks_user($op, &$edit, &$account, $category) {

    switch ( $op )
    {

        case 'update':

            if ( FALSE === updateAPI($data) )
            {
                drupal_set_message("Cannot update user information", "error", false);

                return false; 
            }

            break;
    }
}

В настоящий момент возвращаемое значение false не останавливает выполнение.

1 Ответ

2 голосов
/ 07 июня 2010

Нет способа остановить выполнение.

Вы должны быть в состоянии перезаписать $edit тем, что находится в БД.Таким образом, не будет никаких изменений.Я не пробовал это, но это должно работать просто отлично.

Почему вы все равно хотите это сделать?Вы можете просто добавить строку в базу данных и обновить профиль позже с помощью cron, чтобы избежать разочарования пользователей, которым нужно делать одно и то же редактирование снова и снова.

...