Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/plugin/search/server/www/search.php

272 lines
8.2 KiB

<?php
/**
* mnoGoSearch-php v.3.2.10
* for mnoGoSearch ( formely known as UdmSearch ) free web search engine
* (C) 2001 by Sergey Kartashoff <gluke@mail.ru>,
* mnoGoSearch Developers Team <devel@mnogosearch.org>
* @package chamilo.plugin.search
*/
/**
* Initialization
*/
if (!extension_loaded('mnogosearch')) {
print "<b>This script requires PHP4.3.0+ with mnoGoSearch extension</b>";
exit;
}
define("UDM_ENABLED", 1);
define("UDM_DISABLED", 0);
require ('./config.inc');
require ('./common.inc');
require ('./template.inc');
require ('./init.inc');
//api_block_anonymous_users();
//require ('filter_user.functions.php');
if ($lang_content_negotiation == 'yes') {
// path to template file ($lang_content_negotiation = 'yes')
// please refer to docs on this feature before using it.
$template_file = preg_replace("/\.php\.*/", ".xml.php", basename($SCRIPT_FILENAME));
$template_file = "./".$template_file;
} else {
// path to template file ($lang_content_negotiation = 'no')
$template_file = './search.xml.php';
}
// -----------------------------------------------
// M A I N
// -----------------------------------------------
if (!$cc) {
$XMLOutput = 1;
init();
if (!$have_query_flag) {
print_template('bottom');
return;
}
elseif ($have_query_flag && ($q == '')) {
print_template('noquery');
print_template('bottom');
return;
}
$res = udm_find($udm_agent, $q);
if (!$res) {
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);
//YW commented out because broke everything
//if (udm_api_version() >= 30231) {
// $wordinfo=Udm_Get_Agent_Param_Ex($udm_agent,'W');
//} else {
$wordinfo = udm_get_res_param($res, UDM_PARAM_WORDINFO_ALL);
//}
$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) {
$ws = '';
if ((udm_api_version() >= 30233) && ($suggest == 'yes')) {
$ws = udm_get_agent_param_ex($udm_agent, 'WS');
}
print_template('notfound');
print_template('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_template('restop');
$global_doc_res = $res;
$my_skip = 0;
for ($i = 0; $i < $rows; $i += 1) {
$excerpt_flag = 0;
$clonestr = '';
$rec_id = udm_get_res_field($res, $i, UDM_FIELD_URLID);
$global_res_position = $i;
if (udm_api_version() >= 30207) {
$origin_id = udm_get_res_field($res, $i, UDM_FIELD_ORIGINID);
if ($origin_id)
continue;
else {
for ($j = 0; $j < $rows; $j += 1) {
$cl_origin_id = udm_get_res_field($res, $j, UDM_FIELD_ORIGINID);
if (($cl_origin_id) && ($cl_origin_id == $rec_id)) {
$url = udm_get_res_field($res, $j, UDM_FIELD_URL);
//YW
/*if (!access_check($url)) {
$my_skip ++;
continue;
}*/
//YW
$contype = udm_get_res_field($res, $j, UDM_FIELD_CONTENT);
$docsize = udm_get_res_field($res, $j, UDM_FIELD_SIZE);
$lastmod = format_lastmod(udm_get_res_field($res, $j, UDM_FIELD_MODIFIED));
if (udm_api_version() >= 30207) {
$pop_rank = udm_get_res_field($res, $i, UDM_FIELD_POP_RANK);
} else
$pop_rank = '';
$clonestr .= print_template('clone', 0)."\n";
}
}
}
}
if (udm_api_version() >= 30204) {
$excerpt_flag = udm_make_excerpt($udm_agent, $res, $i);
}
//YW
/*
$ndoc = udm_get_res_field($res, $i, UDM_FIELD_ORDER) - $my_skip;
*/
//YW
$rating = udm_get_res_field($res, $i, UDM_FIELD_RATING);
$url = udm_get_res_field($res, $i, UDM_FIELD_URL);
//YW
/*
if (!access_check($url)) {
$my_skip ++;
continue;
}*/
//YW
$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));
$title = udm_get_res_field($res, $i, UDM_FIELD_TITLE);
$title = ($title) ? htmlspecialchars($title) : basename($url);
$title = ParseDocText($title);
$text = ParseDocText(htmlspecialchars(udm_get_res_field($res, $i, UDM_FIELD_TEXT)));
//$text=ParseDocText(htmlspecialchars(udm_get_res_field_ex($res,$i,"Body")));
$keyw = ParseDocText(htmlspecialchars(udm_get_res_field($res, $i, UDM_FIELD_KEYWORDS)));
$desc = ParseDocText(htmlspecialchars(udm_get_res_field($res, $i, UDM_FIELD_DESC)));
$crc = udm_get_res_field($res, $i, UDM_FIELD_CRC);
if (udm_api_version() >= 30203) {
$doclang = udm_get_res_field($res, $i, UDM_FIELD_LANG);
$doccharset = udm_get_res_field($res, $i, UDM_FIELD_CHARSET);
}
if ($phpver >= 40006) {
$category = udm_get_res_field($res, $i, UDM_FIELD_CATEGORY);
} else {
$category = '';
}
reset($alias_arr);
$save_url = $url;
while (list ($t_alias, $t_url) = each($alias_arr)) {
$url = str_replace($t_alias, $t_url, $url);
}
if (udm_api_version() <= 30223) {
if (udm_api_version() >= 30204) {
if ($excerpt_flag) {
if (udm_api_version() >= 30216) {
if (udm_get_res_field_ex($res, $i, "CachedCopy") != '') {
$stored_href = "$self?cc=1"."&url=".urlencode($save_url)."&q=".urlencode($query_orig);
}
}
elseif (udm_api_version() >= 30211) {
$stored_href = "$storedocurl?rec_id=".udm_hash32($udm_agent, $save_url)."&DM=".urlencode($lastmod)."&DS=$docsize"."&L=$doclang"."&CS=$doccharset"."&DU=".urlencode($save_url)."&CT=".urlencode($contype)."&q=".urlencode($query_orig);
} else {
$stored_href = "$storedocurl?rec_id=".udm_CRC32($udm_agent, $save_url)."&DM=".urlencode($lastmod)."&DS=$docsize"."&L=$doclang"."&CS=$doccharset"."&DU=".urlencode($save_url)."&CT=".urlencode($contype)."&q=".urlencode($query_orig);
}
if ($stored_href != '')
$storedstr = print_template('stored', 0);
} else
$storedstr = '';
} else
$storedstr = '';
} else {
if (udm_get_res_field_ex($res, $i, "CachedCopy") != '') {
if (udm_get_res_field_ex($res, $i, "dbnum") == '') {
$stored_href = "$self?cc=1"."&url=".urlencode($save_url)."&q=".urlencode($query_orig);
} else {
$stored_href = "$self?cc=1"."&dbnum=".udm_get_res_field_ex($res, $i, "dbnum")."&url=".urlencode($save_url)."&q=".urlencode($query_orig);
}
$storedstr = print_template('stored', 0);
}
}
$sitelimitstr = $persite = '';
if ((udm_api_version() >= 30207) && ($groupbysite == 'yes')) {
if (!$site) {
$sitelimit_href = "$PHP_SELF?$QUERY_STRING";
$sitelimit_href = preg_replace("/\&np=\d*/", '', $sitelimit_href);
$sitelimit_href .= "&np=0&site=".udm_get_res_field($res, $i, UDM_FIELD_SITEID);
$persite = udm_get_res_field_ex($res, $i, "PerSite");
$sitelimitstr = print_template('site_limit', 0);
}
}
if (udm_api_version() >= 30207) {
$pop_rank = udm_get_res_field($res, $i, UDM_FIELD_POP_RANK);
} else
$pop_rank = '';
if ((substr($url, 0, 6) == "ftp://") && ($templates['ftpres'][0] != '')) {
print_template('ftpres');
}
elseif (((substr($url, 0, 7) == "http://") || (substr($url, 0, 8) == "https://")) && ($templates['httpres'][0] != '')) {
print_template('httpres');
} else {
print_template('res');
}
}
$global_doc_res = '';
print_template('resbot');
print_template('bottom');
// Free result
udm_free_res($res);
}
} else {
/* show cached copy */
init_cc();
$res = udm_store_doc_cgi($udm_agent);
$id = udm_get_agent_param_ex($udm_agent, 'ID');
$last_modified = udm_get_agent_param_ex($udm_agent, 'Last-Modified');
$content = udm_get_agent_param_ex($udm_agent, 'Content-Type');
$length = udm_get_agent_param_ex($udm_agent, 'Content-Length');
$charset = udm_get_agent_param_ex($udm_agent, 'Charset');
Header("Content-Type: text/html; charset=$charset");
print_template('storedoc_top');
if ($res) {
$document = ParseDocText(udm_get_agent_param_ex($udm_agent, 'document'));
print_template('storedoc');
}
print_template('storedoc_bottom');
}
udm_free_agent($udm_agent);
?>