function Search() { if (!preg_match("#^(.+?);pass=(.+?);XapianWords=(.+)#", $_GET["creds"], $re)) { die; } $uid = $re[1]; $ct = new user($uid); if ($ct->uidNumber < 2) { die("{$uid} does not exists"); } if (md5($ct->password) != $re[2]) { die("bad password"); } $XapianWords = $re[3]; $xapian = new XapianSearch(); if (!is_file("/usr/share/artica-postfix/LocalDatabases/samba.db")) { $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/samba.db"); } $current = $_GET["p"]; if ($current == null) { $current = 0; } $xapian->start = $current; $xapian->terms = $XapianWords; $array = $xapian->search(); $maxdocs = $array["ESTIMATED"]; $page_number = round($maxdocs / 10); if ($page_number <= 1) { $page_text = "{page}"; } else { $page_text = "{pages}"; } if ($page_number > 1) { $max = $page_number; if ($max > 10) { $max = 11; } for ($i = 0; $i < $max; $i++) { if ($i == $current) { $class = "id=tab_current"; } else { $class = null; } $tab = $tab . "<li><a href=\"{$page}?creds={$_GET["creds"]}&p={$i}\" {$class}>{page} {$i}</a></li>\n"; } $tab = "<div id=tablist>{$tab}</div>"; } $table = "\n\t<div style='width:95%;font-size:16px;padding:9px;margin-bottom:5px;text-align:right;border-bottom:1px solid #CCCCCC'>\n\t{$maxdocs} {results} | {$page_number} {$page_text}</div>\n\t{$tab}\n\t<table style='width:95%'>"; if (is_array($array["RESULTS"])) { while (list($num, $arr) = each($array["RESULTS"])) { $DATA = $arr["DATA"]; $PERCENT = $arr["PERCENT"]; $PATH = $arr["PATH"]; $TIME = $arr["TIME"]; $SIZE = $arr["SIZE"]; $endcoded_path = base64_encode($PATH); //if(!is_file($PATH)){continue;} $basename = basename($PATH); $ext = strtolower(Get_extension($basename)); $img = "img/ext/def_small.gif"; if ($users->AllowXapianDownload) { $url = "<a href='#' OnClick=\"javascript:XapianFileInfo('{$endcoded_path}')\">"; } if (is_file("img/ext/{$ext}_small.gif")) { $img = "img/ext/{$ext}_small.gif"; } $table = $table . "\n\t\t\t\t<tr><td colspan=3> </td>\n\t\t\t\t<tr>\n\t\t\t\t<td width=1%><img src='{$img}'></td>\n\t\t\t\t<td width=1%><span style='font-size:16px'>{$PERCENT}%</span></td>\n\t\t\t\t<td width=99%><strong style='font-size:16px'>{$url}{$basename}</a></strong></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td width=1%> </td>\n\t\t\t\t<td colspan=2 width=99%><div style='font-size:11px;font-weight:normal'>{$DATA}</div></td>\n\t\t\t\t</tr>\n\t\t\t\t"; } $table = $table . "</table>"; } $table = $table . "\n\t<script>\n\t\t\tfunction XapianFileInfo(file){\n\t\t\tYahooWin2(680,'{$page}?creds={$_GET["creds"]}&XapianFileInfo='+file,'{$title}');\n\t\t}\n\t</script>\n\t\n\t"; $tpl = new template_users("«{$XapianWords}» {$maxdocs} {results}", $table, 1, 0, 0, 0); $tpl->web_page = str_replace('LeftMenushide();', '', $tpl->web_page); echo $tpl->web_page; }
function XapianSearch() { $userid = $_SESSION["uid"]; $ct = new user($userid); $page = CurrentPageName(); /*if($userid<>null){ $samba=new samba(); $samba_folders=$samba->GetUsrsRights($userid); }*/ $users = new usersMenus(); writelogs("{$userid} ->AllowXapianDownload \"{$users->AllowXapianDownload}\"", __FUNCTION__, __FILE__); $xapian = new XapianSearch(); if (!is_file("/usr/share/artica-postfix/LocalDatabases/samba.db")) { $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/samba.db"); } $current = $_GET["p"]; if ($current == null) { $current = 0; } $xapian->start = $current; $xapian->terms = $_GET["XapianWords"]; $xapian->start = $current; if (count($xapian->databases) > 0) { $array = $xapian->search(); } $maxdocs = $array["ESTIMATED"]; $page_number = round($maxdocs / 10); if ($page_number <= 1) { $page_text = "{page}"; } else { $page_text = "{pages}"; } if ($page_number > 1) { $max = $page_number; if ($max > 10) { $max = 12; } for ($i = 0; $i < $max; $i++) { if ($i == $current) { $class = "id=tab_current"; } else { $class = null; } $tab = $tab . "<li><a href=\"javascript:LoadAjax('XapianDiv','{$page}?p={$num}&XapianWords={$_GET["XapianWords"]}&p={$i}')\" {$class}>{page} {$i}</a></li>\n"; } $tab = "<div id=tablist>{$tab}</div>"; } $table = "\n\t<div style='width:95%;font-size:16px;padding:9px;margin-bottom:5px;text-align:right;border-bottom:1px solid #CCCCCC'>{$maxdocs} {results} | {$page_number} {$page_text}</div>\n\t{$tab}\n\t<table style='width:95%'>"; if (is_array($array["RESULTS"])) { while (list($num, $arr) = each($array["RESULTS"])) { $DATA = $arr["DATA"]; $PERCENT = $arr["PERCENT"]; $PATH = $arr["PATH"]; $TIME = $arr["TIME"]; $SIZE = $arr["SIZE"]; $endcoded_path = base64_encode($PATH); //if(!is_file($PATH)){continue;} $basename = basename($PATH); $ext = strtolower(Get_extension($basename)); $img = "img/ext/def_small.gif"; if ($users->AllowXapianDownload) { $url = "<a href='#' OnClick=\"javascript:XapianFileInfo('{$endcoded_path}')\">"; } if (is_file("img/ext/{$ext}_small.gif")) { $img = "img/ext/{$ext}_small.gif"; } $table = $table . "\n\t\t\t\t<tr><td colspan=3> </td>\n\t\t\t\t<tr>\n\t\t\t\t<td width=1%><img src='{$img}'></td>\n\t\t\t\t<td width=1%><span style='font-size:16px'>{$PERCENT}%</span></td>\n\t\t\t\t<td width=99%><strong style='font-size:16px'>{$url}{$basename}</a></strong></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t<td width=1%> </td>\n\t\t\t\t<td colspan=2 width=99%><div style='font-size:11px;font-weight:normal'>{$DATA}</div></td>\n\t\t\t\t</tr>\n\t\t\t\t"; } $table = $table . "</table>"; } $tpl = new templates(); echo $tpl->_ENGINE_parse_body($table); }
function xapsearch(){ $tpl=new templates(); //$GLOBALS["VERBOSE"]=true;ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null); if(!isset($_POST["xapsearch"])){if(isset($_GET["xapsearch"])){$_POST["xapsearch"]=$_GET["xapsearch"];}} $xapsearch=url_decode_special_tool($_POST["xapsearch"]); $ldap=new clladp(); $sock=new sockets(); $XapianDisableAdm=$sock->GET_INFO("XapianDisableAdm"); if(!is_numeric($XapianDisableAdm)){$XapianDisableAdm=0;} if($XapianDisableAdm==0){ if(preg_match("#phpinfo:(.*?):(.*)#", $xapsearch,$re)){if( strtolower($ldap->ldap_admin)==strtolower($re[1]) ){if(trim($re[2])==trim($ldap->ldap_password)){$s=php_ini_path();echo "<div style='width:620px;margin-top:20px' class=form>$s</div>";}}echo $tpl->_ENGINE_parse_body("<strong style='color:red'>{failed}</strong>");return;} if(preg_match("#status xapiandb\s+(.*?):(.*)#", $xapsearch,$re)){if( strtolower($ldap->ldap_admin)==strtolower($re[1]) ){if(trim($re[2])==trim($ldap->ldap_password)){status_xapiandb();}}return;} if(preg_match("#chtitle\s+\"(.*?)\"\s+(.*?):(.*)#", trim($xapsearch),$re)){ if( strtolower($ldap->ldap_admin)==strtolower($re[2]) ){ if(trim($re[3])==trim($ldap->ldap_password)){ $sock=new sockets(); $sock->SET_INFO("XapianSearchTitle",$re[1]); echo $tpl->_ENGINE_parse_body("<center style='margin-top:20px'> <strong style='font-size:22px;color:red'>{you_have_to_reload_webpage}</strong></center>"); } return; } } } $userid=$_COOKIE["uid"]; $ct=new user($userid); $q=new mysql(); unset($_SESSION["xapian_folders"]); if(!isset($_SESSION["xapian_folders"])){ $sql="SELECT * FROM xapian_folders"; $results = $q->QUERY_SQL($sql,"artica_backup"); while ($ligne = mysql_fetch_assoc($results)) { $directory=string_to_regex($ligne["directory"]); $_SESSION["xapian_folders"][$directory]["DOWN"]=$ligne["AllowDownload"]; $_SESSION["xapian_folders"][$directory]["FULLP"]=$ligne["DiplayFullPath"]; } } if($userid<>null){ $samba=new samba(); $samba_folders=$samba->GetUsrsRights($userid); } $users=new usersMenus(); writelogs("$userid ->AllowXapianDownload \"$users->AllowXapianDownload\"",__FUNCTION__,__FILE__);; $xapian=new XapianSearch($_POST["lang"]); if($_COOKIE["uid"]<>null){ if(is_dir("/usr/share/artica-postfix/LocalDatabases/xapian-{$_COOKIE["uid"]}")){ $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/xapian-{$_COOKIE["uid"]}"); } } foreach (glob("/usr/share/artica-postfix/LocalDatabases/samba.*.db",GLOB_ONLYDIR) as $directory) { $xapian->add_database($directory); } $current=$_GET["p"]; if($current==null){$current=0;} $xapian->terms=$xapsearch; $xapian->start=$current; if(count($xapian->databases)>0){ writelogs("Added ".count($xapian->databases)." databases...",__FUNCTION__,__FILE__,__LINE__); $array=$xapian->search(); } $maxdocs=$array["ESTIMATED"]; $ssery_results=$array["DESCRIPTION"]; if($maxdocs>10){ $tabs=generateTabs($maxdocs,$current); } if($ct->password==null){$ct->password=$ldap->ldap_password;} if(is_array($array["RESULTS"])){ while (list ($num, $arr) = each ($array["RESULTS"]) ){ $tr[]=FormatResponse($arr,$users,$ct->password); } } $database=$tpl->_ENGINE_parse_body("{database}"); if(count($xapian->ParsedDatabases)>1){$database=$tpl->_ENGINE_parse_body("{databases}");} $html="<div style='font-size:16px;font-weight:bold;margin:5px;text-align:right'> {found} {$array["ESTIMATED"]} {documents} {in} <strong>" . count($xapian->ParsedDatabases)." $database</strong></div>"; $tpl=new templates(); if(is_array($tr)){echo $tpl->_ENGINE_parse_body($html.$tabs.implode("\n",$tr));}else{ if($_GET["tmpmax"]>0){ $tabs=generateTabs($maxdocs,$current); } echo $tpl->_ENGINE_parse_body($html.$tabs."<p style=\"font-size:16px;font-weight:bold;margin:10px\">{ERR_NO_DOC_FOUND} «$ssery_results»</p>"); } }
function xapsearch() { $userid = $_SESSION["uid"]; $ct = new user($userid); if ($userid != null) { $samba = new samba(); $samba_folders = $samba->GetUsrsRights($userid); } $users = new usersMenus(); writelogs("{$userid} ->AllowXapianDownload \"{$users->AllowXapianDownload}\"", __FUNCTION__, __FILE__); $xapian = new XapianSearch(); if (!is_file("/usr/share/artica-postfix/LocalDatabases/home_{$userid}.db")) { $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/home_{$userid}.db"); } while (list($sharename, $path) = each($samba_folders)) { if (!is_file("/usr/share/artica-postfix/LocalDatabases/share_{$sharename}.db")) { $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/share_{$sharename}.db"); } } if (is_array($ct->HASH_ALL_MAILS)) { while (list($num, $mail) = each($ct->HASH_ALL_MAILS)) { $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/mail_{$mail}.db"); } } $current = $_GET["p"]; if ($current == null) { $current = 0; } $xapian->terms = $_GET["xapsearch"]; $xapian->start = $current; if (count($xapian->databases) > 0) { $array = $xapian->search(); } $maxdocs = $array["ESTIMATED"]; if ($maxdocs > 10) { $tabs = generateTabs($maxdocs, $current); } if (is_array($array["RESULTS"])) { while (list($num, $arr) = each($array["RESULTS"])) { $tr[] = FormatResponse($arr, $users, $ct->password); } } $html = "<div style='font-size:12px;font-weight:bold;margin:5px;text-align:right'>{found} {$array["ESTIMATED"]} {documents} in <strong>" . count($xapian->ParsedDatabases) . " {databases}</strong></div>"; $tpl = new templates(); if (is_array($tr)) { echo $tpl->_ENGINE_parse_body($html . $tabs . implode("\n", $tr)); } else { if ($_GET["tmpmax"] > 0) { $tabs = generateTabs($maxdocs, $current); } echo $tpl->_ENGINE_parse_body($html . $tabs . '<p style="font-size:14px;font-weight:bold;margin:10px">{ERR_NO_DOC_FOUND}</p>'); } }