Повторная обработка прикрепленных изображений в drupal 7 - PullRequest
3 голосов
/ 01 февраля 2011

Я пытаюсь импортировать узлы из моего форума в drupal 7. Не навалом, а один за другим, чтобы можно было создавать новостные посты и ссылаться обратно на форум.Самое главное, что я хочу перенести вложения изображений ...

Пока, используя пример кода здесь http://drupal.org/node/889058#comment-3709802 вещи в основном работают: узлы создаются, но изображения нене проходить проверку или обработку.

Я бы хотел, чтобы прикрепленные изображения были проверены на соответствие правилам, определенным в типе контента.в частности стиль, связанный с моим полем изображения, который изменяет их размер до 600x600.

Так что вместо простого создания узлов программно с моей собственной формой, я решил изменить"новый" узелиспользование hook_node_prepare и использование существующей формы для создания нового контента (на основе переданных в аргументах url).Это работает очень хорошо, и форма создания представлена ​​предварительно заполненной всеми моими данными.включая изображение!очень мило.

Я ожидал, что тогда смогу нажать preview или save , и все проверки и изменения размеров произойдут с моим изображением, но вместо этого я получу ошибку:

"The file used in the Image field may not be referenced."

Причина этого в том, что в моем файле нет записи в таблице file_usage .. * le sigh *

Итак, как мне получить всю хорошую проверку?и обработка, которая происходит, когда я вручную выбираю файл для загрузки?как изменение размера, запись в таблице file_usage.

Функция загрузки ajax делает это, но я не могу найти код, который вызывается, чтобы сделать это где-нибудь в API.

Какой файлфункции загрузки / проверки выдает Drupal, чего я не делаю?

У кого-нибудь есть опыт работы с файлом / API для Drupal 7, кто может мне помочь?

1 Ответ

1 голос
/ 02 марта 2011

Для получения записи об использовании (по сути, извлечения файла для определенного модуля, чтобы он не удалялся во время использования), найдите функцию Drupal 'file_usage_add ()'

Для проверки входящих изображений я получил этот пример из user.module (если вы знакомы с PHP, вы всегда можете взглянуть на ядро, чтобы увидеть, как что-то делается «Drupal»):

function user_validate_picture(&$form, &$form_state) {
  // If required, validate the uploaded picture.
  $validators = array(
    'file_validate_is_image' => array(),
    'file_validate_image_resolution' => array(variable_get('user_picture_dimensions', '85x85')),
    'file_validate_size' => array(variable_get('user_picture_file_size', '30') * 1024),
  );

  // Save the file as a temporary file.
  $file = file_save_upload('picture_upload', $validators);
  if ($file === FALSE) {
    form_set_error('picture_upload', t("Failed to upload the picture image; the %directory directory doesn't exist or is not writable.", array('%directory' => variable_get('user_picture_path', 'pictures'))));
  }
  elseif ($file !== NULL) {
    $form_state['values']['picture_upload'] = $file;
  }
}

Эта функция добавляется в массив $ form ['# validate'] следующим образом:

$ form ['# validate'] [] = 'user_validate_picture'

...