? filefield-480754.patch Index: filefield_meta/filefield_meta.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield_meta/filefield_meta.info,v retrieving revision 1.6 diff -u -p -r1.6 filefield_meta.info --- filefield_meta/filefield_meta.info 1 Apr 2009 08:57:49 -0000 1.6 +++ filefield_meta/filefield_meta.info 25 Jun 2009 18:54:41 -0000 @@ -6,3 +6,10 @@ dependencies[] = getid3 package = CCK core = 6.x php = 5.0 + +; Information added by drupal.org packaging script on 2009-06-07 +version = "6.x-3.x-dev" +core = "6.x" +project = "filefield" +datestamp = "1244333315" + Index: filefield_meta/filefield_meta.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield_meta/filefield_meta.install,v retrieving revision 1.8 diff -u -p -r1.8 filefield_meta.install --- filefield_meta/filefield_meta.install 22 May 2009 21:14:52 -0000 1.8 +++ filefield_meta/filefield_meta.install 25 Jun 2009 18:54:42 -0000 @@ -87,7 +87,47 @@ function filefield_meta_schema() { ), 'primary key' => array('fid'), ); - + $schema['filefield_meta_audio'] = array( + 'description' => t('Extended data about audio files.'), + 'fields' => array( + 'fid' => array( + 'description' => 'The file id.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + // 'fid' => array( + // 'type' => 'int', + // 'unsigned' => TRUE, + // 'not null' => TRUE, + // 'default' => 0, + ), + 'tag' => array( + 'type' => 'varchar', + 'length' => 45, + 'not null' => TRUE, + 'default' => '', + ), + 'value' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + ), + 'clean' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + ), + ), + //'primary key' => array('vid', 'tag', 'value'), + 'primary key' => array('fid', 'tag', 'value'), + 'indexes' => array( + 'filefield_meta_audio' => array('clean'), + ), + ); + return $schema; } @@ -129,4 +169,4 @@ function filefield_meta_update_1() { 'default' => '', )); return $ret; -} \ No newline at end of file +} Index: filefield_meta/filefield_meta.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield_meta/filefield_meta.module,v retrieving revision 1.14 diff -u -p -r1.14 filefield_meta.module --- filefield_meta/filefield_meta.module 20 Apr 2009 22:29:24 -0000 1.14 +++ filefield_meta/filefield_meta.module 25 Jun 2009 18:54:42 -0000 @@ -50,6 +50,19 @@ function filefield_meta_file_insert(&$fi filefield_meta($file); $record = array_merge(array('fid' => $file->fid), $file->data); drupal_write_record('filefield_meta', $record); + //$record = array_merge(array('fid' => $file->fid), $file->audio_data) ; + //drupal_write_record('filefield_meta_audio', $record) ; + // Remove any existing metadata. + db_query("DELETE FROM {filefield_meta_audio} WHERE fid=%d", $file->fid); + + // Save the new tags. + $allowed_tags = audio_get_tags_allowed(); + foreach ($file->data['tags'] as $tag => $value) { + if (in_array($tag, $allowed_tags) && $value) { + $metadata = array('fid' => $file->fid, 'tag' => $tag, 'value' => $value, 'clean' => audio_clean_tag($value)); + drupal_write_record('filefield_meta_audio', $metadata); + } + } } } @@ -68,6 +81,7 @@ function filefield_meta_file_update(&$fi */ function filefield_meta_file_delete($file) { db_query('DELETE FROM {filefield_meta} WHERE fid = %d', $file->fid); + db_query('DELETE FROM {filefield_meta_audio} WHERE fid = %d', $file->fid); } /** @@ -103,8 +117,32 @@ function filefield_meta(&$file) { $file->data['audio_bitrate'] = isset($info['audio']['bitrate']) ? $info['audio']['bitrate'] : NULL; //e.g. 64000 $file->data['audio_bitrate_mode'] = isset($info['audio']['bitrate_mode']) ? $info['audio']['bitrate_mode'] : NULL; //e.g. cbr } + + // Read the id3v1 and then id3v2 + foreach (array('id3v1', 'id3v2') as $format ) { + if (isset($info['tags'][$format])) { + foreach ( (array) $info['tags'][$format] as $key => $value ) { + $ret['tags'][$key] = trim(array_pop($value)) ; + } + } + } + + $file->data['tags'] = $ret['tags'] ; + // warnings + if (!empty($info['warning']) && variable_get('audio_getid3_show_warnings', FALSE)) { + $warning = t('While reading the ID3 tags, the following warnings were encountered:'); + $warning .= '