--- filefield\filefield.module Sun Mar 29 15:30:17 2009 +++ filefield\filefield.module Mon Mar 30 15:04:18 2009 @@ -745,3 +745,70 @@ $file->field = $field; return array(); } + +/** +* Get all filefield files connected to a node id. +* @param $nid +* The Node ID. +* @param $field_name +* CCK field name. +* +* Notes +* Does not return imagecache child files, only the base file. +*/ +function filefield_node_files($nid = NULL, $field_name = NULL) +{ + $fields_db_info = array(); + $results = array(); + $files = array(); + + //get cck info + if (is_null($field_name)) { + foreach (content_fields() as $field) { + if ($field['type'] == 'image' || $field['type'] == 'filefield') { + $db_info = content_database_info($field); + $fields_db_info[] = array('COLUMN' => $db_info['columns']['fid']['column'], 'TABLE' => $db_info['table']); + } + } + } + else { + $field = content_fields($field_name); + if ($field['type'] == 'image' || $field['type'] == 'filefield') { + $db_info = content_database_info($field); + $fields_db_info[] = array('COLUMN' => $db_info['columns']['fid']['column'], 'TABLE' => $db_info['table']); + } + } + + //get rows + if (is_null($nid)) { + foreach($fields_db_info as $db_info) { + $sql = "SELECT * FROM files INNER JOIN " . $db_info['TABLE'] . " ON files.fid=" . $db_info['TABLE'] . "." . $db_info['COLUMN']; + $results[] = db_query($sql); + } + } + else { + foreach($fields_db_info as $db_info) { + $sql = "SELECT * FROM files INNER JOIN " . $db_info['TABLE'] . " ON files.fid=" . $db_info['TABLE'] . "." . $db_info['COLUMN'] . " WHERE nid = '%s'"; + $results[] = db_query($sql, array($nid)); + } + } + + //build files array + foreach($results as $result) { + while ($row = db_fetch_array($result)) { + $files[] = array( + 'fid' => $row['fid'], + 'uid' => $row['uid'], + 'filename' => $row['filename'], + 'filepath' => $row['filepath'], + 'filemime' => $row['filemime'], + 'filesize' => $row['filesize'], + 'status' => $row['status'], + 'timestamp' => $row['timestamp'], + 'vid' => $row['vid'], + 'nid' => $row['nid'], + ); + } + } + return $files; +}