示例#1
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>');
    }
}
示例#2
0
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}&nbsp;|&nbsp;{$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>&nbsp;</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%>&nbsp;</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("&laquo;{$XapianWords}&raquo;&nbsp;{$maxdocs} {results}", $table, 1, 0, 0, 0);
    $tpl->web_page = str_replace('LeftMenushide();', '', $tpl->web_page);
    echo $tpl->web_page;
}
示例#3
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>"); 
	
		}
	
	
}
示例#4
0
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}&nbsp;|&nbsp;{$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>&nbsp;</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%>&nbsp;</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);
}