--- branches/filter-action/lib/SVNBrowser/Action/Filter.pm 2006/12/10 14:06:33 28 +++ branches/filter-action/lib/SVNBrowser/Action/Filter.pm 2006/12/10 17:21:02 29 @@ -86,12 +86,60 @@ sub take_action { my $self = shift; - my $author = $self->argument_value('author'); + my $revisions = SVNBrowser::Model::RevisionCollection->new(); + $revisions->unlimit(); + + if ( my $author = $self->argument_value('author') ) { + $revisions->limit( column => 'author', value => $author, entry_aggregator => 'AND' ); + } + + if ( my $from_date = $self->argument_value('from_date') ) { + $revisions->limit( column => 'commit_date', operator => '>=', value => $from_date, entry_aggregator => 'AND' ); + } + + if ( my $to_date = $self->argument_value('to_date') ) { + $revisions->limit( column => 'commit_date', operator => '>=', value => $to_date, entry_aggregator => 'AND' ); + } + + if ( my $search = $self->argument_value('search') ) { + $revisions->limit( column => 'message', operator => 'LIKE', value => '%' . $search . '%' ); + } + + if ( my $branch = $self->argument_value('branch') ) { + my $b = SVNBrowser::Model::Branch->new(); + $b->load_by_cols( path => $branch ); + + my $rev_branches = $revisions->join( + alias1 => 'main', column1 => 'revision', + table2 => 'revision_branches', column2 => 'revision' + ); + $revisions->limit( alias => $rev_branches, column => 'branch', value => $b->id ); + } + + $revisions->order_by({ column => 'commit_date', order => 'desc' }); + $revisions->set_page_info( + current_page => $self->argument_value('page'), + per_page => $self->argument_value('per_page'), + ); + + warn "take_action SQL: ", $revisions->build_select_query; + + $revisions->goto_first_item; + my $msg = ''; - $msg .= "Showing only commits for $author" if ($author); - $msg .= ( $msg ? ' and file actions' : 'Showing file actions for each commit' ) if ( $self->argument_value('show_actions') ); - $self->result->message($msg) if ($msg); + if (my $nr = $revisions->pager->total_entries) { + $msg .= "Found $nr revisions"; + } else { + $msg .= "No revisions found"; + } + + $self->result->message($msg); + + $self->result->content( revisions => $revisions ); + use Data::Dump qw/dump/; + warn "take_action revisions = ",dump($revisions); + return 1; }