Rev 1295 | Blame | Compare with Previous | Last modification | View Log | RSS feed
################################################################################ Codestriker: Copyright (c) 2001, 2002 David Sitsky. All rights reserved.# sits@users.sourceforge.net## This program is free software; you can redistribute it and modify it under# the terms of the GPL.# Action object for displaying the topic search page.package Codestriker::Action::Search;use strict;use Codestriker::Model::Project;use Codestriker::DB::Database;# Create an appropriate form for topic searching.sub process($$$) {my ($type, $http_input, $http_response) = @_;my $query = $http_response->get_query();# Check if this action is allowed.if ($Codestriker::allow_searchlist == 0) {$http_response->error("This function has been disabled");}$http_response->generate_header(topic_title=>"Search",reload=>0, cache=>1);# Obtain a URL builder object.my $url_builder = Codestriker::Http::UrlBuilder->new($query);# Create the hash for the template variables.my $vars = {};# Create the list of valid states that can be searched over.my @states = ("Any");push @states, @Codestriker::topic_states;$vars->{'states'} = \@states;# Get the list of valid topics in the system that can be searched over.my @projects_db = Codestriker::Model::Project->list();my @projects = ();my $any_project = {};$any_project->{id} = -1;$any_project->{name} = "Any";push @projects, $any_project;foreach my $project (@projects_db) {push @projects, $project;}$vars->{'projects'} = \@projects;# Check if the database supports the like operator over text fields.my $database = Codestriker::DB::Database->get_database();if ($database->has_like_operator_for_text_field()) {# Can use LIKE over text fields, everything is searchable.$vars->{'enable_title'} = 1;$vars->{'enable_description'} = 1;$vars->{'enable_comment'} = 1;$vars->{'enable_body'} = 1;$vars->{'enable_filename'} = 1;}else {# Only varchar fields can be searched over, limit the search# capability.$vars->{'enable_title'} = 1;$vars->{'enable_description'} = 0;$vars->{'enable_comment'} = 0;$vars->{'enable_body'} = 0;$vars->{'enable_filename'} = 1;}my $template = Codestriker::Http::Template->new("search");$template->process($vars);$http_response->generate_footer();}1;