webforms. Странное поведение хука

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

Аватар пользователя Никки Никки 3 декабря 2021 в 14:24

Всем привет!
Вот описание хука для работы модуля webform

<?php /**
 * Respond to the loading of Webform submissions.
 *
 * @param $submissions
 *   An array of Webform submissions that are being loaded, keyed by the
 *   submission ID. Modifications to the submissions are done by reference.
 */
function hook_webform_submission_load(&$submissions) {
  foreach (
$submissions as $sid => $submission) {
    
$submissions[$sid]->new_property 'foo';
  }
?>

пишу следующий код

<?php 
function mymodule_webform_submission_load(&$submissions) {
 
dpm ($submissions);
  } 
?>

Отправляю свою форму, хук срабатывает и dpm почему-то ДВАЖДЫ выводит массив. Почему дважды?

Эксперимент с выводом глобального массива $_POST['submitted'] внутри хука заканчивается тем, что сначала выводится массив с данными, а под ним сразу же сообщение об ошибке неизвестного ключа 'submitted'.

Попытка программно записать файл внутри хука file_save($file) приводит к ошибке Duplicat entry для поля uri таблицы file_managed. Очевидно, что файл пытается записаться ДВАЖДЫ.

Какая логика у этого хука?

Также вызывает вопросы пример из описания хука. Там предлагается перебор массива отправлений.
<?php foreach ($submissions as $sid => $submission?>
то есть допускается, что $sid (идентификатор конкретного отправления формы) может быть больше одного. Ну а как такое возможно, если хук, как я понимаю, вызывается после загрузки конкретной (одной) формы?