ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilECSCmsTreeCommandQueueHandler Class Reference
+ Inheritance diagram for ilECSCmsTreeCommandQueueHandler:
+ Collaboration diagram for ilECSCmsTreeCommandQueueHandler:

Public Member Functions

 __construct (ilECSSetting $server)
 
 getServer ()
 Get server. More...
 
 handleCreate (ilECSSetting $server, $a_content_id)
 
 handleDelete (ilECSSetting $server, int $a_content_id)
 Handle delete. More...
 
 handleUpdate (ilECSSetting $server, $a_content_id)
 Handle update. More...
 
- Public Member Functions inherited from ilECSCommandQueueHandler
 handleCreate (ilECSSetting $server, int $a_content_id)
 Handle create event. More...
 
 handleUpdate (ilECSSetting $server, int $a_content_id)
 Handle update. More...
 

Private Member Functions

 init ()
 init handler More...
 

Private Attributes

ilLogger $log
 
ilECSSetting $server = null
 
int $mid = 0
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilECSCmsTreeCommandQueueHandler::__construct ( ilECSSetting  $server)

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

References $DIC, $server, init(), and ILIAS\UI\examples\Progress\Bar\server().

32  {
33  global $DIC;
34  $this->log = $DIC->logger()->wsrv();
35 
36  $this->server = $server;
37  $this->init();
38  }
server()
description: > This example shows how a Progress Bar can be rendered and updated by the server...
Definition: server.php:43
global $DIC
Definition: shib_login.php:22
+ Here is the call graph for this function:

Member Function Documentation

◆ getServer()

ilECSCmsTreeCommandQueueHandler::getServer ( )

Get server.

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

References $server.

Referenced by handleCreate(), handleDelete(), handleUpdate(), and init().

+ Here is the caller graph for this function:

◆ handleCreate()

ilECSCmsTreeCommandQueueHandler::handleCreate ( ilECSSetting  $server,
  $a_content_id 
)

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

References $data, Vendor\Package\$e, $res, ilLogLevel\DEBUG, getServer(), ilECSSetting\getServerId(), and ilECSCmsData\lookupObjId().

52  : bool
53  {
54  $this->log->debug('ECS cms tree create');
55 
56 
57  try {
58  $dir_reader = new ilECSDirectoryTreeConnector($this->getServer());
59  $res = $dir_reader->getDirectoryTree($a_content_id);
60  $nodes = $res->getResult();
61 
62  if ($this->log->isHandling(ilLogLevel::DEBUG)) {
63  $this->log->dump($nodes, ilLogLevel::DEBUG);
64  }
65  } catch (ilECSConnectorException $e) {
66  $this->log->error('Tree creation failed with mesage ' . $e->getMessage());
67  return false;
68  }
69 
70  $cms_tree = $nodes;
71  $data = new ilECSCmsData();
72  $data->setServerId($server->getServerId());
73  $data->setMid($this->mid);
74  $data->setCmsId($cms_tree->rootID);
75  $data->setTreeId($a_content_id);
76  $data->setTitle($cms_tree->directoryTreeTitle);
77  $data->setTerm($cms_tree->term);
78  $data->save();
79 
80  $tree = new ilECSCmsTree($a_content_id);
81  $tree->insertRootNode($a_content_id, $data->getObjId());
82  $tree->setRootId($data->getObjId());
83 
84 
85  foreach ((array) $cms_tree->nodes as $node) {
86  // Add data entry
87  $data = new ilECSCmsData();
88  $data->setServerId($this->getServer()->getServerId());
89  $data->setMid($this->mid);
90  $data->setCmsId($node->id);
91  $data->setTreeId($a_content_id);
92  $data->setTitle($node->title);
93  $data->setTerm($node->term);
94  $data->save();
95 
96  // add to tree
97  if ($node->parent->id) {
98  $parent_id = ilECSCmsData::lookupObjId(
99  $this->getServer()->getServerId(),
100  $this->mid,
101  $a_content_id,
102  $node->parent->id
103  );
104  $tree->insertNode($data->getObjId(), $parent_id);
105  }
106  }
107  return true;
108  }
$res
Definition: ltiservices.php:66
getServerId()
Get current server id.
static lookupObjId(int $a_server_id, int $a_mid, int $a_tree_id, string $cms_id)
+ Here is the call graph for this function:

