--- /dev/null
+<!--
+ $Source$
+ $Id$
+-->
+
+<?
+
+/* mnoGoSearch-php0lite v.1.0
+ * for mnoGoSearch ( formely known as UdmSearch ) free web search engine
+ * (C) 2001 by Sergey Kartashoff <gluke@mail.ru>,
+ * mnoGoSearch Developers Team <devel@mnogosearch.org>
+ */
+
+if (!extension_loaded('mnogosearch')) {
+ print "<b>This script requires PHP4.0.5+ with mnoGoSearch extension</b>";
+ exit;
+}
+
+// maximal page number to view
+$MAX_NP=1000;
+
+// maximum results per page
+$MAX_PS=100;
+
+// (optional) Enable autowild feature for url limits
+// 'yes' - default value, can be 'yes' or 'no'
+// $auto_wild='yes';
+
+/* variables section */
+
+$dbaddr='mysql://udm:udm@/udm/';
+$dbmode='single';
+
+$localcharset='koi8-r';
+$phrase=$cache=$crosswords='no';
+$ispelluseprefixes=$trackquery='no';
+$spell_host=$vardir=$datadir='';
+$ispellmode='text';
+$affix_file['en']='/opt/udm/ispell/en.aff';
+// $affix_file['ru']='/opt/udm/ispell/ru.aff';
+$spell_file['en']='/opt/udm/ispell/en.dict';
+// $spell_file['ru']='/opt/udm/ispell/ru.dict';
+$stopwordtable_arr[]='stopword';
+// $stopwordfile_arr[]='stopwords.txt';
+$minwordlength=1;
+$maxwordlength=32;
+
+/* initialisation section */
+
+$self=$PHP_SELF;
+
+if ($ps=="") $ps=20;
+if ($np=="") $np=0;
+if ($o=="") $o=0;
+
+if (($dt!='back') && ($dt!='er') && ($dt!='range')) $dt='back';
+if ($dp=="") $dp=0;
+if (($dx!=0) && ($dx!=-1) && ($dx!=1)) $dx=0;
+if ($dy<1970) $dy=1970;
+if (($dm<0) || ($dm>11)) $dm=0;
+if (($dd<=0) || ($dd>31)) $dd="01";
+
+$db=urldecode($db);
+$de=urldecode($de);
+
+if ($db=="") $db='01/01/1970';
+if ($de=="") $de='31/12/2020';
+
+if (isset($q)) {
+ $q=urldecode($q);
+ $have_query_flag=1;
+} else {
+ $have_query_flag=0;
+}
+
+$ul=urldecode($ul);
+$tag=urldecode($t);
+$lang=urldecode($lang);
+
+$query_orig=$q;
+
+if (isset($CHARSET_SAVED_QUERY_STRING)) {
+ $q_local=urldecode($CHARSET_SAVED_QUERY_STRING);
+ if (preg_match('/q=([^&]*)\&/',$q_local,$param)) {
+ $q_local=urlencode($param[1]);
+ } elseif (preg_match('/q=(.*)$/',$q_local,$param)) {
+ $q_local=urlencode($param[1]);
+ } else {
+ $q_local=urlencode($q);
+ }
+} else {
+ $q_local=urlencode($q);
+}
+
+$ul_local=urlencode($ul);
+$t_local=urlencode($tag);
+$db_local=urlencode($db);
+$de_local=urlencode($de);
+$lang_local=urlencode($lang);
+
+if (($MAX_NP > 0) && ($np>$MAX_NP)) $np=$MAX_NP;
+if (($MAX_PS > 0) && ($ps>$MAX_PS)) $ps=$MAX_PS;
+
+// -----------------------------------------------
+// print_bottom()
+// -----------------------------------------------
+function print_bottom(){
+ print ("<HR><center><img src=\"http://mnogosearch.org/img/mnogo.gif\">\n");
+ print ("<font size=\"-1\">Powered by <a href=\"http://mnogosearch.org/\">mnoGoSearch</a></font><br>\n");
+ print ("<p></BODY></HTML>\n");
+}
+
+
+// -----------------------------------------------
+// print_error_local($str)
+// -----------------------------------------------
+function print_error_local($str){
+ print ("<CENTER><FONT COLOR=\"#FF0000\">An error occured!</FONT>\n");
+ print ("<P><B>$str</B></CENTER>\n");
+ print_bottom();
+ exit;
+}
+
+// -----------------------------------------------
+// exit_local()
+// -----------------------------------------------
+function exit_local($print_err = 1) {
+ drop_temp_table($print_err);
+ exit;
+}
+
+// -----------------------------------------------
+// format_lastmod($lastmod)
+// -----------------------------------------------
+function format_lastmod($lastmod) {
+ $temp=$lastmod;
+ if (!$temp) $temp = 'undefined';
+ else $temp = strftime('%a, %d %b %Y %H:%M:%S %Z',$temp);
+
+ return $temp;
+}
+
+// -----------------------------------------------
+// format_dp($dp)
+// -----------------------------------------------
+function format_dp($dp) {
+ $result=0;
+
+ while ($dp != '') {
+ if (preg_match('/^([\-\+]?\d+)([sMhdmy]?)/',$dp,$param)) {
+ switch ($param[2]) {
+ case 's': $multiplier=1; break;
+ case 'M': $multiplier=60; break;
+ case 'h': $multiplier=3600; break;
+ case 'd': $multiplier=3600*24; break;
+ case 'm': $multiplier=3600*24*31; break;
+ case 'y': $multiplier=3600*24*365; break;
+ default: $multiplier=1;
+ }
+
+ $result += $param[1]*$multiplier;
+ $dp=preg_replace("/^[\-\+]?\d+$param[2]/",'',$dp);
+ } else {
+ return 0;
+ }
+ }
+
+ return $result;
+}
+
+// -----------------------------------------------
+// format_userdate($date)
+// -----------------------------------------------
+function format_userdate($date) {
+ $result=0;
+
+ if (preg_match('/^(\d+)\/(\d+)\/(\d+)$/',$date,$param)) {
+ $day=$param[1];
+ $mon=$param[2];
+ $year=$param[3];
+
+ $result=mktime(0,0,0,$mon,$day,$year);
+ }
+
+ return $result;
+}
+
+// -----------------------------------------------
+// ParseDocText($text)
+// -----------------------------------------------
+function ParseDocText($text){
+ global $all_words;
+ global $hlbeg, $hlend;
+
+ $str=$text;
+ for ($i=0; $i<count($all_words); $i++) {
+ $word=$all_words[$i];
+ $str = preg_replace("/([\s\t\r\n\~\!\@\#\$\%\^\&\*\(\)\-\_\=\+\\\|\{\}\[\]\;\:\'\"\<\>\?\/\,\.]+)($word)/i","\\1$hlbeg\\2$hlend",$str);
+ $str = preg_replace("/^($word)/i","$hlbeg\\1$hlend",$str);
+ }
+
+ return $str;
+}
+
+// -----------------------------------------------
+// print_template($t,$echo=1)
+// -----------------------------------------------
+function print_template($t,$echo=1){
+ global $templates, $udm_agent;
+ global $first_doc, $last_doc, $found, $query_orig, $error, $self;
+ global $nav, $wordinfo;
+ global $url, $ue, $o, $cat;
+ global $clones, $searchtime;
+ global $title, $rating, $desc, $contype, $lastmod, $docsize, $ndoc;
+ global $keyw, $text, $category;
+ global $crc, $Randoms, $rec_id, $DEBUG;
+ global $lang_url_translation, $phpver;
+
+
+ $str=$templates["$t"][$o];
+ if ($str == '') $str=$templates["$t"][0];
+
+ $str=ereg_replace('\$f', "$first_doc", $str);
+ $str=ereg_replace('\$l', "$last_doc", $str);
+ $str=ereg_replace('\$t', "$found", $str);
+ $str=ereg_replace('\$A', $self, $str);
+
+ $str=ereg_replace('\$Q', HtmlSpecialChars(StripSlashes($query_orig)), $str);
+ $str=ereg_replace('\$q', urlencode($query_orig), $str);
+ $str=eregi_replace('\$UE', $ue, $str);
+
+ $str=ereg_replace('\$E', $error, $str);
+ $str=ereg_replace('\$W', $wordinfo, $str);
+
+ $str=ereg_replace('\$V', $nav, $str);
+
+ if ($lang_url_translation == 'yes') {
+ $nolangurl = ereg_replace("\.[a-z]{2}\.[a-z]{2,4}$", "", $url);
+ $str=ereg_replace('\$DU', $nolangurl, $str);
+ } else {
+ $str=ereg_replace('\$DU', $url, $str);
+ }
+
+ $str=ereg_replace('\$DT', $title, $str);
+ $str=ereg_replace('\$DR', "$rating", $str);
+ $str=ereg_replace('\$DX', $text, $str);
+ $str=ereg_replace('\$DE', ($desc != '')?$desc:$text, $str);
+ $str=ereg_replace('\$DC', $contype, $str);
+ $str=ereg_replace('\$DM', $lastmod, $str);
+ $str=ereg_replace('\$DS', "$docsize", $str);
+ $str=ereg_replace('\$DN', "$ndoc", $str);
+ $str=ereg_replace('\$DD', $desc, $str);
+ $str=ereg_replace('\$DK', $keyw, $str);
+ $str=ereg_replace('\$SearchTime', "$searchtime", $str);
+
+ if ($phpver >= 40006) {
+ if (ereg('\$CP',$str)) {
+ if ($temp_cp_arr=Udm_Cat_Path($udm_agent,$cat)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= " > <a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a> ";
+ }
+ $str=ereg_replace('\$CP', $temp_cp, $str);
+ } else $str=ereg_replace('\$CP', '', $str);
+ }
+
+ if (ereg('\$CS',$str)) {
+ if ($temp_cp_arr=Udm_Cat_List($udm_agent,$cat)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= "<a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a><br>";
+ }
+ $str=ereg_replace('\$CS', $temp_cp, $str);
+ } else $str=ereg_replace('\$CS', '', $str);
+ }
+
+ if (ereg('\$DY',$str)) {
+ if ($temp_cp_arr=Udm_Cat_Path($udm_agent,$category)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= " > <a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a> ";
+ }
+ $str=ereg_replace('\$DY', $temp_cp, $str);
+ } else $str=ereg_replace('\$DY', '', $str);
+ }
+ } else {
+ $str=ereg_replace('\$CP', '', $str);
+ $str=ereg_replace('\$CS', '', $str);
+ $str=ereg_replace('\$DY', '', $str);
+ }
+
+ $sub=$str;
+ while($sub=strstr($sub,'$r')){
+ $sub=substr($sub,2);
+ $pos=0;
+ $num='';
+
+ while(($sub[$pos]>='0')&&($sub[$pos]<='9')){
+ $num.=$sub[$pos++];
+ }
+
+ $str=ereg_replace('\$r'.$num, ''.$Randoms[$num], $str);
+ }
+
+// if (strstr($str,'$CL')&&($t=='res')) {
+// if (strtolower($clones) == 'no') {
+// $str=ereg_replace('\$CL', '', $str);
+// } elseif ($crc<>'') {
+// }
+ $str=ereg_replace('\$CL', $clon, $str);
+// }
+
+ if($echo) echo $str; else return $str;
+}
+
+// -----------------------------------------------
+// make_nav($query_orig)
+// -----------------------------------------------
+function make_nav($query_orig){
+ global $found,$np,$isnext,$ps,$tag,$ul,$self,$o,$m,$cat;
+ global $dt, $dp, $dx, $dm, $dy, $dd, $db, $de, $lang, $wm, $wf;
+ global $q_local,$ul_local,$t_local,$db_local,$de_local,$lang_local;
+
+ if($np>0){
+ $prevp=$np-1;
+ $prev_href="$self?q=$q_local&np=$prevp&m=$m".
+ ($ps==20?'':"&ps=$ps").
+ ($tag==''?'':"&t=$t_local").
+ ($ul==''?'':"&ul=$ul_local").
+ ($wm==''?'':"&wm=$wm").
+ ($wf==''?'':"&wf=$wf").
+ (!$o?'':"&o=$o").
+ ($dt=='back'?'':"&dt=$dt").
+ (!$dp?'':"&dp=$dp").
+ (!$dx?'':"&dx=$dx").
+ ($dd=='01'?'':"&dd=$dd").
+ (!$dm?'':"&dm=$dm").
+ ($dy=='1970'?'':"&dy=$dy").
+ ($db=='01/01/1970'?'':"&db=$db_local").
+ ($de=='31/12/2020'?'':"&de=$de_local").
+ ($cat==''?'':"&cat=$cat").
+ ($lang==''?'':"&lang=$lang_local");
+
+ $nav_left="<TD><A HREF=\"$prev_href\">Prev</A></TD>\n";
+ } elseif ($np==0) {
+ $nav_left="<TD><FONT COLOR=\"#707070\">Prev</FONT></TD>\n";
+ }
+
+ if($isnext==1) {
+ $nextp=$np+1;
+ $next_href="$self?q=$q_local&np=$nextp&m=$m".
+ ($ps==20?'':"&ps=$ps").
+ ($tag==''?'':"&t=$t_local").
+ ($ul==''?'':"&ul=$ul_local").
+ ($wm==''?'':"&wm=$wm").
+ ($wf==''?'':"&wf=$wf").
+ (!$o?'':"&o=$o").
+ ($dt=='back'?'':"&dt=$dt").
+ (!$dp?'':"&dp=$dp").
+ (!$dx?'':"&dx=$dx").
+ ($dd=='01'?'':"&dd=$dd").
+ (!$dm?'':"&dm=$dm").
+ ($dy=='1970'?'':"&dy=$dy").
+ ($db=='01/01/1970'?'':"&db=$db_local").
+ ($de=='31/12/2020'?'':"&de=$de_local").
+ ($cat==''?'':"&cat=$cat").
+ ($lang==''?'':"&lang=$lang_local");
+
+ $nav_right="<TD><A HREF=\"$next_href\">Next</TD>\n";
+ } else {
+ $nav_right="<TD><FONT COLOR=\"#707070\">Next</FONT></TD>\n";
+ }
+
+ $nav_bar0='<TD>$NP</TD>';
+ $nav_bar1='<TD><A HREF="$NH">$NP</A></TD>';
+
+ $tp=ceil($found/$ps);
+
+ $cp=$np+1;
+
+ if ($cp>5) {
+ $lp=$cp-5;
+ } else {
+ $lp=1;
+ }
+
+ $rp=$lp+10-1;
+ if ($rp>$tp) {
+ $rp=$tp;
+ $lp=$rp-10+1;
+ if ($lp<1) $lp=1;
+ }
+
+
+ if ($lp!=$rp) {
+ for ($i=$lp; $i<=$rp;$i++) {
+ $realp=$i-1;
+
+ if ($i==$cp) {
+ $nav_bar=$nav_bar.$nav_bar0;
+ } else {
+ $nav_bar=$nav_bar.$nav_bar1;
+ }
+
+ $href="$self?q=$q_local&np=$realp&m=$m".
+ ($ps==20?'':"&ps=$ps").
+ ($tag==''?'':"&t=$t_local").
+ ($ul==''?'':"&ul=$ul_local").
+ ($wm==''?'':"&wm=$wm").
+ ($wf==''?'':"&wf=$wf").
+ (!$o?'':"&o=$o").
+ ($dt=='back'?'':"&dt=$dt").
+ (!$dp?'':"&dp=$dp").
+ (!$dx?'':"&dx=$dx").
+ ($dd=='01'?'':"&dd=$dd").
+ (!$dm?'':"&dm=$dm").
+ ($dy=='1970'?'':"&dy=$dy").
+ ($db=='01/01/1970'?'':"&db=$db_local").
+ ($de=='31/12/2020'?'':"&de=$de_local").
+ ($cat==''?'':"&cat=$cat").
+ ($lang==''?'':"&lang=$lang_local");
+
+ $nav_bar=ereg_replace('\$NP',"$i",$nav_bar);
+ $nav_bar=ereg_replace('\$NH',"$href",$nav_bar);
+ }
+
+ $nav="<TABLE BORDER=0><TR>$nav_left $nav_bar $nav_right</TR></TABLE>\n";
+ } elseif ($found) {
+ $nav="<TABLE BORDER=0><TR>$nav_left $nav_right</TR></TABLE>\n";
+ }
+
+ return $nav;
+}
+
+// -----------------------------------------------
+// M A I N
+// -----------------------------------------------
+
+ if (preg_match("/^(\d+)\.(\d+)\.(\d+)/",phpversion(),$param)) {
+ $phpver=$param[1];
+ if ($param[2] < 9) {
+ $phpver .= "0$param[2]";
+ } else {
+ $phpver .= "$param[2]";
+ }
+ if ($param[3] < 9) {
+ $phpver .= "0$param[3]";
+ } else {
+ $phpver .= "$param[3]";
+ }
+ } else {
+ print "Cannot determine php version: <b>".phpversion()."</b>\n";
+ exit;
+ }
+
+ if ($phpver >= 40006) {
+ if ($temp_cp_arr=Udm_Cat_Path($udm_agent,$cat)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= " > <a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a> ";
+ }
+ $t_CP=$temp_cp;
+ }
+
+ if ($temp_cp_arr=Udm_Cat_List($udm_agent,$cat)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= "<a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a><br>";
+ }
+ $t_CS=$temp_cp;
+ }
+
+ if ($temp_cp_arr=Udm_Cat_Path($udm_agent,$category)) {
+ reset($temp_cp_arr);
+ $temp_cp='';
+ for ($i=0; $i<count($temp_cp_arr); $i+=2) {
+ $cp_path=$temp_cp_arr[$i];
+ $cp_name=$temp_cp_arr[$i+1];
+ $temp_cp .= " > <a href=\"$PHP_SELF?cat=$cp_path\">$cp_name</a> ";
+ }
+ $t_DY=$temp_cp;
+ }
+ }
+
+ $have_spell_flag=0;
+
+ $udm_agent=Udm_Alloc_Agent($dbaddr,$dbmode);
+
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_PAGE_SIZE,$ps);
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_PAGE_NUM,$np);
+
+ $trackquery=strtolower($trackquery);
+ if ($trackquery == 'yes') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_TRACK_MODE,UDM_TRACK_ENABLED);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_TRACK_MODE,UDM_TRACK_DISABLED);
+ }
+
+ $phrase=strtolower($phrase);
+ if ($phrase == 'yes') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_PHRASE_MODE,UDM_PHRASE_ENABLED);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_PHRASE_MODE,UDM_PHRASE_DISABLED);
+ }
+
+ $cache=strtolower($cache);
+ if ($cache == 'yes') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_CACHE_MODE,UDM_CACHE_ENABLED);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_CACHE_MODE,UDM_CACHE_DISABLED);
+ }
+
+ $ispelluseprefixes=strtolower($ispelluseprefixes);
+ if ($ispelluseprefixes == 'yes') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_ISPELL_PREFIXES,UDM_PREFIXES_ENABLED);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_ISPELL_PREFIXES,UDM_PREFIXES_DISABLED);
+ }
+
+ if (Udm_Api_Version() >= 30111) {
+ $crosswords=strtolower($crosswords);
+ if ($crosswords == 'yes') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_CROSS_WORDS,UDM_CROSS_WORDS_ENABLED);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_CROSS_WORDS,UDM_CROSS_WORDS_DISABLED);
+ }
+ }
+
+ if ($localcharset != '') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_CHARSET,$localcharset);
+ }
+
+ for ($i=0; $i < count($stopwordtable_arr); $i++) {
+ if ($stopwordtable_arr[$i] != '') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_STOPTABLE,$stopwordtable_arr[$i]);
+ }
+ }
+
+ for ($i=0; $i < count($stopwordfile_arr); $i++) {
+ if ($stopwordfile_arr[$i] != '') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_STOPFILE,$stopwordfile_arr[$i]);
+ }
+ }
+
+ if ($m=='any') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_SEARCH_MODE,UDM_MODE_ANY);
+ } elseif ($m=='all') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_SEARCH_MODE,UDM_MODE_ALL);
+ } elseif ($m=='bool') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_SEARCH_MODE,UDM_MODE_BOOL);
+ } elseif ($m=='phrase') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_SEARCH_MODE,UDM_MODE_PHRASE);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_SEARCH_MODE,UDM_MODE_ALL);
+ }
+
+ if ($wm=='wrd') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WORD_MATCH,UDM_MATCH_WORD);
+ } elseif ($wm=='beg') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WORD_MATCH,UDM_MATCH_BEGIN);
+ } elseif ($wm=='end') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WORD_MATCH,UDM_MATCH_END);
+ } elseif ($wm=='sub') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WORD_MATCH,UDM_MATCH_SUBSTR);
+ } else {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WORD_MATCH,UDM_MATCH_WORD);
+ }
+
+ if ($minwordlength >= 0) {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_MIN_WORD_LEN,$minwordlength);
+ }
+
+ if ($maxwordlength >= 0) {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_MAX_WORD_LEN,$maxwordlength);
+ }
+
+ if ($phpver >= 40007) {
+ if ($vardir != '') Udm_Set_Agent_Param($udm_agent,UDM_PARAM_VARDIR,$vardir);
+ if ($datadir != '') Udm_Set_Agent_Param($udm_agent,UDM_PARAM_VARDIR,$datadir);
+ }
+
+ if ($wf != '') {
+ Udm_Set_Agent_Param($udm_agent,UDM_PARAM_WEIGHT_FACTOR,$wf);
+ }
+
+ if ($ul != '') {
+ $auto_wild=strtolower($auto_wild);
+ if (($auto_wild == 'yes') ||
+ ($auto_wild == '')) {
+ if ((substr($ul,0,7) == 'http://') ||
+ (substr($ul,0,8) == 'https://') ||
+ (substr($ul,0,7) == 'news://') ||
+ (substr($ul,0,6) == 'ftp://')) {
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_URL,"$ul%");
+ } else {
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_URL,"%$ul%");
+ }
+ } else {
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_URL,$ul);
+ }
+ }
+
+ if ($tag != '') Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_TAG,$tag);
+ if ($cat != '') Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_CAT,$cat);
+ if ($lang != '')Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_LANG,$lang);
+
+ if (($dt == 'back') && ($dp != '0')) {
+ $recent_time=format_dp($dp);
+ if ($recent_time != 0) {
+ $dl=time()-$recent_time;
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_DATE,">$dl");
+ }
+ } elseif ($dt=='er') {
+ $recent_time=mktime(0,0,0,($dm+1),$dd,$dy);
+ if ($dx == -1) {
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_DATE,"<$recent_time");
+ } elseif ($dx == 1) {
+ Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_DATE,">$recent_time");
+ }
+ } elseif ($dt=='range') {
+ $begin_time=format_userdate($db);
+ if ($begin_time) Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_DATE,">$begin_time");
+
+ $end_time=format_userdate($de);
+ if ($end_time) Udm_Add_Search_Limit($udm_agent,UDM_LIMIT_DATE,"<$end_time");
+ }
+
+// if ($have_query_flag) $q=ParseQ($q);
+
+?>
+
+<HTML>
+<HEAD>
+ <TITLE>mnoGoSearch: <? echo HtmlSpecialChars(StripSlashes($query_orig)); ?></TITLE>
+</HEAD>
+
+<body BGCOLOR="#FFFFFF" LINK="#0050A0" VLINK="#0050A0" ALINK="#0050A0">
+<center>
+
+<FORM METHOD=GET ACTION="<? echo $self; ?>">
+<table bgcolor=#eeeee0 border=0 width=100%>
+<tr><td>
+<BR>
+<INPUT TYPE="hidden" NAME="ps" VALUE="10">
+Search for: <INPUT TYPE="text" NAME="q" SIZE=50 VALUE="<? echo HtmlSpecialChars(StripSlashes($query_orig)); ?>">
+<INPUT TYPE="submit" VALUE="Search!"><BR>
+
+Results per page:
+<SELECT NAME="ps">
+<OPTION VALUE="10" <? if ($ps==10) echo 'SELECTED';?>>10
+<OPTION VALUE="20" <? if ($ps==20) echo 'SELECTED';?>>20
+<OPTION VALUE="50" <? if ($ps==50) echo 'SELECTED';?>>50
+</SELECT>
+
+Match:
+<SELECT NAME="m">
+<OPTION VALUE="all" <? if ($m=='all') echo 'SELECTED';?>>All
+<OPTION VALUE="any" <? if ($m=='any') echo 'SELECTED';?>>Any
+<OPTION VALUE="bool" <? if ($m=='bool') echo 'SELECTED';?>>Boolean
+<OPTION VALUE="phrase" <? if ($m=='phrase') echo 'SELECTED';?>>Full phrase
+</SELECT>
+
+
+Search for:
+<SELECT NAME="wm">
+<OPTION VALUE="wrd" <? if ($wm=='wrd') echo 'SELECTED';?>>Whole word
+<OPTION VALUE="beg" <? if ($wm=='beg') echo 'SELECTED';?>>Beginning
+<OPTION VALUE="end" <? if ($wm=='end') echo 'SELECTED';?>>Ending
+<OPTION VALUE="sub" <? if ($wm=='sub') echo 'SELECTED';?>>Substring
+</SELECT>
+
+<br>
+
+Search through:
+<SELECT NAME="ul">
+<OPTION VALUE="" <? if ($ul=='') echo 'SELECTED';?>>Entire site
+<OPTION VALUE="/docs/" <? if ($ul=='/docs/') echo 'SELECTED';?>>Docs
+<OPTION VALUE="/files/" <? if ($ul=='/files') echo 'SELECTED';?>>Files
+<OPTION VALUE="/servers/" <? if ($ul=='/servers/') echo 'SELECTED';?>>Servers
+</SELECT>
+
+in:
+<SELECT NAME="wf">
+<OPTION VALUE="222211" <? if ($wf=='222211') echo 'SELECTED';?>>all sections
+<OPTION VALUE="220000" <? if ($wf=='220000') echo 'SELECTED';?>>Description
+<OPTION VALUE="202000" <? if ($wf=='202000') echo 'SELECTED';?>>Keywords
+<OPTION VALUE="200200" <? if ($wf=='200200') echo 'SELECTED';?>>Title
+<OPTION VALUE="200010" <? if ($wf=='200010') echo 'SELECTED';?>>Body
+</SELECT>
+
+Language:
+<SELECT NAME="lang">
+<OPTION VALUE="" <? if ($lang=='222211') echo 'SELECTED';?>>Any
+<OPTION VALUE="en" <? if ($lang=='en') echo 'SELECTED';?>>English
+<OPTION VALUE="ru" <? if ($lang=='ru') echo 'SELECTED';?>>Russian
+</SELECT>
+
+Restrict search:
+<SELECT NAME="t">
+<OPTION VALUE="" <? if ($t=='') echo 'SELECTED';?>>All sites
+<OPTION VALUE="AA" <? if ($t=='AA') echo 'SELECTED';?>>Sport
+<OPTION VALUE="BB" <? if ($t=='BB') echo 'SELECTED';?>>Shopping
+<OPTION VALUE="CC" <? if ($t=='CC') echo 'SELECTED';?>>Internet
+</SELECT>
+
+</td></tr>
+
+<!-- 'search with time limits' options -->
+<TR><TD>
+<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0>
+<CAPTION>
+Limit results to pages published within a specified period of time.<BR>
+<FONT SIZE=-1><I>(Please select only one option)</I></FONT>
+</CAPTION>
+<TR>
+<TD VALIGN=center><INPUT TYPE=radio NAME="dt" VALUE="back" <? if ($dt=='back') echo 'checked';?>></TD>
+<TD><SELECT NAME="dp">
+<OPTION VALUE="0" <? if ($dp=='0') echo 'SELECTED';?>>anytime
+<OPTION VALUE="10M" <? if ($dp=='10M') echo 'SELECTED';?>>in the last ten minutes
+<OPTION VALUE="1h" <? if ($dp=='1h') echo 'SELECTED';?>>in the last hour
+<OPTION VALUE="7d" <? if ($dp=='7d') echo 'SELECTED';?>>in the last week
+<OPTION VALUE="14d" <? if ($dp=='14d') echo 'SELECTED';?>>in the last 2 weeks
+<OPTION VALUE="1m" <? if ($dp=='1m') echo 'SELECTED';?>>in the last month
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD VALIGN=center><INPUT type=radio NAME="dt" VALUE="er" <? if ($dt=='er') echo 'checked';?>>
+</TD>
+<TD><SELECT NAME="dx">
+<OPTION VALUE="1" <? if ($dx=='1') echo 'SELECTED';?>>After
+<OPTION VALUE="-1" <? if ($dx=='-1') echo 'SELECTED';?>>Before
+</SELECT>
+
+or on
+
+<SELECT NAME="dm">
+<OPTION VALUE="0" <? if ($dm=='0') echo 'SELECTED';?>>January
+<OPTION VALUE="1" <? if ($dm=='1') echo 'SELECTED';?>>February
+<OPTION VALUE="2" <? if ($dm=='2') echo 'SELECTED';?>>March
+<OPTION VALUE="3" <? if ($dm=='3') echo 'SELECTED';?>>April
+<OPTION VALUE="4" <? if ($dm=='4') echo 'SELECTED';?>>May
+<OPTION VALUE="5" <? if ($dm=='5') echo 'SELECTED';?>>June
+<OPTION VALUE="6" <? if ($dm=='6') echo 'SELECTED';?>>July
+<OPTION VALUE="7" <? if ($dm=='7') echo 'SELECTED';?>>August
+<OPTION VALUE="8" <? if ($dm=='8') echo 'SELECTED';?>>September
+<OPTION VALUE="9" <? if ($dm=='9') echo 'SELECTED';?>>October
+<OPTION VALUE="10" <? if ($dm=='10') echo 'SELECTED';?>>November
+<OPTION VALUE="11" <? if ($dm=='11') echo 'SELECTED';?>>December
+</SELECT>
+<INPUT TYPE=text NAME="dd" VALUE="<? echo $dd; ?>" SIZE=2 maxlength=2>
+,
+<SELECT NAME="dy" >
+<OPTION VALUE="1999" <? if ($dy=='1999') echo 'SELECTED';?>>1999
+<OPTION VALUE="2000" <? if ($dy=='2000') echo 'SELECTED';?>>2000
+<OPTION VALUE="2001" <? if ($dy=='2001') echo 'SELECTED';?>>2001
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD VALIGN=center><INPUT TYPE=radio NAME="dt" VALUE="range" <? if ($dt=='range') echo 'checked';?>>
+</TD>
+<TD>
+Between
+<INPUT TYPE=text NAME="db" VALUE="<? echo $db; ?>" SIZE=11 MAXLENGTH=11>
+and
+<INPUT TYPE=text NAME="de" VALUE="<? echo $de; ?>" SIZE=11 MAXLENGTH=11>
+</TD>
+</TR>
+</TABLE>
+
+</TD></TR>
+<!-- end of stl options -->
+
+<!-- categories stuff -->
+<tr><td><? echo $t_CP; ?></td></tr>
+<tr><td><? echo $t_CS; ?></td></tr>
+<input type=hidden name=cat value="<? echo $cat; ?>">
+<!-- categories stuff end -->
+
+</table>
+</form>
+</center>
+
+
+<?
+
+ $ispellmode=strtolower($ispellmode);
+ if ($ispellmode == 'db') {
+ if (! Udm_Load_Ispell_Data($udm_agent,UDM_ISPELL_TYPE_DB,'','',1)) {
+ print_error_local(Udm_Error($udm_agent));
+ } else $have_spell_flag=1;
+ } elseif ($ispellmode == 'server') {
+ if (Udm_Api_Version() >= 30112) {
+ if (! Udm_Load_Ispell_Data($udm_agent,UDM_ISPELL_TYPE_SERVER,$spell_host,'',1)) {
+ print_error_local("Error loading ispell data from server $spell_host");
+ } else $have_spell_flag=1;
+ }
+ } elseif ($ispellmode == 'text') {
+ reset($affix_file);
+ while (list($t_lang,$file)=each($affix_file)) {
+ if (! Udm_Load_Ispell_Data($udm_agent,UDM_ISPELL_TYPE_AFFIX,$t_lang,$file,0)) {
+ print_error_local("Error loading ispell data from file");
+ } else $have_spell_flag=1;
+
+ $temp=$spell_file[$t_lang];
+ for ($i=0; $i<count($temp); $i++) {
+ if (! Udm_Load_Ispell_Data($udm_agent,UDM_ISPELL_TYPE_SPELL,$t_lang,$temp[$i],1)) {
+ print_error_local("Error loading ispell data from file");
+ } else $have_spell_flag=1;
+ }
+ }
+ }
+
+if (! $have_query_flag) {
+ print_bottom();
+ return;
+} elseif ($have_query_flag && ($q=='')) {
+ print ("<FONT COLOR=red>You should give at least one word to search for.</FONT>\n");
+ print_bottom();
+ return;
+}
+
+$res=Udm_Find($udm_agent,$q);
+
+if(($errno=Udm_Errno($udm_agent))>0){
+ print_error_local(Udm_Error($udm_agent));
+} else {
+ $found=Udm_Get_Res_Param($res,UDM_PARAM_FOUND);
+ $rows=Udm_Get_Res_Param($res,UDM_PARAM_NUM_ROWS);
+ $wordinfo=Udm_Get_Res_Param($res,UDM_PARAM_WORDINFO);
+ $searchtime=Udm_Get_Res_Param($res,UDM_PARAM_SEARCHTIME);
+ $first_doc=Udm_Get_Res_Param($res,UDM_PARAM_FIRST_DOC);
+ $last_doc=Udm_Get_Res_Param($res,UDM_PARAM_LAST_DOC);
+
+ if (!$found) {
+ print ("Search Time: $searchtime<br>Search results:\n");
+ print ("<small>$wordinfo</small><HR><CENTER>Sorry, but search returned no results.<P>\n");
+ print ("<I>Try to produce less restrictive search query.</I></CENTER>\n");
+
+ print_bottom();
+ return;
+ }
+
+ $from=IntVal($np)*IntVal($ps);
+ $to=IntVal($np+1)*IntVal($ps);
+
+ if($to>$found) $to=$found;
+ if (($from+$ps)<$found) $isnext=1;
+ $nav=make_nav($query_orig);
+
+ print("Search Time: $searchtime<br>Search results: <small>$wordinfo</small><HR>\n");
+ print("Displaying documents $first_doc-$last_doc of total <B>$found</B> found.\n");
+
+ for($i=0;$i<$rows;$i++){
+ $ndoc=Udm_Get_Res_Field($res,$i,UDM_FIELD_ORDER);
+ $rating=Udm_Get_Res_Field($res,$i,UDM_FIELD_RATING);
+ $url=Udm_Get_Res_Field($res,$i,UDM_FIELD_URL);
+ $title=Udm_Get_Res_Field($res,$i,UDM_FIELD_TITLE);
+ $title=($title) ? htmlspecialChars($title):'No title';
+ $text=htmlspecialChars(Udm_Get_Res_Field($res,$i,UDM_FIELD_TEXT));
+ $contype=Udm_Get_Res_Field($res,$i,UDM_FIELD_CONTENT);
+ $docsize=Udm_Get_Res_Field($res,$i,UDM_FIELD_SIZE);
+ $lastmod=format_lastmod(Udm_Get_Res_Field($res,$i,UDM_FIELD_MODIFIED));
+ $keyw=htmlspecialChars(Udm_Get_Res_Field($res,$i,UDM_FIELD_KEYWORDS));
+ $desc=htmlspecialChars(Udm_Get_Res_Field($res,$i,UDM_FIELD_DESC));
+ $crc=Udm_Get_Res_Field($res,$i,UDM_FIELD_CRC);
+ $rec_id=Udm_Get_Res_Field($res,$i,UDM_FIELD_URLID);
+
+ if ($phpver >= 40006) {
+ $category=Udm_Get_Res_Field($res,$i,UDM_FIELD_CATEGORY);
+ } else {
+ $category='';
+ }
+
+ print ("<DL><DT><b>$ndoc.</b><a href=\"$url\" TARGET=\"_blank\"><b>$title</b></a>\n");
+ print ("[<b>$rating</b>]<DD>\n");
+ print (($desc != '')?$desc:$text."...<BR>$t_DY<UL><li>\n");
+ print ("<A HREF=\"$url\" TARGET=\"_blank\">$url</A>\n");
+ print ("($contype) $lastmod, $docsize bytes</UL></DL>\n");
+ }
+
+ print("<HR><CENTER> $nav </CENTER>\n");
+ print_bottom();
+
+ // Free result
+ Udm_Free_Res($res);
+}
+
+ if ($have_spell_flag) Udm_Free_Ispell_Data($udm_agent);
+ Udm_Free_Agent($udm_agent);
+?>
+++ /dev/null
-<!--
- $Source$
- $Id$
--->
-
-<html>
-<body>
-
-<form method=post>
-<input type=text size=30 name=q value="<? echo htmlspecialchars(stripslashes($q)); ?>">
-<input type=submit value=" Search ! ">
-</form>
-
-<pre>
-
-<?
- if ($q=='') {
- print("</pre></body></html>\n");
- exit();
- }
-
-// Stage 1: allocate UdmSearch agent, set DBAddr and DBMode
-// DBMode is optional, "single" by default
-
- $udm=Udm_Alloc_Agent("mysql://udm:udm@localhost/udm/",'single');
-
- if (Udm_Api_Version() >= 30111) {
- print "Total number of urls in database: ".Udm_Get_Doc_Count($udm)."<br>\n";
- }
-
-// Stage 2: set search parameters
-
- $page_size=10;
- $page_number=0;
-
- Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_SIZE,$page_size);
- Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_NUM,$page_number);
- Udm_Set_Agent_Param($udm,UDM_PARAM_SEARCH_MODE,UDM_MODE_BOOL);
- Udm_Set_Agent_Param($udm,UDM_PARAM_CACHE_MODE,UDM_CACHE_DISABLED);
- Udm_Set_Agent_Param($udm,UDM_PARAM_TRACK_MODE,UDM_TRACK_DISABLED);
- Udm_Set_Agent_Param($udm,UDM_PARAM_CHARSET,"koi8-r");
-// Udm_Set_Agent_Param($udm,UDM_PARAM_STOPTABLE,"stopword");
-// Udm_Set_Agent_Param($udm,UDM_PARAM_STOPFILE,"stop.txt");
- Udm_Set_Agent_Param($udm,UDM_PARAM_WEIGHT_FACTOR,"F9421");
- Udm_Set_Agent_Param($udm,UDM_PARAM_WORD_MATCH,UDM_MATCH_WORD);
- Udm_Set_Agent_Param($udm,UDM_PARAM_PHRASE_MODE,UDM_PHRASE_DISABLED);
- Udm_Set_Agent_Param($udm,UDM_PARAM_MIN_WORD_LEN,2);
- Udm_Set_Agent_Param($udm,UDM_PARAM_MAX_WORD_LEN,16);
- Udm_Set_Agent_Param($udm,UDM_PARAM_PREFIX,UDM_PREFIX_DISABLED);
- Udm_Set_Agent_Param($udm,UDM_PARAM_VARDIR,"/opt/mnogo/install/var");
-
- if (Udm_Api_Version() >= 30111) {
- Udm_Set_Agent_Param($udm,UDM_PARAM_CROSS_WORDS,UDM_CROSS_WORDS_DISABLED);
- }
-
-// if (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_DB,'','',1)) {
-// printf("Error #%d: '%s'\n",Udm_Errno($udm),Udm_Error($udm));
-// exit;
-// }
-
-// if ((! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/udm/ispell/en.aff',0)) ||
-// (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/udm/ispell/en.dict',1))) {
-// printf("Error loading ispell data from files<br>\n");
-// exit;
-// }
-
-// if (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) {
-// printf("Error loading ispell data from server<br>\n");
-// exit;
-// }
-
-// Stage 3: add search limits
-// Udm_Add_Search_Limit($udm,UDM_LIMIT_URL,"http://www.mydomain.com/%");
-// Udm_Add_Search_Limit($udm,UDM_LIMIT_TAG,"01");
-// Udm_Add_Search_Limit($udm,UDM_LIMIT_CAT,"01");
-// Udm_Add_Search_Limit($udm,UDM_LIMIT_LANG,"en");
-// Udm_Add_Search_Limit($udm,UDM_LIMIT_DATE,"<908012006");
-
-// Udm_Clear_Search_Limits($udm);
-
-// Stage 4: perform search
-
- $res=Udm_Find($udm,$q);
-
-// Stage 5: display results
-
- // Check error code
- if(($errno=Udm_Errno($udm))>0){
- // Display error message
- printf("Error #%d: '%s'\n",$errno,Udm_Error($udm));
- }else{
- $first=$page_size*$page_number+1;
-
- // Get result parameters
- $total=Udm_Get_Res_Param($res,UDM_PARAM_FOUND);
- $rows=Udm_Get_Res_Param($res,UDM_PARAM_NUM_ROWS);
- $wordinfo=Udm_Get_Res_Param($res,UDM_PARAM_WORDINFO);
- $searchtime=Udm_Get_Res_Param($res,UDM_PARAM_SEARCHTIME);
- $first_doc=Udm_Get_Res_Param($res,UDM_PARAM_FIRST_DOC);
- $last_doc=Udm_Get_Res_Param($res,UDM_PARAM_LAST_DOC);
-
- printf("Searchtime: ".$searchtime."\n\n");
-
- printf("Documents %d-%d from %d total found; %s\n\n",
- $first_doc,$last_doc,$total,$wordinfo);
-
- // Fetch all rows
- for($i=0;$i<$rows;$i++){
- printf("%3d. %s\n",$first+$i,Udm_Get_Res_Field($res,$i,UDM_FIELD_URL));
- printf(" ORDER : %d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_ORDER));
- printf(" CONT : %s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_CONTENT)));
- printf(" TITLE: %s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_TITLE)));
- printf(" KEYWORDS: %s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_KEYWORDS)));
- printf(" DESC: %s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_DESC)));
- printf(" TEXT: %s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_TEXT)));
- printf(" SIZE : %d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_SIZE));
- printf(" MODIFIED : %s\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_MODIFIED));
- printf(" URLID : %d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_URLID));
- printf(" RATING : %d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_RATING));
- printf(" CRC : %d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_CRC));
- printf("---------\n");
- }
-
- // Free result
- Udm_Free_Res($res);
- }
-
-//Stage 6: free ispell data if loaded before
-// Udm_Free_Ispell_Data($udm);
-
-//Stage 7: free UdmSearch agent
-
- Udm_Free_Agent($udm);
-?>
-
-</pre>
-</body>
-</html>