ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilLuceneSearchResultFilter Class Reference

Validate Lucene search results Do access checks, create ref_ids from obj_ids... More...

+ Collaboration diagram for ilLuceneSearchResultFilter:

Public Member Functions

 addFilter (ilLuceneResultFilter $filter)
 
 setCandidates (ilLuceneSearchResult $a_ids)
 Set result ids. More...
 
 getCandidates ()
 get result ids More...
 
 getUserId ()
 Get user id. More...
 
 getRequiredPermission ()
 Get required permission. More...
 
 isLimitReached ()
 Check if search max hits is reached. More...
 
 getResultIds ()
 get filtered ids More...
 
 getResultObjIds ()
 get filtered ids More...
 
 getResults ()
 get results More...
 
 getMaxHits ()
 get max hits More...
 
 loadFromDb ()
 Load results from db. More...
 
 filter ()
 Filter search results. More...
 

Static Public Member Functions

static getInstance (int $a_user_id)
 

Protected Member Functions

 __construct (int $a_user_id)
 Singleton constructor. More...
 
 checkFilter (int $a_ref_id)
 check appended filter More...
 
 append (int $a_ref_id, int $a_obj_id)
 Append to filtered results. More...
 
 isOffsetReached (int $a_current_nr)
 Check if offset is reached. More...
 

Protected Attributes

int $user_id
 
ilLuceneSearchResult $result = null
 
array $checked = []
 
ilSearchSettings $settings
 
ilUserSearchCache $cache
 
string $required_permission = 'visible'
 
bool $limit_reached = false
 
int $offset = 0
 
array $filters = array()
 
ilAccess $access
 

Static Protected Attributes

static ilLuceneSearchResultFilter $instance = null
 

Detailed Description

Validate Lucene search results Do access checks, create ref_ids from obj_ids...

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 29 of file class.ilLuceneSearchResultFilter.php.

Constructor & Destructor Documentation

◆ __construct()

ilLuceneSearchResultFilter::__construct ( int  $a_user_id)
protected

Singleton constructor.

Definition at line 50 of file class.ilLuceneSearchResultFilter.php.

References $DIC, ilUserSearchCache\_getInstance(), ILIAS\Repository\access(), ilSearchSettings\getInstance(), getUserId(), and ILIAS\Repository\settings().

51  {
52  global $DIC;
53 
54  $this->access = $DIC->access();
55  $this->user_id = $a_user_id;
57  $this->cache = ilUserSearchCache::_getInstance($this->getUserId());
58  $this->offset = $this->settings->getMaxHits() * ($this->cache->getResultPageNumber() - 1);
59  }
static _getInstance(int $a_usr_id)
global $DIC
Definition: shib_login.php:22
+ Here is the call graph for this function:

Member Function Documentation

◆ addFilter()

ilLuceneSearchResultFilter::addFilter ( ilLuceneResultFilter  $filter)

Definition at line 69 of file class.ilLuceneSearchResultFilter.php.

69  : void
70  {
71  $this->filters[] = $filter;
72  }

◆ append()

ilLuceneSearchResultFilter::append ( int  $a_ref_id,
int  $a_obj_id 
)
protected

Append to filtered results.

Definition at line 238 of file class.ilLuceneSearchResultFilter.php.

Referenced by filter().

238  : void
239  {
240  $this->checked[$a_ref_id] = $a_obj_id;
241  }
+ Here is the caller graph for this function:

◆ checkFilter()

ilLuceneSearchResultFilter::checkFilter ( int  $a_ref_id)
protected

check appended filter

Definition at line 225 of file class.ilLuceneSearchResultFilter.php.

Referenced by filter().

225  : bool
226  {
227  foreach ($this->filters as $filter) {
228  if (!$filter->filter($a_ref_id)) {
229  return false;
230  }
231  }
232  return true;
233  }
+ Here is the caller graph for this function:

◆ filter()

ilLuceneSearchResultFilter::filter ( )

Filter search results.

Do RBAC checks.

Definition at line 166 of file class.ilLuceneSearchResultFilter.php.

References $ref_id, ilObject\_getAllReferences(), ILIAS\Repository\access(), append(), checkFilter(), getCandidates(), ilLoggerFactory\getLogger(), getRequiredPermission(), getResultIds(), isOffsetReached(), and ILIAS\Repository\settings().

