С помощью функции drupal_execute() можно засабмитить любую форму, которая создана с помощью Form API. Преимущества использования drupal_execute над прямыми вызовами API функций вроде node_save(), user_save() или даже user_register_submit() это:
Данные переданные во втором параметре проходят валидацию, и в случае ошибки, на экран выводятся соответствующие сообщения.
Выполняются все дополнительные #submit и #validate функции, навешанные модулями с помощью hook_form_alter() или hook_form_FORM_ID_alter().
Т.е. используя drupal_execute() можно заставить Drupal думать, что форма была отправлена пользователем с помощью браузера.
Пример программной отправки формы user_register, которая регистрирует нового пользователя:
$form_state['values'] = array(
'name' => 'new-user',
'mail' => 'email@gmail.com',
'pass' => 'password',
'op' => t('Create new account'),
);
drupal_execute('user_register', $form_state);
Пример создания комментария с помощью drupal_execute().
Подробнее на
api.drupal.ru.
Для Drupal 7 есть аналогичная функция — drupal_form_submit().
Написанное актуально для
Drupal 6.x