• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

classes/class.ilSearchGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 
00024 require_once "./classes/class.ilSearch.php";
00025 require_once "./classes/class.ilTableGUI.php";
00026 require_once "./classes/class.ilSearchGUIExplorer.php";
00027 require_once "./classes/class.ilSearchFolder.php";
00028 
00037 class ilSearchGUI
00038 {
00044         var $ilias;
00045 
00051         var $search;
00052         var $tpl;
00053         var $lng;
00054         var $tree;
00055 
00056         // TABLE VARS
00057         var $res_type;
00058         var $offset;
00059         var $sort_by;
00060         var $sort_order;
00061 
00062         var $user_id;
00063         var $folder_id;
00064         var $folder_obj;
00065         var $viewmode;
00066 
00067         var $message;
00068 
00073         function ilSearchGUI($a_user_id = 0)
00074         {
00075                 global $ilias,$tpl,$lng;
00076 
00077                 // DEFINE SOME CONSTANTS
00078                 #define("RESULT_LIMIT",$ilias->account->getPref("hits_per_page") ? $ilias->account->getPref("hits_per_page") : 3);
00079                 define("RESULT_LIMIT",10);
00080                 // Initiate variables
00081                 $this->ilias    =& $ilias;
00082                 $this->tpl              =& $tpl;
00083                 $this->lng              =& $lng;
00084                 $this->lng->loadLanguageModule("search");
00085 
00086 
00087                 $this->folder_id  = $_GET["folder_id"];
00088                 $this->res_type   = $_GET["res_type"];
00089                 $this->offset     = $_GET["offset"];
00090                 $this->sort_by    = $_GET["sort_by"];
00091                 $this->sort_order = $_GET["sort_order"];
00092                 
00093                 $this->setFolderId($_GET["folder_id"]);
00094                 $this->setViewmode($_GET["viewmode"]);
00095 
00096                 $this->setUserId($a_user_id);
00097 
00098                 // INITIATE SEARCH OBJECT
00099                 $this->search =& new ilSearch($a_user_id,true);
00100                 $this->tree = new ilTree(1);
00101 
00102                 // INITIATE SEARCH FOLDER OBJECT
00103                 $this->folder_obj =& new ilSearchFolder($a_user_id);
00104 
00105                 $this->performAction();
00106         }
00107 
00108         function performAction()
00109         {
00110                 if(isset($_POST["cmd"]["search"]))
00111                 {
00112                         $this->search();
00113                         return true;
00114                 }
00115                 if(isset($_POST["cmd"]["search_res"]))
00116                 {
00117                         $this->searchInResult();
00118                         return true;
00119                 }
00120                 if(!isset($_POST["cmd"]))
00121                 {
00122                         $this->__show();
00123                         return true;
00124                 }
00125 
00126                 // cmd is dbk_content or dbk_meta or lm_content or lm_meta or grp_ or usr
00127                 $this->__saveResult();
00128                 $this->__show();
00129 
00130                 return true;
00131         }
00132 
00133         // SET/GET
00134         function setUserId($a_user_id)
00135         {
00136                 $this->user_id = $a_user_id;
00137         }
00138         function getUserId()
00139         {
00140                 return $this->user_id;
00141         }
00142 
00143         function setFolderId($a_folder_id)
00144         {
00145                 $this->folder_id = $a_folder_id ? $a_folder_id : 1;
00146         }
00147         function getFolderId()
00148         {
00149                 return $this->folder_id;
00150         }
00151         function setViewmode($a_viewmode)
00152         {
00153                 switch($a_viewmode)
00154                 {
00155                         case "flat":
00156                                 $this->viewmode = "flat";
00157                                 $_SESSION["s_viewmode"] = "flat";
00158                                 break;
00159 
00160                         case "tree":
00161                                 $this->viewmode = "tree";
00162                                 $_SESSION["s_viewmode"] = "tree";
00163                                 break;
00164                                 
00165                         default:
00166                                 $this->viewmode = $_SESSION["s_viewmode"] ? $_SESSION["s_viewmode"] : "flat";
00167                                 break;
00168                 }
00169         }
00170         function getViewmode()
00171         {
00172                 return $this->viewmode;
00173         }
00174 
00175         function search($a_search_type = 'new')
00176         {
00177                 global $ilBench;
00178 
00179                 $ilBench->start("Search", "search");
00180                 $this->search->setSearchString($_POST["search_str"]);
00181                 $this->search->setCombination($_POST["combination"]);
00182                 $this->search->setSearchFor($_POST["search_for"]);
00183                 $this->search->setSearchIn($_POST["search_in"]);
00184                 $this->search->setSearchType($a_search_type);
00185                 if($this->search->validate($this->message))
00186                 {
00187                         $this->search->performSearch();
00188                 }
00189                 // TEMP MESSAGE
00190                 $this->offset = 0;
00191                 $this->__show();
00192                 $ilBench->stop("Search", "search");
00193         }
00194 
00195         function searchInResult()
00196         {
00197                 $this->search("result");
00198         }
00199 
00200         // PRIVATE METHODS
00201         function __getFolderSelect($a_type,$a_search_in_type = '')
00202         {
00203                 $subtree = $this->folder_obj->getSubtree();
00204 
00205                 $options[0] = $this->lng->txt("search_select_one_folder_select");
00206                 $options[$this->folder_obj->getRootId()] = $this->lng->txt("search_save_as_select")." ".$this->lng->txt("search_search_results");
00207                 
00208                 foreach($subtree as $node)
00209                 {
00210                         if($node["obj_id"] == $this->folder_obj->getRootId())
00211                         {
00212                                 continue;
00213                         }
00214                         // CREATE PREFIX
00215                         $prefix = $this->lng->txt("search_save_as_select");
00216                         for($i = 1; $i < $node["depth"];++$i)
00217                         {
00218                                 $prefix .= "&nbsp;&nbsp;";
00219                         }
00220                         $options[$node["obj_id"]] = $prefix.$node["title"];
00221                 }
00222                 return $select_str = ilUtil::formSelect(0,$a_type."_".$a_search_in_type,$options,false,true);
00223         }
00224 
00225         function __showResult()
00226         {
00227                 global $ilBench;
00228 
00229                 $ilBench->start("Search", "showResult");
00230 
00231                 if(!$this->search->getNumberOfResults() && $this->search->getSearchFor())
00232                 {
00233                         $this->message .= $this->lng->txt("search_no_match")."<br />";
00234                         return false;
00235                 }
00236                 if($this->search->getResultByType("usr") and ( !$this->res_type or $this->res_type == 'usr'))
00237                 {
00238                         $this->__showResultTable("usr");
00239                 }
00240                 if($this->search->getResultByType("grp") and ( !$this->res_type or $this->res_type == 'grp'))
00241                 {
00242                         $this->__showResultTable("grp");
00243                 }
00244                 if($res = $this->search->getResultByType("dbk") and ( !$this->res_type or $this->res_type == 'dbk'))
00245                 {
00246                         if(count($res["meta"]))
00247                         {
00248                                 $this->__showResultTable("dbk","meta");
00249                         }
00250                         if(count($res["content"]))
00251                         {
00252                                 $this->__showResultTable("dbk","content");
00253                         }
00254                 }
00255                 if($res = $this->search->getResultByType("lm") and ( !$this->res_type or $this->res_type == 'lm'))
00256                 {
00257                         if(count($res["meta"]))
00258                         {
00259                                 $this->__showResultTable("lm","meta");
00260                         }
00261                         if(count($res["content"]))
00262                         {
00263                                 $ilBench->start("Search", "showResultTable_lm_content");
00264                                 $this->__showResultTable("lm","content");$ilBench->start("Search", "showResultTable_lm_content");
00265                                 $ilBench->stop("Search", "showResultTable_lm_content");
00266                         }
00267                 }
00268 
00269                 $ilBench->stop("Search", "showResult");
00270 
00271         }
00272 
00273         function __addAction(&$tpl,$a_type,$a_search_in_type = '')
00274         {
00275                 $tpl->setCurrentBlock("tbl_form_header");
00276                 $tpl->setVariable("FORMACTION","search.php");
00277                 $tpl->parseCurrentBlock();
00278 
00279                 $tpl->setCurrentBlock("tbl_action_select");
00280                 $tpl->setVariable("SELECT_ACTION",$this->__getFolderSelect($a_type,$a_search_in_type));
00281                 $tpl->setVariable("BTN_NAME",$a_type."_".$a_search_in_type);
00282                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("ok"));
00283                 $tpl->parseCurrentBlock();
00284 
00285                 $tpl->setCurrentBlock("tbl_action_row");
00286                 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00287                 $tpl->setVariable("COLUMN_COUNTS",5);
00288                 //$tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00289                 $tpl->parseCurrentBlock();
00290         }
00291 
00292         function __showResultTable($a_type, $a_search_in_type = '')
00293         {
00294                 global $ilBench;
00295 
00296                 // FOR ALL TYPES
00297                 $tbl = new ilTableGUI(0,false);
00298 
00299                 #$tpl =& new ilTemplate ("tpl.table.html", true, true);
00300 
00301                 #$tpl->addBlockFile(strtoupper($a_type),$a_type,"tpl.table.html");
00302 
00303                 $this->__addAction($tbl->getTemplateObject(),$a_type,$a_search_in_type);
00304 
00305                 // SWITCH 'usr','dbk','lm','grp'
00306                 switch($a_type)
00307                 {
00308                         case "usr":
00309                                 $ilBench->start("Search", "showResultTable_usr");
00310                                 $tbl->setTitle($this->lng->txt("search_user"),"icon_usr_b.gif",$this->lng->txt("search_user"));
00311                                 $tbl->setHeaderNames(array("",$this->lng->txt("login"),$this->lng->txt("firstname")
00312                                                                                    ,$this->lng->txt("lastname"),$this->lng->txt("search_show_result")));
00313                                 $tbl->setHeaderVars(array("","login","firstname","lastname",""),array("res_type" => "usr"));
00314                                 $tbl->setColumnWidth(array("3%","25%","25%","25%","25%"));
00315                                 $tbl->setData(array_values($this->__formatUserResult($this->search->getResultByType("usr"))));
00316                                 $ilBench->stop("Search", "showResultTable_usr");
00317                                 break;
00318 
00319                         case "grp":
00320                                 $ilBench->start("Search", "showResultTable_grp");
00321                                 $tbl->setTitle($this->lng->txt("search_group"),"icon_grp_b.gif",$this->lng->txt("search_group"));
00322                                 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("description"),
00323                                                                                    $this->lng->txt("search_show_result")));
00324                                 $tbl->setHeaderVars(array("","title","description",""),array("res_type" => "grp"));
00325                                 $tbl->setColumnWidth(array("3%","25%","25%","22%"));
00326                                 $tbl->setData(array_values($this->__formatGroupResult($this->search->getResultByType("grp"))));
00327                                 $ilBench->stop("Search", "showResultTable_grp");
00328                                 break;
00329 
00330 
00331                         case "dbk":
00332                                 // SWITCH 'meta','content'
00333                                 switch($a_search_in_type)
00334                                 {
00335                                         case "meta":
00336                                                 $ilBench->start("Search", "showResultTable_dbk_meta");
00337                                                 $tbl->setTitle($this->lng->txt("search_dbk_meta"),"icon_dbk_b.gif",$this->lng->txt("search_dbk_meta"));
00338                                                 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("context"),
00339                                                                                                    $this->lng->txt("search_show_result")));
00340                                                 $tbl->setHeaderVars(array("","title","context",""),array("res_type" => "dbk"));
00341 
00342                                                 $tbl->setColumnWidth(array("3%","50%","30%","17%"));
00343 
00344                                                 $tmp_res = $this->search->getResultByType("dbk");
00345                                                 $tbl->setData($this->__formatDigiLibResult($tmp_res["meta"],"meta"));
00346                                                 $ilBench->stop("Search", "showResultTable_dbk_meta");
00347                                                 break;
00348 
00349                                         case "content":
00350                                                 $ilBench->start("Search", "showResultTable_dbk_content");
00351                                                 $tbl->setTitle($this->lng->txt("search_dbk_content"),"icon_dbk_b.gif",$this->lng->txt("search_dbk_content"));
00352                                                 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("page"),$this->lng->txt("context"),
00353                                                                                                    $this->lng->txt("search_show_result")));
00354                                                 $tbl->setHeaderVars(array("","title","page","context",""),array("res_type" => "dbk"));
00355 
00356                                                 $tbl->setColumnWidth(array("3%","30%","20%","30%","17%"));
00357 
00358                                                 $tmp_res = $this->search->getResultByType("dbk");
00359                                                 $tbl->setData($this->__formatDigiLibResult($tmp_res["content"],"content"));
00360                                                 $ilBench->stop("Search", "showResultTable_dbk_content");
00361                                                 break;
00362                                 }
00363                                 break;
00364 
00365                         case "lm":
00366 
00367                                 // SWITCH 'meta','content'
00368                                 switch($a_search_in_type)
00369                                 {
00370                                         case "meta":
00371                                                 $ilBench->start("Search", "showResultTable_lm_meta");
00372                                                 $tbl->setTitle($this->lng->txt("search_lm_meta"),"icon_lm_b.gif",$this->lng->txt("search_lm_meta"));
00373                                                 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("context"),
00374                                                                                                    $this->lng->txt("search_show_result")));
00375                                                 $tbl->setHeaderVars(array("","title","context",""),array("res_type" => "lm"));
00376 
00377                                                 $tbl->setColumnWidth(array("3%","50%","30%","17%"));
00378 
00379                                                 $tmp_res = $this->search->getResultByType("lm");
00380                                                 $tbl->setData($this->__formatLearningModuleResult($tmp_res["meta"],"meta"));
00381                                                 $ilBench->stop("Search", "showResultTable_lm_meta");
00382                                                 break;
00383 
00384                                         case "content":
00385                                                 $ilBench->start("Search", "showResultTable_lm_content");
00386                                                 $tbl->setTitle($this->lng->txt("search_lm_content"),"icon_lm_b.gif",$this->lng->txt("search_lm_content"));
00387                                                 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("page"),$this->lng->txt("context"),
00388                                                                                                    $this->lng->txt("search_show_result")));
00389                                                 $tbl->setHeaderVars(array("","title","page","context",""),array("res_type" => "lm"));
00390 
00391                                                 $tbl->setColumnWidth(array("3%","30%","20%","30%","17%"));
00392 
00393                                                 $tmp_res = $this->search->getResultByType("lm");
00394                                                 $tbl->setData($this->__formatLearningModuleResult($tmp_res["content"],"content"));
00395                                                 $ilBench->stop("Search", "showResultTable_lm_content");
00396                                                 break;
00397                                 }
00398                                 break;
00399                 }
00400                 $tbl->setOrderColumn($this->sort_by);
00401                 $tbl->setOrderDirection($this->sort_order);
00402                 $tbl->disable("sort");
00403                 $tbl->setLimit(RESULT_LIMIT);
00404                 $tbl->setOffset($this->offset);
00405                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00406                 #$tpl->setVariable(strtoupper($a_type),$tbl->render());
00407 
00408                 #$tbl->setTemplate($tpl);
00409                 $tbl->render();
00410                 $this->tpl->setVariable(strtoupper($a_type), $tbl->tpl->get());
00411                 unset($tbl);
00412         }
00413 
00414         function __show()
00415         {
00416                 // SHOW SEARCH PAGE
00417                 $this->tpl->addBlockFile("CONTENT","content","tpl.search.html");
00418                 $this->tpl->addBlockFile("STATUSLINE","statusline","tpl.statusline.html");
00419                 infoPanel();
00420                 $this->tpl->setVariable("SEARCH_ACTION","./search.php");
00421 
00422                 #$this->tpl->setVariable("TXT_SEARCH",$this->lng->txt("search"));
00423 
00424                 $this->__showHeader();
00425                 $this->__showLocator();
00426                 $this->__showTabs();
00427                 $this->__showResult();
00428 
00429                 if($this->message)
00430                 {
00431                         sendInfo($this->message);
00432                 }
00433 
00434                 $this->tpl->setVariable("FORM_SEARCH_STR",$this->search->getSearchString());
00435                 $this->tpl->setVariable("OR_CHECKED",$this->search->getCombination() == "or" ? "checked=\"checked\"" : "");
00436                 $this->tpl->setVariable("AND_CHECKED",$this->search->getCombination() == "and" ? "checked=\"checked\"" : "");
00437         $this->tpl->setVariable("TXT_AND",$this->lng->txt("search_and"));
00438         $this->tpl->setVariable("TXT_OR",$this->lng->txt("search_or"));
00439 
00440                 $search_for = $this->search->getSearchFor();
00441 
00442                 $this->tpl->setVariable("LM_CHECKED",in_array("lm",$search_for) ? "checked=\"checked\"" : "");
00443                 $this->tpl->setVariable("DBK_CHECKED",in_array("dbk",$search_for) ? "checked=\"checked\"" : "");
00444 
00445                 // hide options if user is not logged in
00446                 if ($this->ilias->account->getId() != ANONYMOUS_USER_ID)
00447                 {
00448                         $this->tpl->setVariable("USR_CHECKED",in_array("usr",$search_for) ? "checked=\"checked\"" : "");
00449                         $this->tpl->setVariable("GRP_CHECKED",in_array("grp",$search_for) ? "checked=\"checked\"" : "");
00450                 }
00451 
00452                 $search_in = array("meta" => $this->lng->txt("search_meta"),"content" => $this->lng->txt("search_content"));
00453 
00454                 $this->tpl->setVariable("LM_SELECT",ilUtil::formSelect($this->search->getSearchInByType("lm")
00455                                                                                                                            ,"search_in[lm]",$search_in,false,true));
00456                 $this->tpl->setVariable("DBK_SELECT",ilUtil::formSelect($this->search->getSearchInByType("dbk")
00457                                                                                                                                 ,"search_in[dbk]",$search_in,false,true));
00458                 // TABLE TEXT
00459                 // hide options if user is not logged in
00460                 $this->tpl->setVariable("TXT_LM",$this->lng->txt("obj_lm"));
00461                 $this->tpl->setVariable("TXT_DBK",$this->lng->txt("obj_dbk"));
00462 
00463                 if ($this->ilias->account->getId() != ANONYMOUS_USER_ID)
00464                 {
00465                         $this->tpl->setVariable("TXT_USER",$this->lng->txt("obj_usr"));
00466                         $this->tpl->setVariable("TXT_GROUPS",$this->lng->txt("obj_grp"));
00467                 }
00468 
00469                 // TEXT VARIABLES
00470                 $this->tpl->setVariable("TXT_SEARCHTERM",$this->lng->txt("search_search_term"));
00471                 $this->tpl->setVariable("TXT_CONCATENATION",$this->lng->txt("search_concatenation"));
00472                 $this->tpl->setVariable("TXT_SEARCH_FOR",$this->lng->txt("search_search_for"));
00473 
00474                 // BUTTONS
00475                 $this->tpl->setVariable("BTN_SEARCH",$this->lng->txt("search"));
00476                 $this->tpl->setVariable("BTN_SEARCH_RESULT",$this->lng->txt("search_in_result"));
00477         }
00478 
00479         function __showHeader()
00480         {
00481                 if($this->getFolderId() == $this->folder_obj->getRootId())
00482                 {
00483                         $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("search"));
00484                 }
00485                 else
00486                 {
00487                         // TODO SHOW TITLE OF SEARCH RESULT
00488                 }
00489         }
00490 
00491         function __showLocator()
00492         {
00493                 $this->tpl->addBlockFile("LOCATOR","locator","tpl.locator.html");
00494 
00495 
00496                 $this->tpl->setCurrentBlock("locator_item");
00497                 $this->tpl->setVariable("LINK_ITEM","./search.php");
00498                 $this->tpl->setVariable("LINK_TARGET", ilFrameTargetInfo::_getFrame("MainContent"));
00499                 $this->tpl->setVariable("ITEM",$this->lng->txt("mail_search_word"));
00500                 $this->tpl->parseCurrentBlock();
00501 
00502                 $this->tpl->setCurrentBlock("locator");
00503                 $this->tpl->setVariable("TXT_LOCATOR",$this->lng->txt("locator"));
00504                 $this->tpl->parseCurrentBlock();
00505 
00506         }
00507                 
00508         function __showTabs()
00509         {
00510                 $this->tpl->addBlockFile("TABS","tabs","tpl.tabs.html");
00511 
00512                 // SEARCH ADMINISTRATION
00513                 $this->tpl->setCurrentBlock("tab");
00514                 $this->tpl->setVariable("TAB_TYPE","tabinactive");
00515                 $this->tpl->setVariable("TAB_LINK","search_administration.php");
00516                 $this->tpl->setVariable("TAB_TEXT",$this->lng->txt("search_search_results"));
00517                 $this->tpl->parseCurrentBlock();
00518 
00519                 if($this->res_type)
00520                 {
00521                         $this->tpl->setCurrentBlock("tab");
00522                         $this->tpl->setVariable("TAB_TYPE","tabinactive");
00523                         $this->tpl->setVariable("TAB_LINK","search.php");
00524                         $this->tpl->setVariable("TAB_TEXT",$this->lng->txt("search_all_results"));
00525                         $this->tpl->parseCurrentBlock();
00526                 }
00527 
00528                 return true;
00529         }
00530         function __formatLink($a_link,$a_target)
00531         {
00532                 return "<a href=\"".$a_link."\" target=\"".$a_target."\".>".$this->lng->txt("search_show_result");
00533         }
00534 
00535         function __formatUserResult($a_res)
00536         {
00537                 if(!is_array($a_res))
00538                 {
00539                         return array();
00540                 }
00541                 include_once "./classes/class.ilObjectFactory.php";
00542 
00543                 $counter = 0;
00544                 foreach($a_res as $user)
00545                 {
00546                         if($counter < $this->offset or $counter >= $this->offset + RESULT_LIMIT)
00547                         {
00548                                 ++$counter;
00549                                 $f_result[$counter] = array();
00550                                 continue;
00551                         }
00552 
00553                         if(!ilObjectFactory::ObjectIdExists($user["id"]))
00554                         {
00555                                 ++$counter;
00556                                 continue;
00557                         }
00558                         $tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"]);
00559                         
00560                         $f_result[$counter][]   = ilUtil::formCheckbox(0,"usr[]",$counter);
00561                         $f_result[$counter][]   = $tmp_obj->getLogin();
00562                         $f_result[$counter][]   = $tmp_obj->getFirstname();
00563                         $f_result[$counter][]   = $tmp_obj->getLastname();
00564 
00565                         list($user["link"],$user["target"]) = ilObjUser::_getLinkToObject($user["id"]);
00566                         $f_result[$counter][]   = $this->__formatLink($user["link"],$user["target"]);
00567 
00568                         unset($tmp_obj);
00569                         ++$counter;
00570                 }
00571                 return $f_result ? $f_result : array();
00572         }
00573 
00574         function __formatGroupResult($a_res)
00575         {
00576                 if(!is_array($a_res))
00577                 {
00578                         return array();
00579                 }
00580                 include_once "./classes/class.ilObjectFactory.php";
00581 
00582                 $counter = 0;
00583                 foreach($a_res as $group)
00584                 {
00585                         if($counter < $this->offset or $counter >= $this->offset + RESULT_LIMIT)
00586                         {
00587                                 ++$counter;
00588                                 $f_result[$counter] = array();
00589                                 continue;
00590                         }
00591 
00592                         if(!$this->tree->isInTree($group["id"]))
00593                         {
00594                                 ++$counter;
00595                                 continue;
00596                         }
00597                         $tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"]);
00598                         
00599                         $f_result[$counter][]   = ilUtil::formCheckbox(0,"grp[]",$counter);
00600                         $f_result[$counter][]   = $tmp_obj->getTitle();
00601                         $f_result[$counter][]   = $tmp_obj->getDescription();
00602 
00603                         list($group["link"],$group["target"]) = ilObjGroup::_getLinkToObject($group["id"]);
00604                         $f_result[$counter][]   = $this->__formatLink($group["link"],$group["target"]);
00605 
00606                         unset($tmp_obj);
00607                         ++$counter;
00608                 }
00609                 return $f_result ? $f_result : array();
00610         }
00611 
00612         function __formatDigiLibResult($a_res,$a_search_in)
00613         {
00614                 if(!is_array($a_res))
00615                 {
00616                         return array();
00617                 }
00618                 include_once "./classes/class.ilObjectFactory.php";
00619 
00620                 $counter = 0;
00621                 foreach($a_res as $book)
00622                 {
00623                         if($counter < $this->offset or $counter >= $this->offset + RESULT_LIMIT)
00624                         {
00625                                 ++$counter;
00626                                 $f_result[$counter] = array();
00627                                 continue;
00628                         }
00629 
00630                         if(!$this->tree->isInTree($book["id"]))
00631                         {
00632                                 ++$counter;
00633                                 continue;
00634                         }
00635                         $tmp_obj = ilObjectFactory::getInstanceByRefId($book["id"]);
00636                         switch($a_search_in)
00637                         {
00638                                 case "meta":
00639                                         $f_result[$counter][]           = ilUtil::formCheckbox(0,"dbk[meta][]",$counter);
00640                                         $f_result[$counter][]           = $tmp_obj->getTitle();
00641                                         $f_result[$counter][]           = $this->__getContextPath($book["id"]);
00642 
00643                                         include_once "./content/classes/class.ilObjDlBook.php";
00644                                         list($book["link"],$book["target"]) = ilObjDlBook::_getLinkToObject($book["id"],"meta");
00645                                         $f_result[$counter][] = $this->__formatLink($book["link"],$book["target"]);
00646 
00647                                         break;
00648 
00649                                 case "content":
00650                                         // GET INSTANCE OF PAGE OBJECT
00651                                         include_once ("content/classes/class.ilLMObjectFactory.php");
00652 
00653                                         $tmp_page_obj = ilLMObjectFactory::getInstance($tmp_obj, $book["page_id"]);
00654                                         if(!is_object($tmp_page_obj))
00655                                         {
00656                                                 ++$counter;
00657                                                 continue;
00658                                         }
00659                                         $tmp_page_obj->setLMId($book["id"]);
00660 
00661                                         $f_result[$counter][]           = ilUtil::formCheckbox(0,"dbk[content][]",$counter);
00662                                         $f_result[$counter][]           = $tmp_obj->getTitle();
00663                                         //$f_result[$counter][] = $tmp_page_obj->getPresentationTitle();
00664                                         $f_result[$counter][] =
00665                                                 ilLMPageObject::_getPresentationTitle($book["page_id"],$tmp_obj->getPageHeader());
00666                                         $f_result[$counter][]           = $this->__getContextPath($book["id"]);
00667 
00668                                         include_once "./content/classes/class.ilObjDlBook.php";
00669                                         list($book["link"],$book["target"]) = ilObjDlBook::_getLinkToObject($book["id"],"content",$book["page_id"]);
00670 
00671                                         $f_result[$counter][] = $this->__formatLink($book["link"],$book["target"]);
00672 
00673                                         unset($tmp_page_obj);
00674                                         break;
00675                         }
00676                         unset($tmp_obj);
00677                         ++$counter;
00678                 }
00679 
00680                 return $f_result ? $f_result : array();
00681         }
00682 
00683         function __formatLearningModuleResult($a_res,$a_search_in)
00684         {
00685                 if(!is_array($a_res))
00686                 {
00687                         return array();
00688                 }
00689                 include_once "./classes/class.ilObjectFactory.php";
00690 
00691                 $counter = 0;
00692                 foreach($a_res as $book)
00693                 {
00694                         if($counter < $this->offset or $counter >= $this->offset + RESULT_LIMIT)
00695                         {
00696                                 ++$counter;
00697                                 $f_result[$counter] = array();
00698                                 continue;
00699                         }
00700 
00701                         if(!$this->tree->isInTree($book["id"]))
00702                         {
00703                                 ++$counter;
00704                                 continue;
00705                         }
00706                         $tmp_obj = ilObjectFactory::getInstanceByRefId($book["id"]);
00707                         switch($a_search_in)
00708                         {
00709                                 case "meta":
00710                                         $f_result[$counter][]           = ilUtil::formCheckbox(0,"lm[meta][]",$counter);
00711                                         $f_result[$counter][]           = $tmp_obj->getTitle();
00712                                         $f_result[$counter][]           = $this->__getContextPath($book["id"]);
00713 
00714                                         include_once "./content/classes/class.ilObjContentObject.php";
00715 
00716                                         list($book["link"],$book["target"]) = ilObjContentObject::_getLinkToObject($book["id"],"meta");
00717                                         $f_result[$counter][] = $this->__formatLink($book["link"],$book["target"]);
00718                                         break;
00719                                         
00720                                 case "content":
00721                                         // GET INSTANCE OF PAGE OBJECT
00722                                         include_once ("content/classes/class.ilLMObjectFactory.php");
00723 
00724                                         $tmp_page_obj = ilLMObjectFactory::getInstance($tmp_obj, $book["page_id"]);
00725                                         if(!is_object($tmp_page_obj))
00726                                         {
00727                                                 ++$counter;
00728                                                 continue;
00729                                         }
00730                                         $tmp_page_obj->setLMId($book["id"]);
00731 
00732                                         $f_result[$counter][]           = ilUtil::formCheckbox(0,"lm[content][]",$counter);
00733                                         $f_result[$counter][]           = $tmp_obj->getTitle();
00734                                         //$f_result[$counter][] = $tmp_page_obj->getPresentationTitle();
00735                                         $f_result[$counter][] =
00736                                                 ilLMPageObject::_getPresentationTitle($book["page_id"],$tmp_obj->getPageHeader());
00737                                         $f_result[$counter][] = $this->__getContextPath($book["id"]);
00738 
00739                                         include_once "./content/classes/class.ilObjContentObject.php";
00740 
00741                                         list($book["link"],$book["target"]) = ilObjContentObject::_getLinkToObject($book["id"],"content",$book["page_id"]);
00742                                         
00743                                         $f_result[$counter][] = $this->__formatLink($book["link"],$book["target"]);
00744 
00745                                         unset($tmp_page_obj);
00746                                         break;
00747                         }
00748 
00749                         unset($tmp_obj);
00750                         ++$counter;
00751                 }
00752                 return $f_result ? $f_result : array();
00753         }
00754 
00755         function __getContextPath($a_endnode_id, $a_startnode_id = 1)
00756         {
00757                 $path = "";
00758                 
00759                 if(!$this->tree->isInTree($a_startnode_id) or !$this->tree->isInTree($a_endnode_id))
00760                 {
00761                         return '';
00762                 }
00763                 $tmpPath = $this->tree->getPathFull($a_endnode_id, $a_startnode_id);
00764 
00765                 // count -1, to exclude the learning module itself
00766                 for ($i = 1; $i < (count($tmpPath) - 1); $i++)
00767                 {
00768                         if ($path != "")
00769                         {
00770                                 $path .= " > ";
00771                         }
00772 
00773                         $path .= $tmpPath[$i]["title"];
00774                 }
00775                 return $path;
00776         }
00777 
00778         function __saveResult()
00779         {
00780                 // VALIDATE
00781                 if(isset($_POST["cmd"]["dbk_content"]))
00782                 {
00783                         $type = "dbk";
00784                         $subtype = "content";
00785 
00786                         if(!is_array($_POST["dbk"]["content"]))
00787                         {
00788                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00789                         }
00790                 }
00791                 if(isset($_POST["cmd"]["dbk_meta"]))
00792                 {
00793                         $type = "dbk";
00794                         $subtype = "meta";
00795                         if(!is_array($_POST["dbk"]["meta"]))
00796                         {
00797                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00798                         }
00799                 }
00800                 if(isset($_POST["cmd"]["lm_content"]))
00801                 {
00802                         $type = "lm";
00803                         $subtype = "content";
00804                         if(!is_array($_POST["lm"]["content"]))
00805                         {
00806                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00807                         }
00808                 }
00809                 if(isset($_POST["cmd"]["lm_meta"]))
00810                 {
00811                         $type = "lm";
00812                         $subtype = "meta";
00813                         if(!is_array($_POST["lm"]["meta"]))
00814                         {
00815                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00816                         }
00817                 }
00818                 if(isset($_POST["cmd"]["grp_"]))
00819                 {
00820                         $type = "grp";
00821                         $subtype = "";
00822                         if(!is_array($_POST["grp"]))
00823                         {
00824                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00825                         }
00826                 }
00827                 if(isset($_POST["cmd"]["usr_"]))
00828                 {
00829                         $type = "usr";
00830                         $subtype = "";
00831                         if(!is_array($_POST["usr"]))
00832                         {
00833                                 $this->message = $this->lng->txt("search_select_one_result")."<br />";
00834                         }
00835                 }
00836                 // NO FOLDER SELECTED
00837                 if(!$_POST[$type."_".$subtype])
00838                 {
00839                         $this->message .= $this->lng->txt("search_select_one")."<br />";
00840                 }
00841 
00842                 if(!$this->message)
00843                 {
00844                         $this->__save($type,$subtype);
00845                 }
00846         }
00847 
00848         function __save($a_type,$a_subtype = '')
00849         {
00850                 include_once "./classes/class.ilSearchResult.php";
00851 
00852                 $tmp_folder_obj =& new ilSearchFolder($this->getUserId(),$_POST[$a_type."_".$a_subtype]);
00853                 // GET RESULT SET
00854                 $tmp_result = $this->search->getResultByType($a_type);
00855 
00856                 switch($a_type)
00857                 {
00858                         case "lm":
00859                         case "dbk":
00860                                 foreach($_POST[$a_type][$a_subtype] as $result_id)
00861                                 {
00862                                         if(!$this->tree->isInTree($tmp_result[$a_subtype][$result_id]["id"]))
00863                                         {
00864                                                 continue;
00865                                         }
00866                                         $tmp_obj = ilObjectFactory::getInstanceByRefId($tmp_result[$a_subtype][$result_id]["id"]);
00867                                         $title = $tmp_obj->getTitle();
00868                                         
00869                                         if($a_subtype == "meta")
00870                                         {
00871                                                 $target = addslashes(serialize(array("type" => $a_type,
00872                                                                                                                          "subtype" => $a_subtype,
00873                                                                                                                          "id" => $tmp_result[$a_subtype][$result_id]["id"])));
00874                                         }
00875                                         else
00876                                         {
00877                                                 include_once ("content/classes/class.ilLMObjectFactory.php");
00878 
00879                                                 $tmp_page_obj = ilLMObjectFactory::getInstance($tmp_obj,$tmp_result[$a_subtype][$result_id]["page_id"]);
00880                                                 if(!is_object($tmp_page_obj))
00881                                                 {
00882                                                         continue;
00883                                                 }
00884                                                 $tmp_page_obj->setLMId($tmp_result[$a_subtype][$result_id]["id"]);
00885 
00886                                                 //$title .= " -> ".$tmp_page_obj->getPresentationTitle();
00887                                                 $title .= " -> ".
00888                                                         ilLMPageObject::_getPresentationTitle($tmp_result[$a_subtype][$result_id]["page_id"], $tmp_obj->getPageHeader());
00889 
00890                                                 $target = addslashes(serialize(array("type" => $a_type,
00891                                                                                                                          "subtype" => $a_subtype,
00892                                                                                                                          "id" => $tmp_result[$a_subtype][$result_id]["id"],
00893                                                                                                                          "page_id" => $tmp_result[$a_subtype][$result_id]["page_id"])));
00894                                         }
00895                                         $search_res_obj =& new ilSearchResult($this->getUserId());
00896                                         $search_res_obj->setTitle($title);
00897                                         $search_res_obj->setTarget($target);
00898 
00899                                         $tmp_folder_obj->assignResult($search_res_obj);
00900 
00901                                         unset($search_res_obj);
00902                                 }
00903                                 break;
00904                                 
00905                         case "grp":
00906                                 foreach($_POST["grp"] as $result_id)
00907                                 {
00908                                         $tmp_obj = ilObjectFactory::getInstanceByRefId($tmp_result[$result_id]["id"]);
00909                         
00910                                         $title  = $tmp_obj->getTitle();
00911                                         if($tmp_obj->getDescription())
00912                                         {
00913                                                 $title .= " (".$tmp_obj->getDescription().")";
00914                                         }
00915                                         $target = addslashes(serialize(array("type" => $a_type,
00916                                                                                                                  "id" => $tmp_result[$result_id]["id"])));
00917                                         $search_res_obj =& new ilSearchResult($this->getUserId());
00918                                         $search_res_obj->setTitle($title);
00919                                         $search_res_obj->setTarget($target);
00920 
00921                                         $tmp_folder_obj->assignResult($search_res_obj);
00922 
00923                                         unset($search_res_obj);
00924                                 }
00925                                 break;
00926                         case "usr":
00927                                 foreach($_POST["usr"] as $result_id)
00928                                 {
00929 
00930                                         $tmp_obj = ilObjectFactory::getInstanceByObjId($tmp_result[$result_id]["id"]);
00931                         
00932                                         $title  = $tmp_obj->getFirstname();
00933                                         $title .= " ".$tmp_obj->getLastname();
00934                                         $title .= " (".$tmp_obj->getLogin().")";
00935 
00936                                         $target = addslashes(serialize(array("type" => $a_type,
00937                                                                                                                  "id" => $tmp_result[$result_id]["id"])));
00938 
00939                                         $search_res_obj =& new ilSearchResult($this->getUserId());
00940                                         $search_res_obj->setTitle($title);
00941                                         $search_res_obj->setTarget($target);
00942 
00943                                         $tmp_folder_obj->assignResult($search_res_obj);
00944 
00945                                         unset($search_res_obj);
00946                                 }
00947                                 break;
00948                 }
00949 
00950                 unset($tmp_folder_obj);
00951                 
00952                 $this->message = $this->lng->txt("search_results_saved");
00953         }
00954 } // END class.Search
00955 ?>

Generated on Fri Dec 13 2013 13:52:08 for ILIAS Release_3_7_x_branch .rev 46817 by  doxygen 1.7.1