Show process_search.html syntax highlighted
% # vim:set syntax=mason:
<%args>
$search_string => ""
</%args>
<%init>
my $query_string = "";
my $oss = $search_string;
my @or_items = ();
my @and_items = ();
while($search_string =~ m/from:([a-zA-Z0-9.@]+)(\s|$)/) {
push @or_items, qq(FROM "$1");
$search_string =~ s/from:([a-zA-Z0-9.@]+)(\s|$)//;
}
while($search_string =~ m/to:([a-z0-9.@]+)(\s|$)/i) {
push @or_items, qq(TO "$1");
$search_string =~ s/to:([a-z0-9.@]+)(\s|$)//i;
}
while($search_string =~ m/"([^"]*)"/) { # "
push @and_items, qq(TEXT "$1");
$search_string =~ s/"[^"]*"//; # "
}
my @words = split /\s+/, $search_string;
for my $w (@words) {
push @and_items, qq(TEXT "$w");
}
if(@or_items > 2) {
$query_string .= "OR ";
for(my $i = 0; $i < @or_items; $i++) {
if($i == scalar(@or_items)-1) {
$query_string .= $or_items[$i];
} else {
$query_string .= qq(OR $or_items[$i] );
}
}
} elsif(@or_items == 2) {
$query_string .= qq(OR $or_items[0] $or_items[1] );
} else {
$query_string .= qq($or_items[0] );
}
for my $ai (@and_items) {
$query_string .= qq($ai );
}
#my ($sm, $sd, $sy, $em, $ed, $ey);
#if($start =~ m!^(\d{1,2})/(\d{1,2})/(\d{4})$!) {
#($sm, $sd, $sy) = ($1, $2, $3);
#$sm -= 1;
#if($end =~ m!^(\d{1,2})/(\d{1,2})/(\d{4})$!) {
#($em, $ed, $ey) = ($1, $2, $3);
#$em -= 1;
#}
#if($sm >= 0 && $sm < 12 && $em >=0 && $em < 12 && $sd < 32 && $ed < 32) {
#$logger->debug("$sm, $sd, $sy, $em, $ed, $ey");
#my $since = Email::Date::format_date(Time::Local::timelocal(1,0,0,$sd,$sm,$sy));
#my $before = Email::Date::format_date(Time::Local::timelocal(59,59,23,$ed,$em,$ey));
#$query_string .= qq(BEFORE "$before" SINCE "$since");
#}
#}
#
$query_string =~ s/^\s*//;
$query_string =~ s/\s*$//;
$logger->debug("QUERY: $query_string");
</%init>
<%once>
# use Time::Local;
our $logger = Log::Log4perl->get_logger('alphamail');
our $base = $config->get('base_uri');
</%once>
<& /mail/index.html, filter => $query_string, search_string => $oss &>
See more files for this project here