[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bricolage-commits
Subject:    [6608] Added ANY() support to Bric::Util::UserPref.
From:       theory () bricolage ! cc
Date:       2005-08-27 17:08:52
Message-ID: 20050827170852.25610.qmail () x1 ! develooper ! com
[Download RAW message or body]

Revision: 6608
Author:   theory
Date:     2005-08-27 10:08:50 -0700 (Sat, 27 Aug 2005)
ViewCVS:  http://viewsvn.bricolage.cc/?rev=6608&view=rev

Log Message:
-----------
Added ANY() support to Bric::Util::UserPref.

Modified Paths:
--------------
    bricolage/trunk/lib/Bric/Changes.pod
    bricolage/trunk/lib/Bric/Util/Pref.pm
    bricolage/trunk/lib/Bric/Util/UserPref.pm



["r6608-theory.diff" (r6608-theory.diff)]

Modified: bricolage/trunk/lib/Bric/Changes.pod
===================================================================
--- bricolage/trunk/lib/Bric/Changes.pod	2005-08-27 16:58:10 UTC (rev 6607)
+++ bricolage/trunk/lib/Bric/Changes.pod	2005-08-27 17:08:50 UTC (rev 6608)
@@ -58,6 +58,8 @@
 
 =item L<Bric::Util::Priv|Bric::Util::Priv>
 
+=item L<Bric::Util::UserPref|Bric::Util::UserPref>
+
 =back
 
 [David]

Modified: bricolage/trunk/lib/Bric/Util/Pref.pm
===================================================================
--- bricolage/trunk/lib/Bric/Util/Pref.pm	2005-08-27 16:58:10 UTC (rev 6607)
+++ bricolage/trunk/lib/Bric/Util/Pref.pm	2005-08-27 17:08:50 UTC (rev 6608)
@@ -1308,9 +1308,8 @@
       "AND p.id = c.object_id AND m.id = c.member__id AND m.active = '1'";
     my @params;
     while (my ($k, $v) = each %$params) {
-        if ($k eq 'id' or $k eq 'manual' or $k eq 'can_be_overridden') {
-            $wheres .= " AND p.$k = ?";
-            push @params, $v ? 1 : 0;
+        if ($k eq 'id') {
+            $wheres .= ' AND ' . any_where $v, "p.$k = ?", \@params;
         } elsif ($k eq 'val_name') {
             $wheres .= ' AND '
                     . any_where $v, 'LOWER(o.description) LIKE LOWER(?)',
@@ -1321,6 +1320,9 @@
             $wheres .= ' AND p.id = c2.object_id AND c2.member__id = m2.id'
                     . " AND m2.active = '1' AND "
                     . any_where $v, 'm2.grp__id = ?', \@params;
+        } elsif ($k eq 'can_be_overridden' or $k eq 'manual') {
+            $wheres .= ' AND '
+                    . any_where(($v ? 1 : 0), "p.$k = ?", \@params);
         } elsif ($k eq 'active') {
             # Preferences have no active column.
             next;

Modified: bricolage/trunk/lib/Bric/Util/UserPref.pm
===================================================================
--- bricolage/trunk/lib/Bric/Util/UserPref.pm	2005-08-27 16:58:10 UTC (rev 6607)
+++ bricolage/trunk/lib/Bric/Util/UserPref.pm	2005-08-27 17:08:50 UTC (rev 6608)
@@ -216,46 +216,54 @@
 
 =over 4
 
-=item *
+=item id
 
-id
+User preference ID. May use C<ANY> for a list of possible values.
 
-=item *
+=item pref_id
 
-pref_id
+Prefernce ID. May use C<ANY> for a list of possible values.
 
-=item *
+=item user_id
 
-user_id
+ID of the user for whom user preferences may be set. May use C<ANY> for a list
+of possible values.
 
-=item *
+=item name
 
-description
+Preference name. May use C<ANY> for a list of possible values.
 
-=item *
+=item description
 
-default
+Description of the preference. May use C<ANY> for a list of possible values.
 
-=item *
+=item default
 
-value
+Default value of the preference. May use C<ANY> for a list of possible values.
 
-=item *
+=item value
 
-val_name
+Value to which preference is set. May use C<ANY> for a list of possible
+values.
 
-=item *
+=item val_name
 
-manual
+Name of the value. May use C<ANY> for a list of possible values.
 
-=item *
+=item manual
 
-opt_type
+Boolean indicating whether a value can be manually entered by the user, rather
+than selected from a list. May use C<ANY> for a list of possible values.
 
-=item *
+=item opt_type
 
-grp_id
+The preference option type. May use C<ANY> for a list of possible values.
 
+=item grp_id
+
+The ID of a Bric::Util::Grp object with which prefereneces may be associated.
+May use C<ANY> for a list of possible values.
+
 =back
 
 B<Throws:>
@@ -1120,41 +1128,38 @@
 $get_em = sub {
     my ($pkg, $params, $href) = @_;
     my $tables = 'pref p, usr_pref up LEFT JOIN pref_opt o '
-      . 'ON up.pref__id = o.pref__id AND up.value = o.value, '
-      . 'member m, pref_member c';
+               . 'ON up.pref__id = o.pref__id AND up.value = o.value, '
+               . 'member m, pref_member c';
     my $wheres = 'p.id = up.pref__id AND p.id = c.object_id '
-      . "AND m.id = c.member__id AND m.active = '1'";
+               . "AND m.id = c.member__id AND m.active = '1'";
     my @params;
     while (my ($k, $v) = each %$params) {
         if ($k eq 'id') {
-            $wheres .= " AND up.id = ?";
-            push @params, $v;
+            $wheres .= ' AND ' . any_where $v, 'up.id = ?', \@params;
         } elsif ($k eq 'pref_id') {
-            $wheres .= " AND p.id = ?";
-            push @params, $v;
+            $wheres .= ' AND ' . any_where $v, 'p.id = ?', \@params;
         } elsif ($k eq 'val_name') {
-            $wheres .= " AND LOWER(o.description) LIKE ?";
-            push @params, lc $v;
+            $wheres .= ' AND '
+                    . any_where 'LOWER(o.description) LIKE LOWER(?)', \@params;
         } elsif ($k eq 'grp_id') {
             # Add in the group tables a second time and join to them.
-            $tables .= ", member m2, pref_member c2";
-            $wheres .= " AND p.id = c2.object_id AND c2.member__id = m2.id" .
-              " AND m2.active = '1' AND m2.grp__id = ?";
-            push @params, $v;
+            $tables .= ', member m2, pref_member c2';
+            $wheres .= ' AND p.id = c2.object_id AND c2.member__id = m2.id'
+                    . " AND m2.active = '1' AND "
+                    . any_where $v, 'm2.grp__id = ?', \@params;
         } elsif ($k eq 'user_id') {
-            $wheres .= ' AND up.usr__id = ?';
-            push @params, $v;
+            $wheres .= ' AND ' . any_where $v, 'up.usr__id = ?', \@params;
         } elsif ($k eq 'can_be_overridden') {
-            $wheres .= " AND p.can_be_overridden = ?";
-            push @params, $v ? 1 : 0;
+            $wheres .= ' AND '
+                    . any_where $v, 'p.can_be_overridden = ?', \@params;
         } elsif ($k eq 'active') {
             # Preferences have no active column.
             next;
         } else {
             $k = 'def' if $k eq 'default';
-            # It's a varchar field.
-            $wheres .= " AND LOWER(p.$k) LIKE ?";
-            push @params, lc $v;
+            # It's a string attribute.
+            $wheres .= ' AND '
+                    . any_where $v, "LOWER(p.$k) LIKE LOWER(?)", \@params;
         }
     }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic