Андреас,
Была та же самая проблема.
Использование drupal_execute()
, как описано здесь, решило проблему немедленно:
// Save the node, updated or new
// Get the node object as an array the node_form can use
$values = (array)$node;
// Save the node (this is like pushing the submit button on the node edit form)
drupal_execute('abc_node_form', $values, $node);
Источник: http://www.drupalisms.com/gregory-go/blog/use-drupalexecute-instead-of-nodesave-to-save-a-node-programmatically
Но справедливое предупреждение: в первые несколько раундов он работал как чудо, но теперь я получаю тонны ошибок типа:
warning: call_user_func_array() [function.call-user-func-array]:
First argument is expected to be a valid callback, 'node_form' was given in ...
Не вижу, что изменилось.Все, что я сделал, это позвонил на страницу, которая несколько раз делала сохранение, чтобы проверить ее.
И окончательное (надеюсь!) Редактирование этого ответа.Кажется, что необходимо включить файл node.module, который содержит node_form, поэтому добавление этого:
module_load_include('', 'node', 'node.pages.inc');
в вашем коде (как в hook_init()
) сделает свое дело.
Работалздесь, и теперь мои узлы сохраняются с неповрежденными изображениями.