From 90c1ecdce1103c447109370c0a0235b5edd09224 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 7 May 2007 14:44:33 +0000 Subject: [PATCH] *Add new oldimage columns for mime/mediatype info and oi_deleted field. Make rebuild image populate these while updating oldimage. --- maintenance/archives/patch-oi_metadata.sql | 15 +++++++++++++++ maintenance/rebuildImages.php | 8 ++++++-- maintenance/tables.sql | 15 +++++++++++++++ maintenance/updaters.inc | 1 + 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 maintenance/archives/patch-oi_metadata.sql diff --git a/maintenance/archives/patch-oi_metadata.sql b/maintenance/archives/patch-oi_metadata.sql new file mode 100644 index 0000000000..a055d6763a --- /dev/null +++ b/maintenance/archives/patch-oi_metadata.sql @@ -0,0 +1,15 @@ +-- +-- patch-indexes.sql +-- +-- Add data to allow for direct reference to old images +-- They can be included into pages +-- + +ALTER TABLE /*$wgDBprefix*/oldimage + DROP INDEX oi_name, + ADD INDEX oi_name_timestamp (oi_name,oi_timestamp), + ADD oi_metadata mediumblob NOT NULL, + ADD oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, + ADD oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown", + ADD oi_minor_mime varchar(32) NOT NULL default "unknown", + ADD oi_deleted tinyint(1) unsigned NOT NULL default '0', \ No newline at end of file diff --git a/maintenance/rebuildImages.php b/maintenance/rebuildImages.php index 4c02dc9c3b..14a9578d31 100644 --- a/maintenance/rebuildImages.php +++ b/maintenance/rebuildImages.php @@ -144,7 +144,7 @@ class ImageBuilder extends FiveUpgrade { } function oldimageCallback( $row ) { - if( $row->oi_width ) { + if( $row->oi_width && $row->oi_media_type ) { return null; } @@ -153,7 +153,11 @@ class ImageBuilder extends FiveUpgrade { return array( 'oi_width' => $info['width' ], 'oi_height' => $info['height'], - 'oi_bits' => $info['bits' ] ); + 'oi_bits' => $info['bits' ], + 'oi_metadata' => '', // filled in on-demand + 'oi_media_type' => $info['media'], + 'oi_major_mime' => $info['major'], + 'oi_minor_mime' => $info['minor'] ); } function crawlMissing() { diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 5d8b548109..80a46299e1 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -715,6 +715,21 @@ CREATE TABLE /*$wgDBprefix*/oldimage ( oi_user int(5) unsigned NOT NULL default '0', oi_user_text varchar(255) binary NOT NULL, oi_timestamp char(14) binary NOT NULL default '', + + -- Extracted EXIF metadata stored as a serialized PHP array. + oi_metadata mediumblob NOT NULL, + -- Media type as defined by the MEDIATYPE_xxx constants + oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, + -- major part of a MIME media type as defined by IANA + -- see http://www.iana.org/assignments/media-types/ + oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown", + -- minor part of a MIME media type as defined by IANA + -- the minor parts are not required to adher to any standard + -- but should be consistent throughout the database + -- see http://www.iana.org/assignments/media-types/ + oi_minor_mime varchar(32) NOT NULL default "unknown", + + oi_deleted tinyint(1) unsigned NOT NULL default '0', INDEX oi_name (oi_name(10)) diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index 4707891dfe..bca43f16ef 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -76,6 +76,7 @@ $wgNewFields = array( array( 'archive', 'ar_len', 'patch-ar_len.sql' ), array( 'revision', 'rev_parent_id', 'patch-rev_parent_id.sql' ), array( 'page_restrictions', 'pr_id', 'patch-page_restrictions_sortkey.sql' ), + array( 'oldimage', 'oi_metadata', 'patch-oi_metadata.sql' ), ); function rename_table( $from, $to, $patch ) { -- 2.20.1