[prev in list] [next in list] [prev in thread] [next in thread]
List: bricolage-commits
Subject: [6605] Added ANY() support to Bric::Util::MediaType.
From: theory () bricolage ! cc
Date: 2005-08-27 16:44:57
Message-ID: 20050827164457.19975.qmail () x1 ! develooper ! com
[Download RAW message or body]
Revision: 6605
Author: theory
Date: 2005-08-27 09:44:56 -0700 (Sat, 27 Aug 2005)
ViewCVS: http://viewsvn.bricolage.cc/?rev=6605&view=rev
Log Message:
-----------
Added ANY() support to Bric::Util::MediaType.
Modified Paths:
--------------
bricolage/trunk/lib/Bric/Changes.pod
bricolage/trunk/lib/Bric/Util/MediaType.pm
bricolage/trunk/t/Bric/Util/MediaType/DevTest.pm
["r6605-theory.diff" (r6605-theory.diff)]
Modified: bricolage/trunk/lib/Bric/Changes.pod
===================================================================
--- bricolage/trunk/lib/Bric/Changes.pod 2005-08-27 16:32:46 UTC (rev 6604)
+++ bricolage/trunk/lib/Bric/Changes.pod 2005-08-27 16:44:56 UTC (rev 6605)
@@ -52,6 +52,8 @@
=item L<Bric::Util::Job|Bric::Util::Job>
+=item L<Bric::Util::MediaType|Bric::Util::MediaType>
+
=back
[David]
Modified: bricolage/trunk/lib/Bric/Util/MediaType.pm
===================================================================
--- bricolage/trunk/lib/Bric/Util/MediaType.pm 2005-08-27 16:32:46 UTC (rev 6604)
+++ bricolage/trunk/lib/Bric/Util/MediaType.pm 2005-08-27 16:44:56 UTC (rev 6605)
@@ -72,9 +72,12 @@
my @ecols = qw(id media_type__id extension);
my @SEL_PROPS = qw(id name description _active _exts grp_ids);
my @ord = qw(name description active);
-my %map = ( name => 'LOWER(a.name) LIKE ?',
- description => 'LOWER(a.description) LIKE ?',
- ext => => 'LOWER(e.extension) LIKE ?');
+my %map = (
+ id => 'a.id = ?',
+ name => 'LOWER(a.name) LIKE LOWER(?)',
+ description => 'LOWER(a.description) LIKE LOWER(?)',
+ ext => => 'LOWER(e.extension) LIKE LOWER(?)',
+);
my $key = '__MediaType__';
my ($meths, $cache);
@@ -225,22 +228,28 @@
=over 4
-=item *
+=item id
-description
+A media type ID. May use C<ANY> for a list of possible values.
-=item *
+=item name
-name
+A media type name. May use C<ANY> for a list of possible values.
-=item *
+=item description
-ext
+A media type description. May use C<ANY> for a list of possible values.
-=item *
+=item ext
-grp_id
+A media type file name extension. May use C<ANY> for a list of possible
+values.
+=item grp_id
+
+The ID for a Bric::Util::Grp object of which media types may be members. May
+use C<ANY> for a list of possible values.
+
=back
B<Throws:>
@@ -1213,21 +1222,25 @@
my @params;
while (my ($k, $v) = each %$params) {
- if ($k eq 'id' || $k eq 'active') {
+ if ($k eq 'active') {
# Simple numeric comparison.
$wheres .= " AND a.$k = ?";
- push @params, $v;
- } elsif ($k eq 'grp_id') {
+ push @params, $v ? 1 : 0;
+ }
+
+ elsif ($k eq 'grp_id') {
# Add in the group tables a second time and join to them.
- $tables .= ", member m2, media_type_member am2";
- $wheres .= " AND a.id = am2.object_id AND am2.member__id = m2.id" .
- " AND m2.active = '1' AND m2.grp__id = ?";
- push @params, $v;
- } else {
- # It's a varchar field.
- $wheres .= " AND $map{$k}";
- push @params, lc $v;
+ $tables .= ', member m2, media_type_member am2';
+ $wheres .= ' AND a.id = am2.object_id AND am2.member__id = m2.id'
+ . " AND m2.active = '1' AND "
+ . any_where $v, 'm2.grp__id = ?', \@params;
}
+
+ else {
+ # Use the mapping.
+ $wheres .= ' AND ' . any_where $v, $map{$k}, \@params
+ if $map{$k};
+ }
}
# Assemble and prepare the query.
Modified: bricolage/trunk/t/Bric/Util/MediaType/DevTest.pm
===================================================================
--- bricolage/trunk/t/Bric/Util/MediaType/DevTest.pm 2005-08-27 16:32:46 UTC (rev 6604)
+++ bricolage/trunk/t/Bric/Util/MediaType/DevTest.pm 2005-08-27 16:44:56 UTC (rev 6605)
@@ -29,12 +29,11 @@
my $self = shift;
# Look up by ID.
- ok( my $mt = $class->lookup({ id => 48 }),
- "Look up by name 'audio/midi'");
+ ok( my $mt = $class->lookup({ id => 48 }), "Look up by id 48");
# Check basic properties.
is( $mt->get_name, 'audio/midi', "Check name is 'audio/midi''" );
- ok( ! defined $mt->get_description, "No description" );
+ is( $mt->get_description, undef, "No description" );
# Make sure we got three extensions.
ok( my @exts = $mt->get_exts, "Get extensions" );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic