ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
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 30 of file class.ilLuceneSearchResultFilter.php.

Constructor & Destructor Documentation

◆ __construct()

ilLuceneSearchResultFilter::__construct ( int  $a_user_id)
protected

Singleton constructor.

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

52 {
53 global $DIC;
54
55 $this->access = $DIC->access();
56 $this->user_id = $a_user_id;
58 $this->cache = ilUserSearchCache::_getInstance($this->getUserId());
59 $this->offset = $this->settings->getMaxHits() * ($this->cache->getResultPageNumber() - 1);
60 }
static _getInstance(int $a_usr_id)
global $DIC
Definition: shib_login.php:26

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

+ Here is the call graph for this function:

Member Function Documentation

◆ addFilter()

ilLuceneSearchResultFilter::addFilter ( ilLuceneResultFilter  $filter)

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

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

◆ append()

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

Append to filtered results.

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

240 : void
241 {
242 $this->checked[$a_ref_id] = $a_obj_id;
243 }

References ILIAS\UI\examples\Symbol\Glyph\Checked\checked().

Referenced by filter().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkFilter()

ilLuceneSearchResultFilter::checkFilter ( int  $a_ref_id)
protected

check appended filter

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

227 : bool
228 {
229 foreach ($this->filters as $filter) {
230 if (!$filter->filter($a_ref_id)) {
231 return false;
232 }
233 }
234 return true;
235 }

Referenced by filter().

+ Here is the caller graph for this function:

◆ filter()

ilLuceneSearchResultFilter::filter ( )

Filter search results.

Do RBAC checks.

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

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

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

+ Here is the call graph for this function:

◆ getCandidates()

ilLuceneSearchResultFilter::getCandidates ( )

get result ids

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

87 {
88 return $this->result;
89 }
Search result implementing iterator interface.

References $result.

Referenced by filter().

+ Here is the caller graph for this function:

◆ getInstance()

static ilLuceneSearchResultFilter::getInstance ( int  $a_user_id)
static

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

63 {
64 if (self::$instance == null) {
65 return self::$instance = new ilLuceneSearchResultFilter($a_user_id);
66 }
67 return self::$instance;
68 }
Validate Lucene search results Do access checks, create ref_ids from obj_ids...
static ilLuceneSearchResultFilter $instance

References $instance.

Referenced by ilSoapObjectAdministration\searchObjects().

+ Here is the caller graph for this function:

◆ getMaxHits()

ilLuceneSearchResultFilter::getMaxHits ( )

get max hits

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

150 : int
151 {
152 return $this->settings->getMaxHits();
153 }

References ILIAS\Repository\settings().

Referenced by loadFromDb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRequiredPermission()

ilLuceneSearchResultFilter::getRequiredPermission ( )

Get required permission.

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

102 : string
103 {
105 }

References $required_permission.

◆ getResultIds()

ilLuceneSearchResultFilter::getResultIds ( )

get filtered ids

Returns
int[] array of filtered ref_ids

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

120 : array
121 {
122 return $this->checked;
123 }

References $checked.

Referenced by filter().

+ Here is the caller graph for this function:

◆ getResultObjIds()

ilLuceneSearchResultFilter::getResultObjIds ( )

get filtered ids

Returns
int[] array of filtered obj_ids

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

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

References ILIAS\UI\examples\Symbol\Glyph\Checked\checked().

+ Here is the call graph for this function:

◆ getResults()

ilLuceneSearchResultFilter::getResults ( )

get results

Returns
int[] array of ids

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

143 {
144 return $this->checked;
145 }

References $checked.

◆ getUserId()

ilLuceneSearchResultFilter::getUserId ( )

Get user id.

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

References $user_id.

Referenced by __construct().

+ 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 111 of file class.ilLuceneSearchResultFilter.php.

111 : bool
112 {
114 }

References $limit_reached.

◆ 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 250 of file class.ilLuceneSearchResultFilter.php.

250 : bool
251 {
252 return !($a_current_nr < $this->offset);
253 }

References $offset.

◆ loadFromDb()

ilLuceneSearchResultFilter::loadFromDb ( )

Load results from db.

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

158 : void
159 {
160 $this->checked = $this->cache->getResults();
161 $this->limit_reached = (count($this->checked) >= $this->getMaxHits());
162 }

References ILIAS\UI\examples\Symbol\Glyph\Checked\checked(), and getMaxHits().

+ Here is the call graph for this function:

◆ setCandidates()

ilLuceneSearchResultFilter::setCandidates ( ilLuceneSearchResult  $a_ids)

Set result ids.

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

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

Field Documentation

◆ $access

ilAccess ilLuceneSearchResultFilter::$access
protected

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

◆ $cache

ilUserSearchCache ilLuceneSearchResultFilter::$cache
protected

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

◆ $checked

array ilLuceneSearchResultFilter::$checked = []
protected

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

Referenced by getResultIds(), and getResults().

◆ $filters

array ilLuceneSearchResultFilter::$filters = array()
protected

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

◆ $instance

ilLuceneSearchResultFilter ilLuceneSearchResultFilter::$instance = null
staticprotected

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

Referenced by getInstance().

◆ $limit_reached

bool ilLuceneSearchResultFilter::$limit_reached = false
protected

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

Referenced by isLimitReached().

◆ $offset

int ilLuceneSearchResultFilter::$offset = 0
protected

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

Referenced by isOffsetReached().

◆ $required_permission

string ilLuceneSearchResultFilter::$required_permission = 'visible'
protected

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

Referenced by getRequiredPermission().

◆ $result

ilLuceneSearchResult ilLuceneSearchResultFilter::$result = null
protected

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

Referenced by getCandidates().

◆ $settings

ilSearchSettings ilLuceneSearchResultFilter::$settings
protected

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

◆ $user_id

int ilLuceneSearchResultFilter::$user_id
protected

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

Referenced by getUserId().


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