diff -u -r1.6 field_file.inc
--- field_file.inc 2 May 2004 17:57:45 -0000 1.6
+++ field_file.inc 10 Jun 2004 21:20:24 -0000
@@ -17,11 +17,27 @@
return "flexinode_". $field->field_id .".textual_data";
}
+// we want qualify by nid so that muliple nodes with the same attached file don't conflict.
+// for now we don't worry about multiple fields of the same node having the same attached file name.
+// we also prepend the node type so that the directory structure is clearer.
+function _flexinode_field_file_dest($node, $filename) {
+ $dir = $node->type;
+ file_create_directory($dir);
+ $dir .= '/' . $node->nid;
+ file_create_directory($dir);
+ $dest = $dir . '/' . $tempfile->name;
+ return $dest;
+}
+
function flexinode_field_file_insert($field, $node) {
$fieldname = "flexinode_". $field->field_id;
- $node->$fieldname = file_save_upload($node->$fieldname, $node->$fieldname->name);
- $serialized = is_object($node->$fieldname) ? serialize($node->$fieldname) : '';
- db_query("INSERT INTO {flexinode_data} (nid, field_id, textual_data, serialized_data) VALUES (%d, %d, '%s', '%s')", $node->nid, $field->field_id, $node->$fieldname->name, $serialized);
+ $tempfile = $node->$fieldname;
+ $dest = _flexinode_field_file_dest($node, $tempfile->name);
+ //print("flexinode_field_file_insert on $node->nid calling file_save_upload($tempfile,$dest)\n");
+ $file = $node->$fieldname = file_save_upload($tempfile, $dest);
+ //print("flexinode_field_file_insert saved to $file->name\n");
+ $serialized = is_object($file) ? serialize($file) : '';
+ db_query("INSERT INTO {flexinode_data} (nid, field_id, textual_data, serialized_data) VALUES (%d, %d, '%s', '%s')", $node->nid, $field->field_id, $file->name, $serialized);
}
function flexinode_field_file_delete($field, $node, $unconditional = 0) {
@@ -35,9 +51,16 @@
function flexinode_field_file_validate($field, $node) {
$fieldname = "flexinode_". $field->field_id;
- if ($file = file_save_upload($fieldname)) {
+ // sigh, file_save_upload returns 0 both if there was no file, or there was but it had an error.
+ drupal_get_last_error(1);
+ $file = file_save_upload($fieldname);
+ $last_error = drupal_get_last_error();
+ if ($file) {
return array('value' => $file);
}
+ else if ($last_error) {
+ return array('value' => $file, 'error' => $last_error);
+ }
else if (empty($node->$fieldname)) {
return array('value' => unserialize($node->{$fieldname ."_old"}));
}
@@ -45,8 +68,9 @@
function flexinode_field_file_format($field, $node, $brief = 0) {
$fieldname = "flexinode_". $field->field_id;
- $file = is_object($node->$fieldname) ? $node->$fieldname : unserialize($node->$fieldname);
-
+ $val = $node->$fieldname;
+ $file = is_object($val) ? $val : unserialize($val);
+//print("flexinode_field_file_format(fieldname=$fieldname,file=$file,val=$val)
\n");
if ($file) {
return ''. check_output($file->name) .' ('. format_size($file->size) .')';
}
@@ -83,4 +107,4 @@
/** @} End of addtogroup themeable */
-?>
\ No newline at end of file
+?>