Выполнение произвольных сценариев при сохранении ноды

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

Аватар пользователя Dimedrius Dimedrius 25 сентября 2011 в 19:50

Уважаемые Друпалеры, каким образом можно реализовать выполнение неких сценариев при сохранении или обновлении содержания ноды? К примеру, через file_field загружается видеорилик, при нажатии кнопок сохранить или применить ffmpeg-php должен сохранить кадр из этого ролика.

Комментарии

Аватар пользователя Dimedrius Dimedrius 25 сентября 2011 в 22:05

Видимо я что-то не так понял. Можете указать на ошибку?

function hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  switch ($op) {
        case 'insert':
             if ($node->type == story) {
                $file = $node->field_video[0][filepath];
                $frame = 550;
                $max_width  = 550;
                $movie = new ffmpeg_movie($file);
                $image = $movie->getFrame($frame);
                $show_img = $image->toGDImage();
                $new_image = new ffmpeg_frame($show_img);
                $old_width = $new_image->getWidth();
                $old_heighgt = $new_image->getHeight();
                $mov_ratio = $old_width/$old_heighgt;
                if ($old_width > $max_width){
                    $new_width    = $max_width;
                }
                $new_height = $new_width / $mov_ratio;
                $new_image->resize($new_width, $new_height);
                $new_show_img = $new_image->toGDImage();
               
                $img = file_save_upload($new_show_img, $dest = '/sites/files/video/cover/', $replace = FILE_EXISTS_RENAME);
                [user=chmod]chmod[/user]($img, 0660);
                }
                break;

  }
}

Аватар пользователя niko niko 26 сентября 2011 в 2:18

'presave': Нода прошла проверку и вскоре будет сохранена. Модули могут использовать этот хук, чтобы внести изменения в ноду, прежде чем она сохранится в базу данных.