ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilECSCmsTreeCommandQueueHandler Class Reference

Description of class. More...

+ Inheritance diagram for ilECSCmsTreeCommandQueueHandler:
+ Collaboration diagram for ilECSCmsTreeCommandQueueHandler:

Public Member Functions

 __construct (ilECSSetting $server)
 Constructor. More...
 
 getServer ()
 Get server. More...
 
 handleCreate (ilECSSetting $server, $a_content_id)
 Handle create. More...
 
 handleDelete (ilECSSetting $server, $a_content_id)
 Handle delete. More...
 
 handleUpdate (ilECSSetting $server, $a_content_id)
 Handle update. More...
 
 handleCreate (ilECSSetting $server, $a_content_id)
 Handle create event. More...
 
 handleUpdate (ilECSSetting $server, $a_content_id)
 Handle update. More...
 
 handleDelete (ilECSSetting $server, $a_content_id)
 Handle delete action. More...
 

Private Member Functions

 init ()
 init handler More...
 

Private Attributes

 $server = null
 
 $mid = 0
 

Detailed Description

Description of class.

Author
Stefan Meyer smeye.nosp@m.r.il.nosp@m.ias@g.nosp@m.mx.d.nosp@m.e

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

Constructor & Destructor Documentation

◆ __construct()

ilECSCmsTreeCommandQueueHandler::__construct ( ilECSSetting  $server)

Constructor.

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

References $server, and init().

+ Here is the call graph for this function:

Member Function Documentation

◆ getServer()

ilECSCmsTreeCommandQueueHandler::getServer ( )

Get server.

Returns
ilECSServerSetting

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

32 {
33 return $this->server;
34 }

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 
)

Handle create.

Parameters
ilECSSetting$server
type$a_content_id

Implements ilECSCommandQueueHandler.

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

43 {
44 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php';
45 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php';
46 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSDirectoryTreeConnector.php';
47
48 try
49 {
50 $dir_reader = new ilECSDirectoryTreeConnector($this->getServer());
51 $res = $dir_reader->getDirectoryTree($a_content_id);
52 $nodes = $res->getResult();
53 }
55 {
56 $GLOBALS['ilLog']->write(__METHOD__.': Tree creation failed with mesage ' . $e->getMessage());
57 return false;
58 }
59
60 $cms_tree = $nodes;
61 $data = new ilECSCmsData();
62 $data->setServerId($server->getServerId());
63 $data->setMid($this->mid);
64 $data->setCmsId($cms_tree->rootID);
65 $data->setTreeId($a_content_id);
66 $data->setTitle($cms_tree->directoryTreeTitle);
67 $data->setTerm($cms_tree->term);
68 $data->save();
69
70 $tree = new ilECSCmsTree($a_content_id);
71 $tree->insertRootNode($a_content_id, $data->getObjId());
72 $tree->setRootId($data->getObjId());
73
74
75 foreach((array) $cms_tree->nodes as $node)
76 {
77 // Add data entry
78 $data = new ilECSCmsData();
79 $data->setServerId($this->getServer()->getServerId());
80 $data->setMid($this->mid);
81 $data->setCmsId($node->id);
82 $data->setTreeId($a_content_id);
83 $data->setTitle($node->title);
84 $data->setTerm($node->term);
85 $data->save();
86
87 // add to tree
88 if($node->parent->id)
89 {
90 $parent_id = ilECSCmsData::lookupObjId(
91 $this->getServer()->getServerId(),
92 $this->mid,
93 $a_content_id,
94 $node->parent->id
95 );
96 $tree->insertNode($data->getObjId(), $parent_id);
97 }
98 }
99 return true;
100 }
static lookupObjId($a_server_id, $a_mid, $a_tree_id, $cms_id)
$data
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276

References $data, $GLOBALS, $res, $server, getServer(), and ilECSCmsData\lookupObjId().

+ Here is the call graph for this function:

◆ handleDelete()

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

Handle delete.

Parameters
ilECSSetting$server
type$a_content_id

Implements ilECSCommandQueueHandler.

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

108 {
109 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php';
110 $data = new ilECSCmsData();
111 $data->setServerId($this->getServer()->getServerId());
112 $data->setMid($this->mid);
113 $data->setTreeId($a_content_id);
114 $data->deleteTree();
115
116 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php';
117 $tree = new ilECSCmsTree($a_content_id);
118 $tree->deleteTree($tree->getNodeData(ilECSCmsTree::lookupRootId($a_content_id)));
119
120 include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignments.php';
122 $this->getServer()->getServerId(),
123 $this->mid,
124 $a_content_id
125 );
126 return true;
127 }
static lookupRootId($a_tree_id)
lookup root id
static deleteMappings($a_server_id, $a_mid, $a_tree_id)
Delete mappings @global $ilDB $ilDB.

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

+ Here is the call graph for this function:

◆ handleUpdate()

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

Handle update.

Parameters
ilECSSetting$server
type$a_content_id

Implements ilECSCommandQueueHandler.

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

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

References $data, $GLOBALS, $res, $server, ilECSCmsTree\deleteByTreeId(), ilECSCmsData\findDeletedNodes(), getServer(), ilECSCmsData\lookupObjId(), ilECSCmsTree\lookupRootId(), and ilECSCmsData\writeAllDeleted().

+ Here is the call graph for this function:

◆ init()

ilECSCmsTreeCommandQueueHandler::init ( )
private

init handler

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

297 {
298 include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php';
299 $this->mid = ilECSParticipantSettings::loookupCmsMid($this->getServer()->getServerId());
300 }
static loookupCmsMid($a_server_id)
Lookup mid of current cms participant @global $ilDB.

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

Referenced by __construct().

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

Field Documentation

◆ $mid

ilECSCmsTreeCommandQueueHandler::$mid = 0
private

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

◆ $server

ilECSCmsTreeCommandQueueHandler::$server = null
private

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