]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Apache/MVC/Model/CDBI.pm
Use abstract search instead; more flexible.
[maypole.git] / lib / Apache / MVC / Model / CDBI.pm
index 88c1d5282769240dcf338316d64b8465dfb37045..4d6339d1745b0201d4e9c6655051b79f26fe751e 100644 (file)
@@ -3,6 +3,7 @@ use base qw(Apache::MVC::Model::Base Class::DBI);
 use Lingua::EN::Inflect::Number qw(to_PL);
 use Class::DBI::AsForm;
 use Class::DBI::FromCGI;
+use Class::DBI::AbstractSearch;
 use CGI::Untaint;
 use strict;
 
@@ -63,9 +64,13 @@ sub adopt {
 sub search :Exported {
     my ($self, $r) = @_;
     my %fields = map {$_ => 1 } $self->columns;
-    my %values = map { $_ => $params{$_} }
-                 grep { $params{$_} and $fields{$_} } keys %{$r->{params}};
-    $r->objects([ %values ? $self->search_like(%values) : $self->retrieve_all ]);
+    my $oper = "like"; # For now
+    my %params = %{$r->{params}};
+    my %values = map { $_ => {$oper, $oper eq "like" ? "%".$params{$_}."%" 
+                                                     :$params{$_} } }
+                 grep { $params{$_} and $fields{$_} } keys %params;
+
+    $r->objects([ %values ? $self->search_where(%values) : $self->retrieve_all ]);
     $r->template("list");
     $r->{template_args}{search} = 1;
 }