--- filefield\filefield.module Sun Mar 29 15:30:17 2009 +++ filefield\filefield.module Sun Mar 29 23:47:45 2009 @@ -745,3 +745,77 @@ $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) +{ + $fids = array(); + $files = array(); + $fields_db_info = 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('SELECT' => $db_info['columns']['fid']['column'], 'FROM' => $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('SELECT' => $db_info['columns']['fid']['column'], 'FROM' => $db_info['table']); + } + } + + //get file id's + if (is_null($nid)) { + foreach($fields_db_info as $db_info) { + $sql = "SELECT " . $db_info['SELECT'] . " FROM " . $db_info['FROM']; + $result = db_query($sql); + while ($fileid_row = db_fetch_array($result)) { + $fids[] = array('fid' => $fileid_row[$db_info['SELECT']]); + } + } + } + else { + foreach($fields_db_info as $db_info) { + $sql = "SELECT " . $db_info['SELECT'] . " FROM " . $db_info['FROM'] . " WHERE nid = '%s'"; + $result = db_query($sql, array($nid)); + while ($fileid_row = db_fetch_array($result)) { + $fids[] = array('fid' => $fileid_row[$db_info['SELECT']]); + } + } + } + + //get info from files table + foreach ($fids as $fid) { + //get paths for file id + $sql = "SELECT * FROM files WHERE fid = '%s'"; + $result = db_query($sql, array($fid['fid'])); + while ($row = db_fetch_array($result)) { + $files[] = array( + 'fid' => $row['fid'], + 'uid' => $fid['uid'], + 'filename' => $row['filename'], + 'filepath' => $row['filepath'], + 'filesize' => $row['filesize'], + 'status' => $row['status'], + 'timestamp' => $row['timestamp'], + ); + } + } + return $files; +}