◆ handleDelete()

ilECSCmsTreeCommandQueueHandler::handleDelete ( ilECSSetting  $server,
int  $a_content_id 
)

Handle delete.

Implements ilECSCommandQueueHandler.

Definition at line 113 of file class.ilECSCmsTreeCommandQueueHandler.php.

References $data, ilECSNodeMappingAssignments\deleteMappings(), getServer(), and ilECSCmsTree\lookupRootId().

113  : bool
114  {
115  $this->log->debug('ECS cms tree delete');
116 
117  $data = new ilECSCmsData();
118  $data->setServerId($this->getServer()->getServerId());
119  $data->setMid($this->mid);
120  $data->setTreeId($a_content_id);
121  $data->deleteTree();
122 
123  $tree = new ilECSCmsTree($a_content_id);
124  $tree->deleteTree($tree->getNodeData(ilECSCmsTree::lookupRootId($a_content_id)));
125 
127  $this->getServer()->getServerId(),
128  $this->mid,
129  $a_content_id
130  );
131  return true;
132  }
static lookupRootId($a_tree_id)
lookup root id
static deleteMappings(int $a_server_id, int $a_mid, int $a_tree_id)
Delete mappings.
+ Here is the call graph for this function:

◆ handleUpdate()

ilECSCmsTreeCommandQueueHandler::handleUpdate ( ilECSSetting  $server,
  $a_content_id 
)

Handle update.

Definition at line 137 of file class.ilECSCmsTreeCommandQueueHandler.php.

References $data, Vendor\Package\$e, $res, ilLogLevel\DEBUG, ilECSCmsTree\deleteByTreeId(), ilECSCmsData\findDeletedNodes(), getServer(), ilECSSetting\getServerId(), ilECSCmsData\lookupObjId(), ilECSCmsTree\lookupRootId(), and ilECSCmsData\writeAllDeleted().

