5include_once 
'./Services/Search/classes/class.ilQueryParser.php';
 
   50                $this->lng->loadLanguageModule(
"search");
 
   52                $this->user_id = $a_user_id;
 
   56                $this->read_db_result = $a_read;
 
   59                #$this->__readDBResult(); 
   65                $this->search_string = trim($a_search_str);
 
   70                $this->combination = $a_combination;
 
   74                $this->search_for = $a_search_for;
 
   78                $this->search_in = $a_search_in;
 
   82                $this->result = $a_result;
 
   90                $this->perform_update = $a_value;
 
   94                $this->allow_empty_search = $a_value;
 
   99                $this->min_word_length = $a_min_word_length;
 
  117                return $this->combination ? $this->combination : 
"or";
 
  121                return $this->search_for ? $this->search_for : array();
 
  125                return $this->search_in ? $this->search_in : array();
 
  131                        return $this->search_in[
$a_type];
 
  140                return $this->result ? $this->result : array();
 
  166                $number += count($tmp_res[
"meta"]) + count($tmp_res[
"content"]);
 
  169                $number += count($tmp_res[
"meta"]) + count($tmp_res[
"content"]);
 
  178                if(!$this->qp->validate())
 
  180                        $message = $this->qp->getMessage();
 
  190                $ilBench->start(
"Search", 
"performSearch");
 
  194                $result = array(
"usr" => array(),
 
  234                $ilBench->stop(
"Search", 
"performSearch");
 
  245                $this->parsed_str[
"and"] = $this->parsed_str[
"or"] = $this->parsed_str[
"not"] = array();
 
  247                foreach ($tmp_arr as $word)
 
  249                        #$word = trim($word); 
  253                                if (substr($word,0,1) == 
'+')
 
  255                                        $this->parsed_str[
"all"][] = substr($word,1);
 
  256                                        $this->parsed_str[
"and"][] = substr($word,1);
 
  260                                if (substr($word,0,1) == 
'-')
 
  263                                        #$this->parsed_str["all"][] = substr($word,1);
 
  264                                        $this->parsed_str[
"not"][] = substr($word,1);
 
  270                                        $this->parsed_str[
"all"][] = $word;
 
  271                                        $this->parsed_str[
"and"][] = $word;
 
  277                                        $this->parsed_str[
"all"][] = $word;
 
  278                                        $this->parsed_str[
"or"][] = $word;
 
  291                        $ilDB->manipulate(
"DELETE FROM usr_search ".
 
  292                                "WHERE usr_id = ".
$ilDB->quote($this->getUserId() ,
'integer').
" ".
 
  293                                "AND search_type = 0 ");
 
  295                        $ilDB->insert(
'usr_search',array(
 
  296                                'usr_id'                => array(
'integer',$this->
getUserId()),
 
  297                                'search_result' => array(
'clob',serialize($this->
getResults())),
 
  298                                'checked'               => array(
'clob',serialize(array())),
 
  299                                'failed'                => array(
'clob',serialize(array())),
 
  300                                'page'                  => array(
'integer',0),
 
  301                                'search_type'   => array(
'integer',0),
 
  302                                'query'                 => array(
'text',
''),
 
  303                                'root'                  => array(
'integer',ROOT_FOLDER_ID)));
 
  315                if ($this->
getUserId() != 0 and $this->
getUserId() != ANONYMOUS_USER_ID and $this->read_db_result)
 
  317                        $query = 
"SELECT search_result FROM usr_search ".
 
  318                                "WHERE usr_id = ".$ilDB->quote($this->
getUserId() ,
'integer');
 
  325                                $this->
setResult(unserialize(stripslashes(
$row->search_result)));
 
  353                if (is_array($a_results))
 
  355                        foreach ($a_results as 
$result)
 
  357                                        if($ilAccess->checkAccess(
'read',
'',
$result[
'id']))
 
  364                return $checked_result ? $checked_result : array();
 
  372                $new_result = array();
 
  377                $this->result[
'lm'][
'meta'] = $this->
__checkAccess($this->result[
'lm'][
'meta'],
'lm');
 
  378                if(is_array($this->result[
'lm'][
'meta']))
 
  380                        foreach($this->result[
'lm'][
'meta'] as 
$data)
 
  382                                if($tree->isInTree(
$data[
'id']))
 
  384                                        $new_result[
'lm'][
'meta'][] = 
$data;
 
  388                $this->result[
'lm'][
'content'] = $this->
__checkAccess($this->result[
'lm'][
'content'],
'lm');
 
  389                if(is_array($this->result[
'lm'][
'content']))
 
  391                        foreach($this->result[
'lm'][
'content'] as 
$data)
 
  393                                if($tree->isInTree(
$data[
'id']))
 
  395                                        $new_result[
'lm'][
'content'][] = 
$data;
 
  399                $this->result[
'dbk'][
'meta'] = $this->
__checkAccess($this->result[
'dbk'][
'meta'],
'dbk');
 
  400                if(is_array($this->result[
'dbk'][
'meta']))
 
  402                        foreach($this->result[
'dbk'][
'meta'] as 
$data)
 
  404                                if($tree->isInTree(
$data[
'id']))
 
  406                                        $new_result[
'dbk'][
'meta'][] = 
$data;
 
  410                $this->result[
'dbk'][
'content'] = $this->
__checkAccess($this->result[
'dbk'][
'content'],
'dbk');
 
  411                if(is_array($this->result[
'dbk'][
'content']))
 
  413                        foreach($this->result[
'dbk'][
'content'] as 
$data)
 
  415                                if($tree->isInTree(
$data[
'id']))
 
  417                                        $new_result[
'dbk'][
'content'][] = 
$data;
 
  421                $this->result[
'grp'] = $this->
__checkAccess($this->result[
'grp'],
'grp');
 
  422                if(is_array($this->result[
'grp']))
 
  424                        foreach($this->result[
'grp'] as 
$data)
 
  426                                if($tree->isInTree(
$data[
'id']))
 
  428                                        $new_result[
'grp'][] = 
$data;
 
  432                if(is_array($this->result[
'usr']))
 
  434                        foreach($this->result[
'usr'] as $user)
 
  438                                        $new_result[
'usr'][] = $user;
 
  442                if(is_array($this->result[
'role']))
 
  444                        foreach($this->result[
'role'] as $user)
 
  448                                        $new_result[
'role'][] = $user;
 
  459                $word = trim($a_word);
 
  461                if(!preg_match(
'/\*/',$word))
 
  463                        return '%'.$word.
'%';
 
  465                if(preg_match(
'/^\*/',$word))
 
  467                        return str_replace(
'*',
'%',$word);
 
  471                        return '% '.str_replace(
'*',
'%',$word);
 
  481                include_once 
'Services/Search/classes/class.ilObjectSearchFactory.php';
 
  486                foreach(array(
"login",
"firstname",
"lastname",
"title",
 
  487                                "email",
"institution",
"street",
"city",
"zipcode",
"country",
"phone_home",
"fax") as $field)
 
  489                        $user_search->setFields(array($field));
 
  490                        $tmp_res = $user_search->performSearch();
 
  492                        $res->mergeEntries($tmp_res);
 
  495                foreach(
$res->getEntries() as $id => 
$data)
 
  500                return $users ? $users : array();
 
  509                include_once 
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
 
  511                $object_search->setFilter(array(
$a_type));
 
  512                $res = $object_search->performSearch();
 
  516                foreach(
$res->getResultIds() as $id)
 
  520                return $objs ? $objs : array(); 
 
  531                include_once 
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
 
  533                $object_search->setFilter(array(
'role'));
 
  535                $res = $object_search->performSearch();
 
  536                foreach(
$res->getEntries() as $id => 
$data)
 
  541                return $roles ? $roles : array();
 
An exception for terminatinating execution or to throw for unit testing.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _getUserSearchInstance($query_parser)
get reference of ilLikeUserSearch
initQueryParser()
init query parser
performObjectSearch($a_type)
perform object search
setSearchString($a_search_str)
setSearchIn($a_search_in)
setCombination($a_combination)
setSearchFor($a_search_for)
getSearchInByType($a_type)
__checkAccess($a_results, $a_type)
__construct($a_user_id=0, $a_read=false)
Constructor @access public.
setMinWordLength($a_min_word_length)
performUserSearch()
perform a search for users
setPerformUpdate($a_value)
redirection script todo: (a better solution should control the processing via a xml file)