ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilNavigationHistory Class Reference

Last visited history for repository items. More...

+ Collaboration diagram for ilNavigationHistory:

Public Member Functions

 __construct ()
 
 addItem (int $a_ref_id, string $a_link, string $a_type, string $a_title="", ?int $a_sub_obj_id=null, string $a_goto_link="")
 Add an item to the stack. More...
 
 getItems ()
 Get navigation item stack. More...
 
 deleteDBEntries ()
 
 deleteSessionEntries ()
 

Protected Attributes

ILIAS Repository LastVisited NavigationSessionRepository $repo
 
ilObjUser $user
 
ilDBInterface $db
 
ilTree $tree
 
ilObjectDefinition $obj_definition
 
ilComponentRepository $component_repository
 

Private Attributes

array $items
 

Detailed Description

Last visited history for repository items.

Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 26 of file class.ilNavigationHistory.php.

Constructor & Destructor Documentation

◆ __construct()

ilNavigationHistory::__construct ( )

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

37 {
38 global $DIC;
39
40 $this->user = $DIC->user();
41 $this->db = $DIC->database();
42 $this->tree = $DIC->repositoryTree();
43 $this->obj_definition = $DIC["objDefinition"];
44 $this->items = array();
45
46 $this->repo = new \ILIAS\Repository\LastVisited\NavigationSessionRepository();
47 $this->items = $this->repo->getHistory();
48 $this->component_repository = $DIC["component.repository"];
49 }
global $DIC
Definition: shib_login.php:26

References $DIC, and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ addItem()

ilNavigationHistory::addItem ( int  $a_ref_id,
string  $a_link,
string  $a_type,
string  $a_title = "",
?int  $a_sub_obj_id = null,
string  $a_goto_link = "" 
)

Add an item to the stack.

If ref_id is already used, the item is moved to the top.

Definition at line 55 of file class.ilNavigationHistory.php.

62 : void {
63 $ilUser = $this->user;
65
66 // never store?
67 if ((int) ($ilUser->getPref("store_last_visited") ?? 0) == 2) {
68 return;
69 }
70
71 $a_sub_obj_id = (string) $a_sub_obj_id;
72
73 if ($a_title === "" && $a_ref_id > 0) {
74 $obj_id = ilObject::_lookupObjId($a_ref_id);
75 if (ilObject::_exists($obj_id)) {
76 $a_title = ilObject::_lookupTitle($obj_id);
77 }
78 }
79
80 $id = $a_ref_id . ":" . $a_sub_obj_id;
81
82 $new_items[$id] = array("id" => $id,"ref_id" => $a_ref_id, "link" => $a_link, "title" => $a_title,
83 "type" => $a_type, "sub_obj_id" => $a_sub_obj_id, "goto_link" => $a_goto_link);
84
85 $cnt = 1;
86 foreach ($this->items as $key => $item) {
87 if ($item["id"] != $id && $cnt <= 10) {
88 $new_items[$item["id"]] = $item;
89 $cnt++;
90 }
91 }
92
93 // put items in session
94 $this->items = $new_items;
95
96 $this->repo->setHistory($this->items);
97
98 // only store in session?
99 if ((int) ($ilUser->getPref("store_last_visited") ?? 0) == 1) {
100 return;
101 }
102
103 // update entries in db
104 $ilUser->updateLastVisited($this->getItems());
105 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
getItems()
Get navigation item stack.
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)

Referenced by ilObjIndividualAssessmentGUI\addToNavigationHistory(), ilHTLMPresentationGUI\executeCommand(), and ilObjForumGUI\viewThreadObject().

+ Here is the caller graph for this function:

◆ deleteDBEntries()

ilNavigationHistory::deleteDBEntries ( )

Definition at line 176 of file class.ilNavigationHistory.php.

176 : void
177 {
178 $ilUser = $this->user;
180
181 // update entries in db
182 $ilDB->update(
183 "usr_data",
184 array(
185 "last_visited" => array("clob", serialize(array()))),
186 array(
187 "usr_id" => array("integer", $ilUser->getId()))
188 );
189 }

References $ilDB.

◆ deleteSessionEntries()

