Esempio n. 1
0
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} &laquo;$ssery_results&raquo;</p>"); 
	
		}
	
	
}
Esempio n. 2
0
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>');
    }
}