166  : bool
167  {
168  // get ref_ids and check access
169  $counter = 0;
170  $offset_counter = 0;
171 
172  foreach ($this->getCandidates() as $obj_id) {
173  // Check referenced objects
174  foreach (ilObject::_getAllReferences($obj_id) as $ref_id) {
175  // Check filter
176  if (!$this->checkFilter($ref_id)) {
177  $this->cache->appendToFailed($ref_id);
178  continue;
179  }
180 
181  // Access failed by prior check
182  if ($this->cache->isFailed($ref_id)) {
183  continue;
184  }
185  // Offset check
186  if ($this->cache->isChecked($ref_id) and !$this->isOffsetReached($offset_counter)) {
187  ilLoggerFactory::getLogger('src')->debug('Result was checked');
188  $offset_counter++;
189  break;
190  }
191 
192  // RBAC check
193  if ($this->access->checkAccessOfUser(
194  $this->getUserId(),
195  $this->getRequiredPermission(),
196  '',
197  $ref_id,
198  '',
199  $obj_id
200  )) {
201  ++$counter;
202  $offset_counter++;
203  $this->append($ref_id, $obj_id);
204  $this->cache->appendToChecked($ref_id, $obj_id);
205  break;
206  } else {
207  $this->cache->appendToFailed($ref_id);
208  }
209  }
210  if ($counter >= $this->settings->getMaxHits()) {
211  $this->limit_reached = true;
212  $this->cache->setResults($this->getResultIds());
213  $this->cache->save();
214  return false;
215  }
216  }
217  $this->cache->setResults($this->getResultIds());
218  $this->cache->save();
219  return true;
220  }
static getLogger(string $a_component_id)
Get component logger.
checkFilter(int $a_ref_id)
check appended filter
static _getAllReferences(int $id)
get all reference ids for object ID
append(int $a_ref_id, int $a_obj_id)
Append to filtered results.
$ref_id
Definition: ltiauth.php:65
getRequiredPermission()
Get required permission.
isOffsetReached(int $a_current_nr)
Check if offset is reached.
+ Here is the call graph for this function:

◆ getCandidates()

ilLuceneSearchResultFilter::getCandidates ( )

get result ids

Definition at line 85 of file class.ilLuceneSearchResultFilter.php.

References $result.

Referenced by filter().

86  {
87  return $this->result;
88  }
Search result implementing iterator interface.
+ Here is the caller graph for this function:

◆ getInstance()

static ilLuceneSearchResultFilter::getInstance ( int  $a_user_id)
static

Definition at line 61 of file class.ilLuceneSearchResultFilter.php.

References null.

Referenced by ilLuceneAdvancedSearchGUI\performSearch(), ilLuceneSearchGUI\performSearch(), ilSoapObjectAdministration\searchObjects(), ilLuceneAdvancedSearchGUI\showSavedResults(), and ilLuceneSearchGUI\showSavedResults().

