ILIAS  Release_3_10_x_branch Revision 61812
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilShopSearchResult Class Reference

searchResult stores all result of a search query. More...

+ Inheritance diagram for ilShopSearchResult:
+ Collaboration diagram for ilShopSearchResult:

Public Member Functions

 ilShopSearchResult ($a_search_type)
 setSearchType ($_search_type)
 getSearchType ()
 filter ($a_root_node, $check_and)
 Filter search result.
 __initSearchSettingsObject ()
 getResultsForPresentation ()
 getTopics ()
 setTopics ($a_topics=array())
 setResultPageNumber ($a_result_page_number)
 getResultPageNumber ()
 addPresentationResult ($a_presentation_result=array())
 getPresentationResults ()
- Public Member Functions inherited from ilSearchResult
 ilSearchResult ($a_user_id=0)
 Constructor public.
 setRequiredPermission ($a_permission)
 Set the required permission for the rbac checks in function 'filter()'.
 getRequiredPermission ()
 setUserId ($a_user_id)
 getUserId ()
 getEntries ()
 isLimitReached ()
 setMaxHits ($a_max_hits)
 getMaxHits ()
 isOffsetReached ($a_counter)
 Check if offset is reached.
 addEntry ($a_obj_id, $a_type, $found, $a_child_id=0)
 add search result entry Entries are stored with 'obj_id'.
 numEntries ()
 Check number of entries public.
 mergeEntries (&$result_obj)
 merge entries of this instance and another result object
 diffEntriesFromResult (&$result_obj)
 diff entries of this instance and another result object Used for search in results
 intersectEntries (&$result_obj)
 Build intersection of entries (all entries that are present in both result sets)
 addResult ($a_ref_id, $a_obj_id, $a_type)
 add search result Results are stored with 'ref_id'.
 getResults ()
 getResultIds ()
 get result ids
 getResultsByObjId ()
 getUniqueResults ()
 Get unique results.
 filterResults ($a_root_node)
 Filter search area of result set public.
 save ($a_type=DEFAULT_SEARCH)
 Save search results.
 read ($a_type=DEFAULT_SEARCH)
 read search results
 __updateEntryChilds ($a_obj_id, $a_childs)
 Update childs for a specific entry.
 __updateResultChilds ($a_ref_id, $a_childs)
 Update childs for a specific result.
 preventOverwritingMaxhits ($a_flag=null)
 If you call this function and pass "true" the maxhits setting will not be overwritten in __initSearchSettingsObject()
 addObserver (&$a_class, $a_method)
 The observer is used to call functions for filtering result.
 callListeners ($a_ref_id, &$a_data)

Protected Member Functions

 assignEntries ($a_entries)
 initUserSearchCache ()
 Init user search cache.

Protected Attributes

 $result_page_number = 0
 $topics = array()
 $presentation_results = array()
 $search_type = ''
- Protected Attributes inherited from ilSearchResult
 $search_cache = null
 $offset = 0
 $preventOverwritingMaxhits = false

Additional Inherited Members

- Data Fields inherited from ilSearchResult
 $permission = 'visible'
 $user_id
 $entries = array()
 $results = array()
 $observers = array()
 $ilias
 $ilAccess
 $limit_reached = false
 $result

Detailed Description

searchResult stores all result of a search query.

Offers methods like mergeResults. To merge result sets of different queries.

Author
Michael Jansen mjans.nosp@m.en@d.nosp@m.ataba.nosp@m.y.de
Version
Id$

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

Member Function Documentation

ilShopSearchResult::__initSearchSettingsObject ( )

Reimplemented from ilSearchResult.

Definition at line 175 of file class.ilShopSearchResult.php.

References ilGeneralSettings\_getInstance(), and ilSearchResult\setMaxHits().

Referenced by filter().

{
include_once 'payment/classes/class.ilGeneralSettings.php';
$maxhits = ilGeneralSettings::_getInstance()->get('max_hits');
$this->setMaxHits(($maxhits > 0 ? $maxhits : 20));
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilShopSearchResult::addPresentationResult (   $a_presentation_result = array())

Definition at line 314 of file class.ilShopSearchResult.php.

Referenced by getResultsForPresentation().

{
$this->presentation_results[] = $a_presentation_result;
}

+ Here is the caller graph for this function:

ilShopSearchResult::assignEntries (   $a_entries)
protected

Definition at line 64 of file class.ilShopSearchResult.php.

Referenced by filter().

{
$ordered_entries = array();
$num_entries = count($a_entries);
foreach($this->topics as $oTopic)
{
foreach($a_entries as $aEntry)
{
if($oTopic->getId() == $aEntry['topic_id'])
{
$ordered_entries[$aEntry['ref_id']] = $aEntry;
}
}
}
if(count($ordered_entries) < $num_entries)
{
foreach($a_entries as $aEntry)
{
if(0 == $aEntry['topic_id'])
{
$ordered_entries[$aEntry['ref_id']] = $aEntry;
}
}
}
return is_array($ordered_entries) ? $ordered_entries : array();
}

+ Here is the caller graph for this function:

ilShopSearchResult::filter (   $a_root_node,
  $check_and 
)

Filter search result.

Do RBAC checks.

Allows paging of results for referenced objects

public

Parameters
introot node id
boolcheck and boolean search
Returns
bool success status

Reimplemented from ilSearchResult.

Definition at line 105 of file class.ilShopSearchResult.php.

References $ref_id, __initSearchSettingsObject(), ilSearchResult\__updateResultChilds(), ilObject\_getAllReferences(), ilPaymentObject\_lookupTopicId(), ilObject\_lookupType(), ilSearchResult\addResult(), assignEntries(), ilSearchResult\callListeners(), ilSearchResult\getEntries(), and ilSearchResult\getRequiredPermission().

{
global $tree;
// get ref_ids and check access
$counter = 0;
$offset_counter = 0;
$tmp_entries = array();
foreach($this->getEntries() as $entry)
{
// boolean and failed continue
if($check_and && in_array(0, $entry['found']))
{
continue;
}
// Types like role, rolt, user do not need rbac checks
$type = ilObject::_lookupType($entry['obj_id']);
if($type == 'rolt' or $type == 'usr' or $type == 'role')
{
continue;
}
// Check referenced objects
foreach(ilObject::_getAllReferences($entry['obj_id']) as $ref_id)
{
$type = ilObject::_lookupType($ref_id, true);
if($this->ilAccess->checkAccessOfUser($this->getUserId(),
'',
$type,
$entry['obj_id']))
{
if($a_root_node == ROOT_FOLDER_ID or $tree->isGrandChild($a_root_node,$ref_id))
{
if($this->callListeners($ref_id, $entry))
{
$entry['ref_id'] = $ref_id;
$entry['type'] = $type;
$entry['topic_id'] = ilPaymentObject::_lookupTopicId($ref_id);
$tmp_entries[$ref_id] = $entry;
}
}
continue;
}
}
}
$this->results = array();
$tmp_entries = $this->assignEntries($tmp_entries);
$counter = 0;
foreach($tmp_entries as $entry)
{
if($this->callListeners($entry['ref_id'], $entry))
{
$this->addResult($entry['ref_id'], $entry['obj_id'], $entry['type']);
$this->search_cache->appendToChecked($entry['ref_id'], $entry['obj_id']);
$this->__updateResultChilds($entry['ref_id'], $entry['child']);
}
}
$this->search_cache->setResults($this->results);
return false;
}

+ Here is the call graph for this function:

ilShopSearchResult::getPresentationResults ( )

Definition at line 318 of file class.ilShopSearchResult.php.

{
return is_array($this->presentation_results) ? $this->presentation_results : array();
}
ilShopSearchResult::getResultPageNumber ( )

Definition at line 309 of file class.ilShopSearchResult.php.

References $result_page_number.

Referenced by getResultsForPresentation().

+ Here is the caller graph for this function:

ilShopSearchResult::getResultsForPresentation ( )

Reimplemented from ilSearchResult.

Definition at line 182 of file class.ilShopSearchResult.php.

References $presentation_results, ilSearchResult\$result, ilSearchResult\$results, $title, ilObject\_lookupDescription(), ilObject\_lookupTitle(), ilPaymentObject\_lookupTopicId(), addPresentationResult(), ilSearchResult\getMaxHits(), getResultPageNumber(), ilSearchResult\getResults(), and getTopics().

{
$results = array();
$offset_counter = 0;
$counter = 0;
foreach($this->getResults() as $result)
{
if($this->getMaxHits() * ($this->getResultPageNumber() - 1) > $offset_counter)
{
++$offset_counter;
continue;
}
++$counter;
if($counter >= $this->getMaxHits())
{
break;
}
}
$objects_with_topics = array();
$objects_with_no_topcis = array();
foreach($this->getTopics() as $oTopic)
{
foreach($results as $result)
{
$topic_id = ilPaymentObject::_lookupTopicId($result['ref_id']);
if(!(int)$topic_id && !array_key_exists($result['ref_id'], $objects_with_no_topcis))
{
$objects_with_no_topcis[$result['ref_id']] = $result;
continue;
}
if((int)$topic_id != $oTopic->getId())
{
continue;
}
if(!array_key_exists($result['ref_id'], $objects_with_topics))
{
$objects_with_topics[$result['ref_id']] = $result;
}
switch($result['type'])
{
// learning material
case "sahs":
case "lm":
case "dbk":
case "htlm":
$type = "lres";
break;
default:
$type = $result['type'];
break;
}
$title = ilObject::_lookupTitle($result['obj_id']);
$description = ilObject::_lookupDescription($result['obj_id']);
$presentation_results[$oTopic->getId()][$type][] = array('ref_id' => $result['ref_id'],
'title' => $title,
'description' => $description,
'type' => $result['type'],
'obj_id' => $result['obj_id'],
'topic_id' => $topic_id,
'child' => $result['child']);
$this->addPresentationResult($presentation_results[$oTopic->getId()][$type][count($presentation_results[$oTopic->getId()][$type]) - 1]);
}
}
foreach($results as $result)
{
if(!array_key_exists($result['ref_id'], $objects_with_topics) &&
!array_key_exists($result['ref_id'], $objects_with_no_topcis))
{
$objects_with_no_topcis[$result['ref_id']] = $result;
}
}
foreach($objects_with_no_topcis as $result)
{
switch($result['type'])
{
// learning material
case "sahs":
case "lm":
case "dbk":
case "htlm":
$type = "lres";
break;
default:
$type = $result['type'];
break;
}
$title = ilObject::_lookupTitle($result['obj_id']);
$description = ilObject::_lookupDescription($result['obj_id']);
$presentation_results[0][$type][] = array('ref_id' => $result['ref_id'],
'title' => $title,
'description' => $description,
'type' => $result['type'],
'obj_id' => $result['obj_id'],
'child' => $result['child']);
$this->addPresentationResult($presentation_results[0][$type][count($presentation_results[0][$type]) - 1]);
}
}

+ Here is the call graph for this function:

ilShopSearchResult::getSearchType ( )

Definition at line 59 of file class.ilShopSearchResult.php.

References $search_type.

{
}
ilShopSearchResult::getTopics ( )

Definition at line 296 of file class.ilShopSearchResult.php.

Referenced by getResultsForPresentation().

{
return is_array($this->topics) ? $this->topics : array();
}

+ Here is the caller graph for this function:

ilShopSearchResult::ilShopSearchResult (   $a_search_type)

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

{
global $ilUser;
$this->search_type = $a_search_type;
parent::__construct($ilUser->getId());
}
ilShopSearchResult::initUserSearchCache ( )
protected

Init user search cache.

private

Reimplemented from ilSearchResult.

Definition at line 323 of file class.ilShopSearchResult.php.

{
$this->search_cache->switchSearchType($this->search_type);
}
ilShopSearchResult::setResultPageNumber (   $a_result_page_number)

Definition at line 305 of file class.ilShopSearchResult.php.

{
$this->result_page_number = (int)$a_result_page_number > 0 ? $a_result_page_number : 1;
}
ilShopSearchResult::setSearchType (   $_search_type)

Definition at line 52 of file class.ilShopSearchResult.php.

{
$this->search_type = $_search_type;
return $this;
}
ilShopSearchResult::setTopics (   $a_topics = array())

Definition at line 300 of file class.ilShopSearchResult.php.

{
$this->topics = $a_topics;
}

Field Documentation

ilShopSearchResult::$presentation_results = array()
protected

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

Referenced by getResultsForPresentation().

ilShopSearchResult::$result_page_number = 0
protected

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

Referenced by getResultPageNumber().

ilShopSearchResult::$search_type = ''
protected

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

Referenced by getSearchType().

ilShopSearchResult::$topics = array()
protected

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


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