Definition at line 33 of file class.ilSearch.php.
| ilSearch::__checkAccess | ( | $ | a_results, | |
| $ | a_type | |||
| ) |
Definition at line 535 of file class.ilSearch.php.
References $obj_id, $result, _checkParentConditions(), ilObject::_lookupObjId(), ilRepositoryExplorer::isClickable(), and ilRepositoryExplorer::isVisible().
Referenced by __validateResults(), and performSearch().
{
include_once './classes/class.ilRepositoryExplorer.php';
if (is_array($a_results))
{
foreach ($a_results as $result)
{
$obj_id = ilObject::_lookupObjId($result['id']);
if(!$this->_checkParentConditions($result['id']))
{
continue;
}
if(ilRepositoryExplorer::isClickable($a_type,$result['id'],$obj_id) and
ilRepositoryExplorer::isVisible($result['id'],$a_type))
{
$checked_result[] = $result;
}
}
return $checked_result ? $checked_result : array();
}
return false;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::__createFulltextCondition | ( | $ | a_fields | ) |
Definition at line 362 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;
}
Here is the caller graph for this function:| ilSearch::__createLikeCondition | ( | $ | a_fields | ) |
Definition at line 317 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;
}
Here is the caller graph for this function:| ilSearch::__getResultIdsByActualType | ( | ) |
Definition at line 511 of file class.ilSearch.php.
References $result, 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();
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::__parseSearchString | ( | ) |
Definition at line 396 of file class.ilSearch.php.
References 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);
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;
}
}
}
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::__readDBResult | ( | ) |
Definition at line 476 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;
}
Here is the call graph for this function:| ilSearch::__updateDBResult | ( | ) |
Definition at line 461 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;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::__validateParsedString | ( | &$ | message | ) |
Definition at line 439 of file class.ilSearch.php.
References $type.
Referenced by validate().
{
foreach ($this->parsed_str as $type)
{
foreach ($type as $word)
{
if (strlen($word) < 3)
{
$to_short = true;
}
}
}
if ($to_short)
{
$message .= $this->lng->txt("search_minimum_three")."<br/>";
return false;
}
return true;
}
Here is the caller graph for this function:| ilSearch::__validateResults | ( | ) |
Definition at line 597 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;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::_checkParentConditions | ( | $ | a_ref_id | ) |
Definition at line 565 of file class.ilSearch.php.
References $ilias, $tree, ilPaymentObject::_hasAccess(), and ilObjectFactory::getInstanceByRefId().
Referenced by __checkAccess(), ilObjSurvey::_goto(), ilObjLinkResource::_goto(), ilStructureObject::_goto(), ilObjContentObject::_goto(), ilLMPageObject::_goto(), ilGlossaryTerm::_goto(), ilObjForum::_goto(), ilObjExercise::_goto(), ilObjTest::_goto(), and ilRepositoryGUI::cmd_admin_compliance().
{
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;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilSearch::getCombination | ( | ) |
Definition at line 122 of file class.ilSearch.php.
Referenced by __parseSearchString().
{
return $this->combination ? $this->combination : "or";
}
Here is the caller graph for this function:| ilSearch::getEmptySearch | ( | ) |
Definition at line 161 of file class.ilSearch.php.
Referenced by validate().
{
return $this->allow_empty_search;
}
Here is the caller graph for this function:| ilSearch::getInStatement | ( | $ | a_primary | ) |
Definition at line 294 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;
}
Here is the call graph for this function:| ilSearch::getNumberOfResults | ( | ) |
Definition at line 168 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;
}
Here is the call graph for this function:| ilSearch::getPerformUpdate | ( | ) |
Definition at line 157 of file class.ilSearch.php.
Referenced by performSearch().
{
return $this->perform_update;
}
Here is the caller graph for this function:| ilSearch::getResultByType | ( | $ | a_type | ) |
Definition at line 149 of file class.ilSearch.php.
Referenced by __getResultIdsByActualType(), and getNumberOfResults().
{
return $this->result[$a_type] ? $this->result[$a_type] : array();
}
Here is the caller graph for this function:| ilSearch::getResults | ( | ) |
Definition at line 145 of file class.ilSearch.php.
Referenced by __updateDBResult().
{
return $this->result ? $this->result : array();
}
Here is the caller graph for this function:| ilSearch::getSearchFor | ( | ) |
Definition at line 126 of file class.ilSearch.php.
Referenced by performSearch(), and validate().
{
return $this->search_for ? $this->search_for : array();
}
Here is the caller graph for this function:| ilSearch::getSearchIn | ( | ) |
Definition at line 130 of file class.ilSearch.php.
{
return $this->search_in ? $this->search_in : array();
}
| ilSearch::getSearchInByType | ( | $ | a_type | ) |
Definition at line 134 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;
}
}
Here is the caller graph for this function:| ilSearch::getSearchString | ( | ) |
Definition at line 118 of file class.ilSearch.php.
Referenced by __parseSearchString(), and validate().
{
return $this->search_string;
}
Here is the caller graph for this function:| ilSearch::getSearchType | ( | ) |
Definition at line 153 of file class.ilSearch.php.
Referenced by getInStatement().
{
return $this->search_type;
}
Here is the caller graph for this function:| ilSearch::getUserId | ( | ) |
Definition at line 114 of file class.ilSearch.php.
Referenced by __readDBResult(), and __updateDBResult().
{
return $this->user_id;
}
Here is the caller graph for this function:| ilSearch::getWhereCondition | ( | $ | a_type, | |
| $ | a_fields | |||
| ) |
Definition at line 278 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;
}
Here is the call graph for this function:| ilSearch::ilSearch | ( | $ | a_user_id = 0, |
|
| $ | a_read = false | |||
| ) |
Constructor public.
Definition at line 59 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();
}
Here is the call graph for this function:| ilSearch::performSearch | ( | ) |
Definition at line 207 of file class.ilSearch.php.
References $ilBench, $objDefinition, $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;
}
Here is the call graph for this function:| ilSearch::setCombination | ( | $ | a_combination | ) |
Definition at line 83 of file class.ilSearch.php.
{
// 'and' or 'or'
$this->combination = $a_combination;
}
| ilSearch::setEmptySearch | ( | $ | a_value | ) |
Definition at line 108 of file class.ilSearch.php.
Referenced by ilSearch().
{
$this->allow_empty_search = $a_value;
}
Here is the caller graph for this function:| ilSearch::setPerformUpdate | ( | $ | a_value | ) |
Definition at line 104 of file class.ilSearch.php.
Referenced by ilSearch().
{
$this->perform_update = $a_value;
}
Here is the caller graph for this function:| ilSearch::setResult | ( | $ | a_result | ) |
Definition at line 96 of file class.ilSearch.php.
Referenced by __readDBResult(), __validateResults(), and performSearch().
{
$this->result = $a_result;
}
Here is the caller graph for this function:| ilSearch::setSearchFor | ( | $ | a_search_for | ) |
Definition at line 88 of file class.ilSearch.php.
{
$this->search_for = $a_search_for;
}
| ilSearch::setSearchIn | ( | $ | a_search_in | ) |
Definition at line 92 of file class.ilSearch.php.
{
$this->search_in = $a_search_in;
}
| ilSearch::setSearchString | ( | $ | a_search_str | ) |
Definition at line 79 of file class.ilSearch.php.
{
$this->search_string = trim($a_search_str);
}
| ilSearch::setSearchType | ( | $ | a_type | ) |
Definition at line 100 of file class.ilSearch.php.
{
$this->search_type = $a_type;
}
| ilSearch::validate | ( | &$ | message | ) |
Definition at line 181 of file class.ilSearch.php.
References __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;
}
Here is the call graph for this function:| ilSearch::$allow_empty_search |
Definition at line 54 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::$parsed_str |
Definition at line 45 of file class.ilSearch.php.
| ilSearch::$perform_update |
Definition at line 51 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 52 of file class.ilSearch.php.
| ilSearch::$result |
Definition at line 50 of file class.ilSearch.php.
Referenced by __checkAccess(), __getResultIdsByActualType(), and performSearch().
| ilSearch::$search_for |
Definition at line 47 of file class.ilSearch.php.
| ilSearch::$search_in |
Definition at line 48 of file class.ilSearch.php.
| ilSearch::$search_string |
Definition at line 44 of file class.ilSearch.php.
| ilSearch::$search_type |
Definition at line 49 of file class.ilSearch.php.
| ilSearch::$user_id |
Definition at line 43 of file class.ilSearch.php.
1.7.1