К сожалению многие программеры Друпал практикуют изменение и вставку данных в ДБ только в обработчиках формы, не выводя функционал данных в отдельные классы или функции. Возникла необходимость делать изменения данных, причем в итерации. Для этих целей я использую drupal_execute($form_id, $form_state). Например форма принимает параметры p1 & p2:
<?php
$form_state = array('p1' => 10, 'p2' = array(true, false));
drupal_execute($form_id, $form_state);
?>
и кажется все работает, правда предварительно пришлось включить необходимый admin.inc файл, потому что форма сама была имплементирована в админ файле, и все это мероприятие нужно для автоматизации администрирования. Задача развивается дальше, часть данных, которые передаются в $form_state берутся из csv файла, который предварительно аплоадится. Для этих целей я изобрел небольшую библиотеку классов, которой конфигурируется формат $form_state (имя поля, тип), библиотека принимает массив данных из csv (либо из массива), проводит валидацию этих данных, и для остальных полей необходимой формы предлагает ввести их пользователю вручную. Для этих целей библиотека классов умеет создавать самую примитивную форму. Таким образом, параметр p1 загружается из csv (например 30 значений поля p1), а поле p2 довводится пользователем, далее строится массив из 30-ти элементов, где каждым елементом массив является один конкретный form_state:
<?php
$form_state_array = array(
array('p1' => $csv_val0, 'p2' => $user_defined_p2),
array('p1' => $csv_val1, 'p2' => $user_defined_p2),?>