Uploads a file to a node.
function uploadNodeFile($file, $field_name, $nid_or_type, $new_revision = TRUE, $extras = array()) {
$langcode = Language::LANGCODE_NOT_SPECIFIED;
$edit = array(
"title" => $this
->randomName(),
'revision' => (string) (int) $new_revision,
);
if (is_numeric($nid_or_type)) {
$nid = $nid_or_type;
}
else {
// Add a new node.
$extras['type'] = $nid_or_type;
$node = $this
->drupalCreateNode($extras);
$nid = $node->nid;
// Save at least one revision to better simulate a real site.
$node
->setNewRevision();
$node
->save();
$node = node_load($nid, TRUE);
$this
->assertNotEqual($nid, $node->vid, t('Node revision exists.'));
}
// Attach a file to the node.
$field = field_info_field($field_name);
$name = 'files[' . $field_name . '_' . $langcode . '_0]';
if ($field['cardinality'] != 1) {
$name .= '[]';
}
$edit[$name] = drupal_realpath($file->uri);
$this
->drupalPost("node/{$nid}/edit", $edit, t('Save and keep published'));
return $nid;
}