PX : code

INNSearch by Vince Busam
Rating: 5.00
Download this code


<?php

  
#INNSearch
  #Vince Busam (vinceb@ucla.edu)

  #This allows users to search through a local INN server's archives
  #We use it to search through old postings to our private newsgroups

  #location of news active file
  
$active "/var/lib/news/active";

  
#locate of news spool
  
$spooldir "/var/spool/news/";
  
#number of levels deep subdirs of $spooldir are
  
$dirdepth 4

  
#minimum number of articles in group to show up on main search page
  
$minarticles 1;

  
#groups with more articles than this will not be selected by default
  
$maxarticles 1000;

  print(
"<HTML>");
  print(
"<head>");
  print(
"<title>");
  print(
"INNSearch");
  print(
"</title>");
  print(
"</head>");
  if (
$query) {
    
$searchgroups "";
    
$sgroups split("&"getenv("QUERY_STRING"));
    for (
$i=0$i count($sgroups); $i++) {
      if (
ereg("=on"$sgroups[$i])) {
        
$tgroup split("="$sgroups[$i]);
        
$tgroup[0] = ereg_replace("\.""/"$tgroup[0]);
        
$searchgroups $searchgroups " " $spooldir $tgroup[0]. "/*";
      }
    }
    print (
"Search for \"$query\"<P>");
    
$fp popen("/bin/grep \"$query\" $searchgroups""r");
    while (
$line fgets($fp150)) {
       
$file explode(":"$line);
       
$group explode("/"$file[0]);
       
$newsgroup "";
       for (
$i $dirdepth$i < (count($group)-1); $i++) {
         if (
$i $dirdepth) { $newsgroup $newsgroup ".";}
         
$newsgroup "$newsgroup$group[$i]";
       }
       if (
$newsgroup) {
         print(
"<B>$newsgroup</B>");
         print(
" <A HREF=\"innsearch.phtml?article=$newsgroup.$group[$i]\">$grou
p[$i]</A>"
);
         
$la split(":"$line2);
         
$line htmlspecialchars($la[1]);
         print(
" $line<BR>\n");
         
reset($file);
         
reset($group);
       }
    }
    
pclose($fp);
  } else if (
$article) {
    
$article ereg_replace("\.""/"$article);
    
$fp popen("/bin/cat $spooldir$article""r");
    while (
$line fgets($fp150)) {
      
$line htmlspecialchars($line);
      print(
"$line<BR>\n");
    }
    
pclose($fp);
  } else {
    print (
"INNSearch<P>\n");
    print (
"<FORM METHOD=\"get\" action=\"innsearch.phtml\">\n");
    print (
"<INPUT name=\"query\" size=\"25\">\n");
    print (
"<INPUT type=\"submit\" value = \"Search\"><BR>\n");
    
$fp popen("cat $active""r");
    while (
$line fgets($fp150)) {
      
$group split(" "$line);
      if (
$group[1] > $minarticles) {
        print(
"<input type=\"checkbox\" name=\"$group[0]\"");
        if (
$group[1] < $maxarticles) {
          print(
" checked ");
        }
        print(
">$group[0]<BR>\n");    
      }
    }
    
pclose($fp);
    print (
"</FORM>\n");
  }  
?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.