ilNavigationHistory::deleteSessionEntries ( )

Definition at line 191 of file class.ilNavigationHistory.php.

191 : void
192 {
193 $this->repo->setHistory([]);
194 }

◆ getItems()

ilNavigationHistory::getItems ( )

Get navigation item stack.

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

110 : array
111 {
114 $ilUser = $this->user;
115 $objDefinition = $this->obj_definition;
117
118 $items = array();
119
120 foreach ($this->items as $it) {
121 if (
122 $tree->isInTree($it["ref_id"]) &&
123 (
124 !$objDefinition->isPluginTypeName($it["type"]) ||
125 (
126 $component_repository->hasPluginId($it["type"]) &&
127 $component_repository->getPluginById($it["type"])->isActive()
128 )
129 )
130 ) {
131 $items[$it["ref_id"] . ":" . $it["sub_obj_id"]] = $it;
132 }
133 }
134 // less than 10? -> get items from db
135 if (count($items) < 10 && $ilUser->getId() !== ANONYMOUS_USER_ID) {
136 $db_entries = $ilUser->getLastVisited();
137 $cnt = count($items);
138 foreach ($db_entries as $rec) {
139 if (
140 $cnt <= 10 &&
141 !isset($items[$rec["ref_id"] . ":" . $rec["sub_obj_id"]]) &&
142 $tree->isInTree((int) $rec["ref_id"]) &&
143 (
144 !$objDefinition->isPluginTypeName($rec["type"]) ||
145 (
146 $component_repository->hasPluginId($rec["type"]) &&
147 $component_repository->getPluginById($rec["type"])->isActive()
148 )
149 )
150 ) {
151 $link = ($rec["goto_link"] != "")
152 ? $rec["goto_link"]
153 : ilLink::_getLink((int) $rec["ref_id"]);
154 if ($rec["sub_obj_id"] != "") {
155 $title = $rec["title"];
156 } elseif ($rec["type"] === "sess") {
157 try {
158 $sess = new ilObjSession((int) $rec["ref_id"]);
159 $title = $sess->getPresentationTitle();
161 $title = ilObject::_lookupTitle(ilObject::_lookupObjId((int) $rec["ref_id"]));
162 }
163 } else {
164 $title = ilObject::_lookupTitle(ilObject::_lookupObjId((int) $rec["ref_id"]));
165 }
166 $items[$rec["ref_id"] . ":" . $rec["sub_obj_id"]] = array("id" => $rec["ref_id"] . ":" . $rec["sub_obj_id"],
167 "ref_id" => $rec["ref_id"], "link" => $link, "title" => $title,
168 "type" => $rec["type"], "sub_obj_id" => $rec["sub_obj_id"], "goto_link" => $rec["goto_link"]);
169 $cnt++;
170 }
171 }
172 }
173 return $items;
174 }
ilObjectDefinition $obj_definition
ilComponentRepository $component_repository
isInTree(?int $a_node_id)
get all information of a node.
const ANONYMOUS_USER_ID
Definition: constants.php:27
getPluginById(string $id)
Get a plugin by id.
hasPluginId(string $id)
Check if a plugin exists.

References $ilDB, ilObject\_lookupObjId(), ilObject\_lookupTitle(), ANONYMOUS_USER_ID, ilComponentRepository\getPluginById(), ilComponentRepository\hasPluginId(), and ilTree\isInTree().

+ Here is the call graph for this function:

Field Documentation

◆ $component_repository

ilComponentRepository ilNavigationHistory::$component_repository
protected

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

◆ $db

ilDBInterface ilNavigationHistory::$db
protected

Definition at line 30 of file class.ilNavigationHistory.php.

◆ $items

array ilNavigationHistory::$items
private

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

◆ $obj_definition

ilObjectDefinition ilNavigationHistory::$obj_definition
protected

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

◆ $repo

ILIAS Repository LastVisited NavigationSessionRepository ilNavigationHistory::$repo
protected

Definition at line 28 of file class.ilNavigationHistory.php.

◆ $tree

ilTree ilNavigationHistory::$tree
protected

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

◆ $user

ilObjUser ilNavigationHistory::$user
protected

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


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