From e9cfc32406d0ff8b71f0e7d5f9671171cbf2c825 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sun, 5 Apr 2009 16:37:18 +0200 Subject: save in database search --- lib/intentioncloud/Model/Search.pm | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/intentioncloud/Model/Search.pm (limited to 'lib') diff --git a/lib/intentioncloud/Model/Search.pm b/lib/intentioncloud/Model/Search.pm new file mode 100644 index 0000000..a3a36c8 --- /dev/null +++ b/lib/intentioncloud/Model/Search.pm @@ -0,0 +1,58 @@ +package intentioncloud::Model::Search; + +use WebService::Google::Suggest; +use HTML::TagCloud; +use YAML::Syck; +use DateTime; +use URI::Escape; + +sub search { + my ( $self, $c ) = @_; + if ( $c->req->params->{ engine } eq 'google' ) { + $self->google_search( $c ); + } + $self->save_search( $c ) if ( $c->stash->{ cloud } ); +} + +sub google_search { + my ( $self, $c ) = @_; + + my $cloud = HTML::TagCloud->new(); + my $suggest = WebService::Google::Suggest->new(); + my $search = $c->req->params->{ q } . " "; + $c->stash( query => $search ); + + my $suggests = 0; + foreach ( $suggest->complete( $search ) ) { + $suggests++; + if ( $_->{ results } > 0 ) { + $cloud->add( $_->{ query }, 'blah', $_->{ results } ); + } + } + if ( $suggests ) { + $c->stash( cloud => $cloud->html_and_css()); + } else { + $c->stash( no_suggest => "no suggestions :(" ); + } +} + +sub save_search { + my ( $self, $c ) = @_; + my $dt = DateTime->now; + + my $permalink + = $dt->ymd( '/' ) . '/' + . $c->req->params->{ engine } . '/' + . uri_escape( $c->req->params->{ q } ); + + $c->model( 'DB::Search' )->create( + { engine => $c->req->params->{ engine }, + cloud => $c->stash->{ suggest }, + date_created => $dt, + query => $c->req->params->{ q }, + permalink => $permalink, + } + ); +} + +1; -- cgit 1.4.1