You are here

function node_gallery_api_create_item_from_file in Node Gallery 7

Create item from file. Form Plupload.

1 call to node_gallery_api_create_item_from_file()
node_gallery_api_json_create_item in ./node_gallery_api.pages.inc
Create item from JSON. For Plupload integration.

File

./node_gallery_api.pages.inc, line 747
Node Gallery module.

Code

function node_gallery_api_create_item_from_file($uri, $original_filename, $relationship_type_id, $ngid, $item_type) {
  global $user;
  $relationship_type = node_gallery_api_get_relationship_type(NULL, NULL, $relationship_type_id);
  $instance = field_info_instance('node', $relationship_type->filefield_name, $item_type);

  // Get file schema from field settings.
  $scheme = variable_get('file_default_scheme', 'public') . '://';
  $fields = field_info_fields();
  if (!empty($fields[$instance['field_name']]['settings']['uri_scheme'])) {
    $scheme = $fields[$instance['field_name']]['settings']['uri_scheme'] . '://';
  }
  if (!empty($instance['settings']['file_directory'])) {
    $destination_dir = $scheme . token_replace($instance['settings']['file_directory']);
    $destination_filename = $destination_dir . '/' . $original_filename;
  }
  else {
    $destination_filename = $scheme . $original_filename;
  }
  file_prepare_directory($destination_dir, FILE_CREATE_DIRECTORY);
  $destination = file_stream_wrapper_uri_normalize($destination_filename);
  $destination = file_unmanaged_move($uri, $destination, FILE_EXISTS_RENAME);
  $file = plupload_file_uri_to_object($destination);
  $file->display = 1;
  file_save($file);
  $item = new stdClass();
  $item->type = $item_type;
  $item->uid = $user->uid;
  $item->name = $user->name;
  $item->title = $original_filename;
  $item->{$relationship_type->filefield_name}[LANGUAGE_NONE][0] = (array) $file;
  $fieldname = node_gallery_api_get_item_field_name(NULL, NULL, $relationship_type->id);
  $item->{$fieldname}[LANGUAGE_NONE][0]['target_id'] = $ngid;

  // Get gallery published status and set item to be the same.
  $item->status = db_select('node', 'n')
    ->fields('n', array(
    'status',
  ))
    ->condition('n.nid', $ngid)
    ->execute()
    ->fetchField();
  $item->language = LANGUAGE_NONE;
  node_object_prepare($item);
  node_save($item);
  return $item;
}