137  : bool
138  {
139  $this->log->debug('ECS cms tree update');
140 
141 
142  // 1) Mark all nodes as deleted
143  // 2a) Delete cms tree
144  // 2) Add cms tree table entries
145  // 2) Replace the cms data table entries
146  // 3) Insert deleted tree nodes in tree
147  // 4) Sync tree
148 
149  try {
150  $dir_reader = new ilECSDirectoryTreeConnector($this->getServer());
151  $res = $dir_reader->getDirectoryTree($a_content_id);
152  $nodes = $res->getResult();
153  if ($this->log->isHandling(ilLogLevel::DEBUG)) {
154  $this->log->dump($nodes, ilLogLevel::DEBUG);
155  }
156  } catch (ilECSConnectorException $e) {
157  $this->log->error('Tree creation failed with message ' . $e->getMessage());
158  return false;
159  }
160 
161  // read old tree structure
162  $tree = new ilECSCmsTree($a_content_id);
163 
164  $root_node = $tree->getNodeData(ilECSCmsTree::lookupRootId($a_content_id));
165 
166  $old_nodes = array();
167  if ($root_node['child']) {
168  $old_nodes = $tree->getSubTree($root_node, true);
169  }
170 
171  if ($this->log->isHandling(ilLogLevel::DEBUG)) {
172  $this->log->debug('Old tree data... ');
173  $this->log->dump($old_nodes, ilLogLevel::DEBUG);
174  }
175 
176  // Delete old cms tree
177  ilECSCmsTree::deleteByTreeId($a_content_id);
178 
179  // Mark all nodes in cms data as deleted
181  $this->getServer()->getServerId(),
182  $this->mid,
183  $a_content_id,
184  true
185  );
186 
187  // Check for update or new entry
188  $cms_tree = $nodes;
189 
190  $data_obj_id = ilECSCmsData::lookupObjId(
191  $this->getServer()->getServerId(),
192  $this->mid,
193  $a_content_id,
194  $cms_tree->rootID
195  );
196 
197  $data = new ilECSCmsData($data_obj_id);
198  $data->setServerId($server->getServerId());
199  $data->setMid($this->mid);
200  $data->setCmsId($cms_tree->rootID);
201  $data->setTreeId($a_content_id);
202  $data->setTitle($cms_tree->directoryTreeTitle);
203  $data->setTerm($cms_tree->term);
204 
205  if ($data_obj_id) {
206  $data->setDeleted(false);
207  $data->update();
208  } else {
209  $data->save();
210  }
211 
212  $tree->insertRootNode($a_content_id, $data->getObjId());
213  $tree->setRootId($data->getObjId());
214 
215 
216  foreach ((array) $cms_tree->nodes as $node) {
217  $data_obj_id = ilECSCmsData::lookupObjId(
218  $this->getServer()->getServerId(),
219  $this->mid,
220  $a_content_id,
221  $node->id
222  );
223 
224  // update data entry
225  $data = new ilECSCmsData($data_obj_id);
226  $data->setTitle($node->title);
227  $data->setTerm($node->term);
228  $data->setDeleted(false);
229 
230  if ($data_obj_id) {
231  $data->update();
232  } else {
233  $data->setCmsId($node->id);
234  $data->setMid($this->mid);
235  $data->setServerId($this->getServer()->getServerId());
236  $data->setTreeId($a_content_id);
237  $data->setDeleted(false);
238  $data->save();
239 
240  $data_obj_id = $data->getObjId();
241  }
242 
243  // add to tree
244  $parent_id = ilECSCmsData::lookupObjId(
245  $this->getServer()->getServerId(),
246  $this->mid,
247  $a_content_id,
248  $node->parent->id
249  );
250  $tree->insertNode($data->getObjId(), $parent_id);
251  }
252 
253  // Insert deleted nodes in tree
255  $this->getServer()->getServerId(),
256  $this->mid,
257  $a_content_id
258  );
259 
260  foreach ($deleted as $obj_id) {
261  $parent = 0;
262  foreach ($old_nodes as $node) {
263  if ($node['child'] === $obj_id) {
264  $parent = $node['parent'];
265  break;
266  }
267  }
268 
269  if ($parent && $tree->isInTree($parent)) {
270  $tree->insertNode($obj_id, $parent);
271  }
272  }
273 
274  // Sync tree
275  $sync = new ilECSCmsTreeSynchronizer(
276  $this->getServer(),
277  $this->mid,
278  $a_content_id
279  );
280  $sync->sync();
281 
282  return true;
283  }
$res
Definition: ltiservices.php:66
static writeAllDeleted($a_server_id, $a_mid, $a_tree_id, $a_deleted_flag)
Write deleted status.
getServerId()
Get current server id.
static lookupRootId($a_tree_id)
lookup root id
static lookupObjId(int $a_server_id, int $a_mid, int $a_tree_id, string $cms_id)
static findDeletedNodes(int $a_server_id, int $a_mid, int $a_tree_id)
Find deleted nodes Uses a left join since this is more robust.
static deleteByTreeId(int $a_tree_id)
Delete tree by tree_id.
+ Here is the call graph for this function:

◆ init()

ilECSCmsTreeCommandQueueHandler::init ( )
private

init handler

Definition at line 288 of file class.ilECSCmsTreeCommandQueueHandler.php.

References ilECSParticipantSettings\getInstanceByServerId(), and getServer().

Referenced by __construct().

288  : void
289  {
290  $this->mid = ilECSParticipantSettings::getInstanceByServerId($this->getServer()->getServerId())->lookupCmsMid();
291  }
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $log

ilLogger ilECSCmsTreeCommandQueueHandler::$log
private

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

◆ $mid

int ilECSCmsTreeCommandQueueHandler::$mid = 0
private

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

◆ $server

ilECSSetting ilECSCmsTreeCommandQueueHandler::$server = null
private

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

Referenced by __construct(), and getServer().


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