function _services_raw_node_attach_file in Services Client 7.2
Same name and namespace in other branches
- 7 services_raw/services_raw.inc \_services_raw_node_attach_file()
Attach file object to node filefield
Parameters
$nid: Node id
$field_name: Field name to be updated with attached file
$fid: File object id
Return value
array|mixed
1 string reference to '_services_raw_node_attach_file'
- _services_raw_services_resources in services_raw/
services_raw.inc - Provides API definition of provided services objects and operations.
File
- services_raw/
services_raw.inc, line 655 - Custom services definition and implementation of all callbacks.
Code
function _services_raw_node_attach_file($nid, $field_name, $fid) {
// Check if uploaded file exists
if ($file = file_load($fid)) {
$file->display = 1;
$file->description = '';
$node = node_load($nid);
if (!isset($node->{$field_name})) {
// Do not allow to update not existing node field
services_error(t("The field %field_name doesn't exist", array(
'%field_name' => $field_name,
)), 403);
}
$node->revision = '';
$node->{$field_name}['und'][] = (array) $file;
node_save($node);
}
else {
return services_error(t("The file fid %fid could not be attached, because it doesn't exist.", array(
'%fid' => $fid,
)), 406);
}
// Only add the URI for servers that support it.
$result = array(
'nid' => $node->nid,
);
if ($uri = services_resource_uri(array(
'node',
$node->nid,
))) {
$result['uri'] = $uri;
}
return $result;
}