#!/usr/local/bin/perl
############################################################################
# Digitalt fotoalbum-program (fil 6 av 7)                                  #
# Version 3 av Anders Hultman 2002.                                        #
#                                                                          #
# Programmet låter dig ha flera separata fotoalbum med samma layout.       #
# För detaljerade anvisningar, se kommentarer i "album-lib" samt i koden.  #
#                                                                          #
# Programmet kräver att Unix-kommandot grep finns tillgängligt.            #
############################################################################
# Ta bort följande rad ifall du har inte har tillgång till Image::Size
use Image::Size;
require 'album-lib';

### Skriv ut sidan
print "Content-type: text/html\n\n";
print "<HTML>\n<head>\n";
print "<TITLE>Sök bild</TITLE>\n";
print '<STYLE TYPE="text/css"><!--
A.pic { color: black; }
A.pic IMG { border-color: black; }
--></STYLE>
';
print "</HEAD>\n",'<BODY BGCOLOR="#FFFFFF">',"\n";

print '<table width="100%">',"\n<tr><td>";

# Här hämtar jag in en snutt HTML-kod från filen "logo.include" för
# att visa min logotype och en länk till min förstasida.
# Avkommentera följande rader om du vill ha en liknande funktion.
# open (LOGO,"logo.include");
# print while (<LOGO>);
# close (LOGO);

print '<td><td align="right">',
      '<a href="',$toc_url,'">',
      "$toc_txt</a><br>\n";
print '<tr><td valign="top" bgcolor="#CCCCFF" colspan="3"><big><strong>',
      "Sök bild</strong></big>\n";

unless ($ENV{'QUERY_STRING'}) {
  print "<tr><td>\n";
  print '<form method="GET" action="',$ENV{'SCRIPT_NAME'},'">',"\n";
  print 'Sök efter: <input type="text" name="q" size="40">',"\n";
  print '<input type="submit" value="Sök">',"\n";
  print "</form>\n";
  print "</table>\n<P>\n";
  exit(0);
}

print "</table>\n<P>\n";
&GetCGIinput;
$q =  $FORM{'q'};

# Här tvättas formulärdatat från "farliga tecken". Själva sökningen utförs 
# genom att köra grep i ett externt shell och vi vill inte att nån ska kunna 
# smyga med några andra Unix-kommandon till det shellet. Regexpen nedan tar 
# bort allt som inte är bokstäver, siffror, bindestreck, understreck, punkt 
# eller mellanslag. Vill du tillåta fler eller färre tecken i en sökning så
# kan du ändra sökmönstret efter eget behov, men tänk på att detta påverkar 
# hur säker din server blir mot intrång.

$q =~ s/[^a-zA-ZĀ-ÖØ-öø-˙0-9\-\_\. ]//g;

unless ($q) {
  print "<DIV ALIGN=\"center\">Du angav inget giltigt sökord.\n</DIV>\n";
  exit(0);
}

$hit = `grep -in "$q" $db_dir/*`;

@bild = split(/\n/,$hit);
@bild = ("",@bild);
$antal = @bild;
$db_l = length($db_dir);

print '<DIV ALIGN="CENTER">',"\n";
print "Du sökte efter \"$q\"\n<P>\n";

for ($i = 1; $i <= $antal; $i++) {
  ($album,$rad) = split(/.album:/,$bild[$i]);
  $bild[$i] = substr($rad,(index($rad,":"))+1);
  $nr       = substr($rad,0,(index($rad,":")));
  $album = substr($album,$db_l+1);
  ($url,$bildtext,$serv) = &url_text($i);

  # Ta bort följande stycke ifall du har inte har tillgång till Image::Size
  if ($serv eq "local") {
    ($width,$height) = imgsize($ENV{'DOCUMENT_ROOT'}.$url); 
  } else {
    undef($width); undef($height);
  }

  if (($bild[$i] =~ /$q/i) && !($bild[$i] =~ /^\#/) && ($nr > 1)) {
    $trb .= '<A HREF="'.$en_url."/".$album.'?'. ($nr-1) .'" CLASS="pic">';
    $trb .= '<IMG SRC="'.$url.'" ';
    $trb .= "WIDTH=\"$width\" HEIGHT=\"$height\" " 
        if (($width) && ($height));
    $trb .= 'BORDER="1">'."</A>\n";
    $trb .= "<BR>\n$bildtext\n" if ($bildtext);
    $trb .= "<P>\n\n";
    $antal_bilder++;
  }
  if ($rad == 1) {
    $tra .= '<A HREF="'.$al_url."/".$album.'">'."$bild[$i]</A>\n<BR>\n";
    $antal_album++;
  }
}
if ($antal_album) {
  print "Detta " if ($antal_album == 1);
  print "Dessa $antal_album " if ($antal_album > 1);
  print "album motsvarade din sökning:\n<BR>\n$tra";
  print "<p><hr><p>\n";
}
if ($antal_bilder) {
  print "Denna bild " if ($antal_bilder == 1);
  print "Dessa $antal_bilder bilder " if ($antal_bilder > 1);
  print "motsvarade din sökning:\n<P>\n$trb";
  print "<hr><p>\n";
}
if (($antal_album == 0) && ($antal_bilder == 0)) {
  print "Inga bilder motsvarade din sökning.\n<P><HR><P>\n";
}
print "</DIV>\n</BODY>\n</HTML>\n";
exit (0);

