[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