Definition at line 33 of file class.ilSearch.php.
ilSearch::__checkAccess | ( | $ | a_results, | |
$ | a_type | |||
) |
Definition at line 547 of file class.ilSearch.php.
References $result.
Referenced by __validateResults(), and performSearch().
{ global $ilAccess; if (is_array($a_results)) { foreach ($a_results as $result) { if($ilAccess->checkAccess('read','',$result['id'])) { $checked_result[] = $result; } } } return $checked_result ? $checked_result : array(); }
ilSearch::__createFulltextCondition | ( | $ | a_fields | ) |
Definition at line 372 of file class.ilSearch.php.
Referenced by getWhereCondition().
{ $where = "WHERE ("; $match = " MATCH(".implode(",",$a_fields).") "; $where .= "1 "; // OR if (count($this->parsed_str["or"])) { $where .= "AND "; $where .= $match; $where .= " AGAINST('".implode(" ",$this->parsed_str["all"])."') "; } // AND foreach ($this->parsed_str["and"] as $and) { $where .= "AND "; $where .= $match; $where .= "AGAINST('".$and."') "; } // AND NOT /* foreach($this->parsed_str["not"] as $and) { $where .= "AND NOT "; $where .= $match; $where .= "AGAINST('".$and."') "; } */ $where .= ") "; return $where; }
ilSearch::__createLikeCondition | ( | $ | a_fields | ) |
Definition at line 327 of file class.ilSearch.php.
Referenced by getWhereCondition().
{ $where = "WHERE ("; $concat = "CONCAT(\" \","; $concat .= implode(",\" \",",$a_fields); $concat .= ") "; $where .= "1 "; // AND foreach ($this->parsed_str["and"] as $and) { $where .= "AND "; $where .= $concat; $where .= "LIKE(\"".$and."\") "; } // AND NOT foreach ($this->parsed_str["not"] as $not) { $where .= "AND "; $where .= $concat; $where .= "NOT LIKE(\"".$not."\") "; } // OR if (count($this->parsed_str["or"]) and !count($this->parsed_str["and"]) and !count($this->parsed_str["not"])) { $where .= "AND ( "; foreach ($this->parsed_str["all"] as $or) { $where .= $concat; $where .= "LIKE(\"".$or."\") "; $where .= "OR "; } $where .= "0) "; } $where .= ") "; return $where; }
ilSearch::__getResultIdsByActualType | ( | ) |
Definition at line 523 of file class.ilSearch.php.
References $result, $results, getResultByType(), and getSearchInByType().
Referenced by getInStatement().
{ $results = $this->getResultByType($this->act_type); // GET 'content' or 'meta' array switch ($this->act_type) { case "lm": case "dbk": $results = $results[$this->getSearchInByType($this->act_type)]; break; } if(is_array($results)) { foreach ($results as $result) { $ids[] = $result["id"]; } } return $ids ? $ids : array(); }
ilSearch::__parseSearchString | ( | ) |
Definition at line 406 of file class.ilSearch.php.
References __prepareWord(), getCombination(), and getSearchString().
Referenced by validate().
{ $tmp_arr = explode(" ",$this->getSearchString()); $this->parsed_str["and"] = $this->parsed_str["or"] = $this->parsed_str["not"] = array(); foreach ($tmp_arr as $word) { #$word = trim($word); $word = $this->__prepareWord($word); if ($word) { if (substr($word,0,1) == '+') { $this->parsed_str["all"][] = substr($word,1); $this->parsed_str["and"][] = substr($word,1); continue; } if (substr($word,0,1) == '-') { // better parsed_str["allmost_all"] ;-) #$this->parsed_str["all"][] = substr($word,1); $this->parsed_str["not"][] = substr($word,1); continue; } if ($this->getCombination() == 'and') { $this->parsed_str["all"][] = $word; $this->parsed_str["and"][] = $word; continue; } if ($this->getCombination() == 'or') { $this->parsed_str["all"][] = $word; $this->parsed_str["or"][] = $word; continue; } } } }
ilSearch::__prepareWord | ( | $ | a_word | ) |
Definition at line 687 of file class.ilSearch.php.
Referenced by __parseSearchString().
{ $word = trim($a_word); if(!preg_match('/\*/',$word)) { return '%'.$word.'%'; } if(preg_match('/^\*/',$word)) { return str_replace('*','%',$word); } else { return '% '.str_replace('*','%',$word); } }
ilSearch::__readDBResult | ( | ) |
Definition at line 488 of file class.ilSearch.php.
References $query, $res, $row, __updateDBResult(), __validateResults(), getUserId(), and setResult().
{ if ($this->getUserId() != 0 and $this->getUserId() != ANONYMOUS_USER_ID and $this->read_db_result) { $query = "SELECT search_result FROM usr_search ". "WHERE usr_id = '".$this->getUserId()."'"; $res = $this->ilias->db->query($query); if ($res->numRows()) { $row = $res->fetchRow(DB_FETCHMODE_OBJECT); $this->setResult(unserialize(stripslashes($row->search_result))); } else { $this->setResult(array("usr" => array(), "grp" => array(), "lm" => array(), "dbk" => array())); } } else { $this->setResult(array("usr" => array(), "grp" => array(), "lm" => array(), "dbk" => array())); } $this->__validateResults(); $this->__updateDBResult(); return true; }
ilSearch::__updateDBResult | ( | ) |
Definition at line 473 of file class.ilSearch.php.
References $query, $res, getResults(), and getUserId().
Referenced by __readDBResult(), and performSearch().
{ if ($this->getUserId() != 0 and $this->getUserId() != ANONYMOUS_USER_ID) { $query = "REPLACE INTO usr_search ". "VALUES('".$this->getUserId()."','".addslashes(serialize($this->getResults()))."','0')"; $res = $this->ilias->db->query($query); return true; } return false; }
ilSearch::__validateParsedString | ( | &$ | message | ) |
Definition at line 449 of file class.ilSearch.php.
References $type, and getMinWordLength().
Referenced by validate().
{ foreach ($this->parsed_str as $type) { foreach ($type as $word) { if (strlen($word) < $this->getMinWordLength()) { $to_short = true; } } } if ($to_short) { $message .= ($this->lng->txt('search_to_short').'<br />'); $message .= ($this->lng->txt('search_minimum_characters').' '.$this->getMinWordLength().'<br />'); return false; } return true; }
ilSearch::__validateResults | ( | ) |
Definition at line 598 of file class.ilSearch.php.
References $data, $tree, $user, __checkAccess(), ilObjectFactory::getInstanceByObjId(), and setResult().
Referenced by __readDBResult(), and performSearch().
{ global $tree; $new_result = array(); // check lm meta $this->result['lm']['meta'] = $this->__checkAccess($this->result['lm']['meta'],'lm'); if(is_array($this->result['lm']['meta'])) { foreach($this->result['lm']['meta'] as $data) { if($tree->isInTree($data['id'])) { $new_result['lm']['meta'][] = $data; } } } $this->result['lm']['content'] = $this->__checkAccess($this->result['lm']['content'],'lm'); if(is_array($this->result['lm']['content'])) { foreach($this->result['lm']['content'] as $data) { if($tree->isInTree($data['id'])) { $new_result['lm']['content'][] = $data; } } } $this->result['dbk']['meta'] = $this->__checkAccess($this->result['dbk']['meta'],'dbk'); if(is_array($this->result['dbk']['meta'])) { foreach($this->result['dbk']['meta'] as $data) { if($tree->isInTree($data['id'])) { $new_result['dbk']['meta'][] = $data; } } } $this->result['dbk']['content'] = $this->__checkAccess($this->result['dbk']['content'],'dbk'); if(is_array($this->result['dbk']['content'])) { foreach($this->result['dbk']['content'] as $data) { if($tree->isInTree($data['id'])) { $new_result['dbk']['content'][] = $data; } } } $this->result['grp'] = $this->__checkAccess($this->result['grp'],'grp'); if(is_array($this->result['grp'])) { foreach($this->result['grp'] as $data) { if($tree->isInTree($data['id'])) { $new_result['grp'][] = $data; } } } if(is_array($this->result['usr'])) { foreach($this->result['usr'] as $user) { if($tmp_obj =& ilObjectFactory::getInstanceByObjId($user['id'],false)) { $new_result['usr'][] = $user; } } } if(is_array($this->result['role'])) { foreach($this->result['role'] as $user) { if($tmp_obj =& ilObjectFactory::getInstanceByObjId($user['id'],false)) { $new_result['role'][] = $user; } } } $this->setResult($new_result); return true; }
ilSearch::_checkParentConditions | ( | $ | a_ref_id | ) |
Definition at line 565 of file class.ilSearch.php.
References $ilias, $tree, and ilPaymentObject::_hasAccess().
{ include_once './payment/classes/class.ilPaymentObject.php'; include_once './course/classes/class.ilObjCourse.php'; global $tree,$ilias; if(!$tree->isInTree($a_ref_id)) { return false; } foreach($tree->getPathFull($a_ref_id) as $node_data) { if(!ilPaymentObject::_hasAccess($node_data['child'])) { return false; } /* if($node_data['type'] == 'crs') { $tmp_obj =& ilObjectFactory::getInstanceByRefId($node_data['child']); $tmp_obj->initCourseMemberObject(); if(!$tmp_obj->members_obj->hasAccess($ilias->account->getId())) { return false; } } */ } return true; }
ilSearch::getCombination | ( | ) |
Definition at line 132 of file class.ilSearch.php.
Referenced by __parseSearchString().
{ return $this->combination ? $this->combination : "or"; }
ilSearch::getEmptySearch | ( | ) |
Definition at line 171 of file class.ilSearch.php.
Referenced by validate().
{
return $this->allow_empty_search;
}
ilSearch::getInStatement | ( | $ | a_primary | ) |
Definition at line 304 of file class.ilSearch.php.
References __getResultIdsByActualType(), and getSearchType().
{ $in = ''; switch ($this->getSearchType()) { case "new": $in .= ""; break; case "result": # if(count($this->__getResultIdsByActualType())) # { $in .= "AND $a_primary IN('".implode("','",$this->__getResultIdsByActualType())."') "; # } break; } return $in; }
ilSearch::getMinWordLength | ( | ) |
Definition at line 118 of file class.ilSearch.php.
Referenced by __validateParsedString().
{
return $this->min_word_length;
}
ilSearch::getNumberOfResults | ( | ) |
Definition at line 178 of file class.ilSearch.php.
References getResultByType().
{ $number = count($this->getResultByType("usr")) + count($this->getResultByType("grp")) + count($this->getResultByType("role")); $tmp_res = $this->getResultByType("dbk"); $number += count($tmp_res["meta"]) + count($tmp_res["content"]); $tmp_res = $this->getResultByType("lm"); $number += count($tmp_res["meta"]) + count($tmp_res["content"]); return $number; }
ilSearch::getPerformUpdate | ( | ) |
Definition at line 167 of file class.ilSearch.php.
Referenced by performSearch().
{
return $this->perform_update;
}
ilSearch::getResultByType | ( | $ | a_type | ) |
Definition at line 159 of file class.ilSearch.php.
Referenced by __getResultIdsByActualType(), and getNumberOfResults().
{
return $this->result[$a_type] ? $this->result[$a_type] : array();
}
ilSearch::getResults | ( | ) |
Definition at line 155 of file class.ilSearch.php.
Referenced by __updateDBResult().
{
return $this->result ? $this->result : array();
}
ilSearch::getSearchFor | ( | ) |
Definition at line 136 of file class.ilSearch.php.
Referenced by performSearch(), and validate().
{
return $this->search_for ? $this->search_for : array();
}
ilSearch::getSearchIn | ( | ) |
Definition at line 140 of file class.ilSearch.php.
{
return $this->search_in ? $this->search_in : array();
}
ilSearch::getSearchInByType | ( | $ | a_type | ) |
Definition at line 144 of file class.ilSearch.php.
Referenced by __getResultIdsByActualType(), and performSearch().
{ if($a_type == 'lm' or $a_type == 'dbk') { return $this->search_in[$a_type]; } else { return false; } }
ilSearch::getSearchString | ( | ) |
Definition at line 128 of file class.ilSearch.php.
Referenced by __parseSearchString(), and validate().
{
return $this->search_string;
}
ilSearch::getSearchType | ( | ) |
Definition at line 163 of file class.ilSearch.php.
Referenced by getInStatement().
{
return $this->search_type;
}
ilSearch::getUserId | ( | ) |
Definition at line 124 of file class.ilSearch.php.
Referenced by __readDBResult(), and __updateDBResult().
{
return $this->user_id;
}
ilSearch::getWhereCondition | ( | $ | a_type, | |
$ | a_fields | |||
) |
Definition at line 288 of file class.ilSearch.php.
References __createFulltextCondition(), and __createLikeCondition().
{ switch ($a_type) { case "like": $where = $this->__createLikeCondition($a_fields); break; case "fulltext": $where = $this->__createFulltextCondition($a_fields); break; } return $where; }
ilSearch::ilSearch | ( | $ | a_user_id = 0 , |
|
$ | a_read = false | |||
) |
Constructor public.
Definition at line 60 of file class.ilSearch.php.
References $ilias, $lng, $rbacsystem, setEmptySearch(), and setPerformUpdate().
{ global $ilias,$rbacsystem,$lng; // Initiate variables $this->ilias =& $ilias; $this->lng =& $lng; $this->lng->loadLanguageModule("search"); $this->rbacsystem =& $rbacsystem; $this->user_id = $a_user_id; $this->setPerformUpdate(true); $this->setEmptySearch(false); $this->read_db_result = $a_read; // READ OLD SEARCH RESULTS FROM DATABASE #$this->__readDBResult(); }
ilSearch::performSearch | ( | ) |
Definition at line 217 of file class.ilSearch.php.
References $ilBench, $result, __checkAccess(), __updateDBResult(), __validateResults(), ilObjRole::_search(), ilObjDlBook::_search(), ilObjContentObject::_search(), ilObjGroup::_search(), ilObjUser::_search(), getPerformUpdate(), getSearchFor(), getSearchInByType(), and setResult().
{ global $objDefinition, $ilBench; $ilBench->start("Search", "performSearch"); $result = array("usr" => array(), "grp" => array(), "lm" => array(), "dbk" => array(), "role"=> array()); foreach($this->getSearchFor() as $obj_type) { switch($obj_type) { case "usr": // TODO: NOT NICE BUT USEFUL // THIS VAR IS USED IN __getResultIdsByType() $this->act_type = 'usr'; $result["usr"] = ilObjUser::_search($this); break; case "grp": include_once "./classes/class.ilObjGroup.php"; $this->act_type = 'grp'; $result["grp"] = ilObjGroup::_search($this); $result["grp"] = $this->__checkAccess($result["grp"],'grp'); break; case "lm": include_once "./content/classes/class.ilObjContentObject.php"; $this->act_type = 'lm'; $result["lm"][$this->getSearchInByType("lm")] = ilObjContentObject::_search($this,$this->getSearchInByType("lm")); $result["lm"][$this->getSearchInByType("lm")] = $this->__checkAccess($result["lm"][$this->getSearchInByType("lm")],'lm'); break; case "dbk": include_once "./content/classes/class.ilObjDlBook.php"; $this->act_type = 'dbk'; $result["dbk"][$this->getSearchInByType("dbk")] = ilObjDlBook::_search($this,$this->getSearchInByType("dbk")); $result["dbk"][$this->getSearchInByType("dbk")] = $this->__checkAccess($result["dbk"][$this->getSearchInByType("dbk")],'dbk'); break; case "role": include_once "./classes/class.ilObjRole.php"; $this->act_type = 'role'; $result["role"] = ilObjRole::_search($this); #$result["role"] = $this->__checkAccess($result["role"],'role'); break; } } $this->setResult($result); $this->__validateResults(); if ($this->getPerformUpdate()) { $this->__updateDBResult(); } $ilBench->stop("Search", "performSearch"); return true; }
ilSearch::setCombination | ( | $ | a_combination | ) |
Definition at line 84 of file class.ilSearch.php.
{
// 'and' or 'or'
$this->combination = $a_combination;
}
ilSearch::setEmptySearch | ( | $ | a_value | ) |
Definition at line 109 of file class.ilSearch.php.
Referenced by ilSearch().
{ $this->allow_empty_search = $a_value; }
ilSearch::setMinWordLength | ( | $ | a_min_word_length | ) |
Definition at line 114 of file class.ilSearch.php.
{ $this->min_word_length = $a_min_word_length; }
ilSearch::setPerformUpdate | ( | $ | a_value | ) |
Definition at line 105 of file class.ilSearch.php.
Referenced by ilSearch().
{ $this->perform_update = $a_value; }
ilSearch::setResult | ( | $ | a_result | ) |
Definition at line 97 of file class.ilSearch.php.
Referenced by __readDBResult(), __validateResults(), and performSearch().
{ $this->result = $a_result; }
ilSearch::setSearchFor | ( | $ | a_search_for | ) |
Definition at line 89 of file class.ilSearch.php.
{ $this->search_for = $a_search_for; }
ilSearch::setSearchIn | ( | $ | a_search_in | ) |
Definition at line 93 of file class.ilSearch.php.
{ $this->search_in = $a_search_in; }
ilSearch::setSearchString | ( | $ | a_search_str | ) |
Definition at line 80 of file class.ilSearch.php.
{ $this->search_string = trim($a_search_str); }
ilSearch::setSearchType | ( | $ | a_type | ) |
Definition at line 101 of file class.ilSearch.php.
{ $this->search_type = $a_type; }
ilSearch::validate | ( | &$ | message | ) |
Definition at line 191 of file class.ilSearch.php.
References $ok, __parseSearchString(), __validateParsedString(), getEmptySearch(), getSearchFor(), and getSearchString().
{ $ok = true; if(!$this->getEmptySearch()) { if(!$this->getSearchString()) { $message .= $this->lng->txt("search_no_search_term")."<br/>"; $ok = false; } $this->__parseSearchString(); if(!$this->__validateParsedString($message)) { $ok = false; } if(!$this->getSearchFor()) { $message .= $this->lng->txt("search_no_category")."<br/>"; $ok = false; } } return $ok; }
ilSearch::$allow_empty_search |
Definition at line 55 of file class.ilSearch.php.
ilSearch::$combination |
Definition at line 46 of file class.ilSearch.php.
ilSearch::$ilias |
Definition at line 40 of file class.ilSearch.php.
Referenced by _checkParentConditions(), and ilSearch().
ilSearch::$lng |
Definition at line 41 of file class.ilSearch.php.
Referenced by ilSearch().
ilSearch::$min_word_length = 3 |
Definition at line 47 of file class.ilSearch.php.
ilSearch::$parsed_str |
Definition at line 45 of file class.ilSearch.php.
ilSearch::$perform_update |
Definition at line 52 of file class.ilSearch.php.
ilSearch::$rbacsystem |
Definition at line 42 of file class.ilSearch.php.
Referenced by ilSearch().
ilSearch::$read_db_result |
Definition at line 53 of file class.ilSearch.php.
ilSearch::$result |
Definition at line 51 of file class.ilSearch.php.
Referenced by __checkAccess(), __getResultIdsByActualType(), and performSearch().
ilSearch::$search_for |
Definition at line 48 of file class.ilSearch.php.
ilSearch::$search_in |
Definition at line 49 of file class.ilSearch.php.
ilSearch::$search_string |
Definition at line 44 of file class.ilSearch.php.
ilSearch::$search_type |
Definition at line 50 of file class.ilSearch.php.
ilSearch::$user_id |
Definition at line 43 of file class.ilSearch.php.