62  {
63  if (self::$instance == null) {
64  return self::$instance = new ilLuceneSearchResultFilter($a_user_id);
65  }
66  return self::$instance;
67  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Validate Lucene search results Do access checks, create ref_ids from obj_ids...
+ Here is the caller graph for this function:

◆ getMaxHits()

ilLuceneSearchResultFilter::getMaxHits ( )

get max hits

Definition at line 149 of file class.ilLuceneSearchResultFilter.php.

References ILIAS\Repository\settings().

149  : int
150  {
151  return $this->settings->getMaxHits();
152  }
+ Here is the call graph for this function:

◆ getRequiredPermission()

ilLuceneSearchResultFilter::getRequiredPermission ( )

Get required permission.

Definition at line 101 of file class.ilLuceneSearchResultFilter.php.

References $required_permission.

Referenced by filter().

101  : string
102  {
104  }
+ Here is the caller graph for this function:

◆ getResultIds()

ilLuceneSearchResultFilter::getResultIds ( )

get filtered ids

Returns
int[] array of filtered ref_ids

Definition at line 119 of file class.ilLuceneSearchResultFilter.php.

References $checked.

Referenced by filter().

119  : array
120  {
121  return $this->checked;
122  }
+ Here is the caller graph for this function:

◆ getResultObjIds()

ilLuceneSearchResultFilter::getResultObjIds ( )

get filtered ids

Returns
int[] array of filtered obj_ids

Definition at line 128 of file class.ilLuceneSearchResultFilter.php.

128  : array
129  {
130  $obj_ids = [];
131  foreach ($this->checked as $obj_id) {
132  $obj_ids[] = $obj_id;
133  }
134  return $obj_ids;
135  }

◆ getResults()

ilLuceneSearchResultFilter::getResults ( )

get results

Returns
int[] array of ids

Definition at line 141 of file class.ilLuceneSearchResultFilter.php.

References $checked.

◆ getUserId()

ilLuceneSearchResultFilter::getUserId ( )

Get user id.

Definition at line 93 of file class.ilLuceneSearchResultFilter.php.

References $user_id.

Referenced by __construct().

93  : int
94  {
95  return $this->user_id;
96  }
+ Here is the caller graph for this function:

◆ isLimitReached()

ilLuceneSearchResultFilter::isLimitReached ( )

Check if search max hits is reached.

Returns
bool max hits reached

Definition at line 110 of file class.ilLuceneSearchResultFilter.php.

References $limit_reached.

110  : bool
111  {
112  return $this->limit_reached;
113  }

◆ isOffsetReached()

ilLuceneSearchResultFilter::isOffsetReached ( int  $a_current_nr)
protected

Check if offset is reached.

Parameters
int$a_current_nrCurrent result number
Returns
bool

Definition at line 248 of file class.ilLuceneSearchResultFilter.php.

References $offset.

Referenced by filter().

248  : bool
249  {
250  return !($a_current_nr < $this->offset);
251  }
+ Here is the caller graph for this function:

◆ loadFromDb()

ilLuceneSearchResultFilter::loadFromDb ( )

Load results from db.

Definition at line 157 of file class.ilLuceneSearchResultFilter.php.

157  : void
158  {
159  $this->checked = $this->cache->getResults();
160  }

◆ setCandidates()

ilLuceneSearchResultFilter::setCandidates ( ilLuceneSearchResult  $a_ids)

Set result ids.

Definition at line 77 of file class.ilLuceneSearchResultFilter.php.

77  : void
78  {
79  $this->result = $a_ids;
80  }

Field Documentation

◆ $access

ilAccess ilLuceneSearchResultFilter::$access
protected

Definition at line 44 of file class.ilLuceneSearchResultFilter.php.

◆ $cache

ilUserSearchCache ilLuceneSearchResultFilter::$cache
protected

Definition at line 37 of file class.ilLuceneSearchResultFilter.php.

◆ $checked

array ilLuceneSearchResultFilter::$checked = []
protected

Definition at line 35 of file class.ilLuceneSearchResultFilter.php.

Referenced by getResultIds(), and getResults().

◆ $filters

array ilLuceneSearchResultFilter::$filters = array()
protected

Definition at line 42 of file class.ilLuceneSearchResultFilter.php.

◆ $instance

ilLuceneSearchResultFilter ilLuceneSearchResultFilter::$instance = null
staticprotected

Definition at line 31 of file class.ilLuceneSearchResultFilter.php.

◆ $limit_reached

bool ilLuceneSearchResultFilter::$limit_reached = false
protected

Definition at line 39 of file class.ilLuceneSearchResultFilter.php.

Referenced by isLimitReached().

◆ $offset

int ilLuceneSearchResultFilter::$offset = 0
protected

Definition at line 40 of file class.ilLuceneSearchResultFilter.php.

Referenced by isOffsetReached().

◆ $required_permission

string ilLuceneSearchResultFilter::$required_permission = 'visible'
protected

Definition at line 38 of file class.ilLuceneSearchResultFilter.php.

Referenced by getRequiredPermission().

◆ $result

ilLuceneSearchResult ilLuceneSearchResultFilter::$result = null
protected

Definition at line 34 of file class.ilLuceneSearchResultFilter.php.

Referenced by getCandidates().

◆ $settings

ilSearchSettings ilLuceneSearchResultFilter::$settings
protected

Definition at line 36 of file class.ilLuceneSearchResultFilter.php.

◆ $user_id

int ilLuceneSearchResultFilter::$user_id
protected

Definition at line 33 of file class.ilLuceneSearchResultFilter.php.

Referenced by getUserId().


The documentation for this class was generated from the following file: