22 include_once (
"FDL/Class.DocSearch.php");
23 include_once (
"FDL/Class.Dir.php");
24 include_once (
"FDL/Lib.Dir.php");
25 include_once (
"FDL/Class.QueryDir.php");
26 include_once (
"FDL/freedom_util.php");
30 $ifile = basename(
$name);
31 $te = explode(
".", $ifile);
38 print
"<h2>" . $msg .
"</h2>";
47 if (!extension_loaded(
'mnogosearch'))
search_error(
$action, _(
"mnogosearch php extension not loaded"));
49 $baseurl =
$action->GetParam(
"CORE_BASEURL");
50 $standurl =
$action->GetParam(
"CORE_STANDURL");
57 $adminstat[0][
"match"] = $s_match;
59 $adminstat[0][
"searchfor"] = $s_searchfor;
62 $action->lay->Set(
"classdoc", _(
" any familly"));
64 while (list($k, $cdoc) = each($tclassdoc)) {
65 if (
$famid == $cdoc[
"initid"])
$action->lay->Set(
"classdoc", $cdoc[
"title"]);
73 $action->parent->AddJsRef(
$action->GetParam(
"CORE_JSURL") .
"/subwindow.js");
74 $action->parent->AddJsRef(
$action->GetParam(
"CORE_JSURL") .
"/geometry.js");
76 $searchtitle = _(
"search for ") .
" : " .
$keyword .
", ";
77 if (
$fromdir) $searchtitle.= _(
" from current folder");
78 else $searchtitle.= _(
" from any folder");
79 $action->lay->Set(
"dirtitle", $searchtitle);
80 $action->lay->Set(
"dirid", $dirid);
82 $with_abstract =
false;
87 include_once (
"FDL/popup_util.php");
99 $s_db =
$action->GetParam(
"MNOGOSEARCH_DB",
"pgsql://anakeen@localhost/mnoGoSearch/");
100 $s_dbmode =
$action->GetParam(
"MNOGOSEARCH_DBMODE",
"crc");
102 $search_limit =
$action->GetParam(
"MNOGOSEARCH_SEARCHLIMIT",
"%/freedom/fs/%");
104 $udm_param = array();
106 $udm_param[UDM_PARAM_PAGE_NUM] = 0;
107 $udm_param[UDM_PARAM_TRACK_MODE] = UDM_TRACK_DISABLED;
108 $udm_param[UDM_PARAM_PAGE_SIZE] =
$action->GetParam(
"MNOGOSEARCH_RESULTBYPAGE", 1000);
109 $udm_param[UDM_PARAM_CACHE_MODE] =
$action->GetParam(
"MNOGOSEARCH_CACHE", UDM_CACHE_ENABLED);
110 $udm_param[UDM_PARAM_PHRASE_MODE] =
$action->GetParam(
"MNOGOSEARCH_PHRASE", UDM_PHRASE_ENABLED);
111 $udm_param[UDM_PARAM_CHARSET] =
$action->GetParam(
"MNOGOSEARCH_CHARSET",
"8859-1");
112 $udm_param[UDM_PARAM_STOPTABLE] =
$action->GetParam(
"MNOGOSEARCH_STOPTABLE",
"stopword");
114 $udm_param[UDM_PARAM_SEARCH_MODE] = $s_match;
116 $udm_param[UDM_PARAM_WORD_MATCH] = $s_searchfor;
118 $search = udm_alloc_agent($s_db, $s_dbmode);
121 while (list($k, $v) = each($udm_param)) {
122 if (!Udm_Set_Agent_Param($search, $k, $v)) {
123 $action->log->warn(
"Udm_Set_Agent_Param {$k} = {$v} returns an error");
127 Udm_Add_Search_Limit($search, UDM_LIMIT_URL, $search_limit);
128 $res = Udm_Find($search, urldecode(
$keyword));
129 if (Udm_Errno($search) > 0) {
133 $action->lay->Set(
"stime", Udm_Get_Res_Param($res, UDM_PARAM_SEARCHTIME));
134 $action->lay->Set(
"totalcnt", udm_get_doc_count($search));
135 $adminstat[0][
"infos"] = Udm_Get_Res_Param($res, UDM_PARAM_WORDINFO);
137 $found = Udm_Get_Res_Param($res, UDM_PARAM_FOUND);
138 $adminstat[0][
"ffound"] = $found;
139 $adminfile = array();
143 $rows = Udm_Get_Res_Param($res, UDM_PARAM_NUM_ROWS);
144 $adminstat[0][
"fviewed"] =
$rows;
145 for ($i = 0; $i <
$rows; $i++) {
146 $resurl = Udm_Get_Res_Field($res, $i, UDM_FIELD_URL);
147 $adminfile[$i][
"ix"] =
"";
148 $adminfile[$i][
"filename"] = $resurl;
153 $filter[] =
"values like '%|$idf'";
162 if (is_array(
$rq) && count(
$rq) > 0) {
163 while (count(
$rq) > 0 && list($kv, $vd) = each(
$rq)) {
164 $adminfile[$i][
"ix"].=
"[" . $vd[
"id"] .
"]";
165 if (!isset($doclist[$vd[
"id"]])) $doclist[$vd[
"id"]][
"fcnt"] = 0;
166 $x = $doclist[$vd[
"id"]][
"fcnt"];
167 $doclist[$vd[
"id"]][
"fcnt"]++;
169 $doclist[$vd[
"id"]][$x][
"file"] = $resurl;
170 $doclist[$vd[
"id"]][$x][
"idv"] = $idf;
171 $doclist[$vd[
"id"]][$x][
"size"] = Udm_Get_Res_Field($res, $i, UDM_FIELD_SIZE);
172 $doclist[$vd[
"id"]][$x][
"rate"] = Udm_Get_Res_Field($res, $i, UDM_FIELD_RATING);
173 $doclist[$vd[
"id"]][$x][
"modi"] = Udm_Get_Res_Field($res, $i, UDM_FIELD_MODIFIED);
181 Udm_Free_Agent($search);
185 $nbseedoc = $nbdoc = 0;
187 while (list($kd, $vd) = each($doclist)) {
195 if ($with_abstract)
$tdoc[$k][
"blockabstract"] =
"abstract_$k";
198 if (strlen(
$doc->title) > 20)
$tdoc[$k][
"abrvtitle"] = substr(
$doc->title, 0, 12) .
"... " . substr(
$doc->title, -5);
199 else $tdoc[$k][
"abrvtitle"] =
$doc->title;
202 $tdoc[$k][
"divid"] = $kdiv;
204 $tdoc[$k][
"locked"] =
"";
205 if (
$doc->isRevisable()) {
206 if ((
$doc->locked > 0) && (
$doc->locked ==
$action->parent->user->id))
$tdoc[$k][
"locked"] =
$action->GetIcon(
"clef1.gif",
N_(
"locked") , 20, 20);
207 else if (
$doc->locked > 0)
$tdoc[$k][
"locked"] =
$action->GetIcon(
"clef2.gif",
N_(
"locked") , 20, 20);
208 else if (
$doc->locked < 0)
$tdoc[$k][
"locked"] =
$action->GetIcon(
"nowrite.png",
N_(
"fixed") , 20, 20);
209 else if (
$doc->lmodify ==
"Y")
if (
$doc->doctype ==
'F')
$tdoc[$k][
"locked"] =
$action->GetIcon(
"changed2.gif",
N_(
"changed") , 20, 20);
223 if (
$doc->doctype ==
'F')
$tdoc[$k][
"revision"] =
$doc->revision;
224 else $tdoc[$k][
"revision"] =
"";
227 if (
$doc->classname ==
'Dir')
$tdoc[$k][
"isfld"] =
"true";
228 else $tdoc[$k][
"isfld"] =
"false";
230 if ($with_abstract) {
232 $query_val->basic_elem->sup_where = array(
237 $tablevalue = $query_val->Query();
239 $tableabstract = array();
241 for ($i = 0; $i < $query_val->nb; $i++) {
243 $lvalue = chop($tablevalue[$i]->value);
246 $oattr =
$doc->GetAttribute($tablevalue[$i]->attrid);
248 $tdoc[$k][$tablevalue[$i]->attrid] = $lvalue;
250 $tableabstract[$nbabs][
"name"] =
$action->text($oattr->labeltext);
251 $tableabstract[$nbabs][
"valid"] = $tablevalue[$i]->attrid;
252 switch ($oattr->type) {
255 $efile =
$doc->GetHtmlValue($oattr, $lvalue,
"finfo");
257 $tableabstract[$nbabs][
"value"] =
"<IMG align=\"absbottom\" width=\"30\" SRC=\"" . $efile .
"\">";
261 $tableabstract[$nbabs][
"value"] =
$doc->GetHtmlValue($oattr, $lvalue,
"finfo");
267 $action->lay->SetBlockData(
"abstract_$k", $tableabstract);
269 unset($tableabstract);
273 $rlay =
$action->GetLayoutFile(
"search_fulltext_result.xml");
276 for ($if = 0; $if < $vd[
"fcnt"]; $if++) {
277 $value = chop(
$doc->GetValue($vd[$if][
"attrid"]));
278 $filed[$if][
"imgsrc"] =
$doc->GetHtmlValue(
$doc->GetAttribute($vd[$if][
"attrid"]) ,
$value,
"_self",
"Y");
279 $filed[$if][
"rating"] = $vd[$if][
"rate"];
280 $filed[$if][
"date"] = strftime(
"%d/%m/%Y %H:%M", $vd[$if][
"modi"]);
282 $rlay->SetBlockData(
"ALLRESULT", $filed);
283 $tdoc[$k][
"SEARCHRESULT"] = $rlay->Gen();
287 $tdoc[$k][
"SEARCHRESULT"] =
"";
293 $tboo[0][
"boo"] =
"";
294 $action->lay->SetBlockData(
"VIEWPROP", $tboo);
295 $action->lay->Set(
"nbdiv", $kdiv - 1);
300 $licon->Set(
"nbdiv", $kdiv - 1);
301 $action->parent->AddJsCode($licon->gen());
304 $pagefolder[$startpage + 1] = $nbseedoc +
$start;
305 $action->Register(
"pagefolder", $pagefolder);
306 $action->lay->Set(
"next", $startpage + 1);
307 $action->lay->Set(
"prev", $startpage - 1);
308 $action->lay->Set(
"nbdoc", $nbdoc);
311 $action->lay->SetBlockData(
"ADMIN", $adminstat);
312 $action->lay->SetBlockData(
"ADMINFILES", $adminfile);