You are here

function media_flickr_add_submit in Media: Flickr 7

Submission for media_flickr_add().

This will create a file object for the Flickr video.

File

includes/media_flickr.admin.inc, line 112
Administrative page callbacks for Media: Flickr.

Code

function media_flickr_add_submit($form, &$form_state) {
  $uri = media_flickr_media_parse($form_state['values']['url']);
  $defaults = array(
    'display' => TRUE,
  );

  // @TODO: This won't work for Flickr and many other streams.
  // copy($url, $destination);
  $file = file_uri_to_object($uri);
  file_save($file);
  if ($file) {
    $form_state['redirect'] = 'media/' . $file->fid . '/edit';
    field_attach_submit('media', $file, $form, $form_state);

    // Make a copy of the file object to use as the media object
    // (file is a field of media and the base table). This is weird.
    $media = clone $file;
    $file->file = array();
    $file->file[LANGUAGE_NONE] = array();
    $file->file[LANGUAGE_NONE][0] = (array) $file + $defaults;
    $file->is_new = TRUE;
    field_attach_insert('media', $file);
  }
  else {
    drupal_set_message(t('An error occurred and no file was saved.'), 'error');
  }
  $form_state['redirect'] = !empty($form_state['values']['redirect']) ? $form_state['values']['redirect'] : 'media/' . $file->fid . '/edit';
}