ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilECSCmsData.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
11{
12
16 const MAPPING_MAPPED = 4;
17 const MAPPING_DELETED = 5;
18
19 private $obj_id;
20 private $server_id;
21 private $mid;
22 private $tree_id;
23 private $cms_id;
24 private $title;
25 private $term;
27 private $deleted = false;
28
29 public function __construct($a_obj_id = 0)
30 {
31 $this->obj_id = $a_obj_id;
32 $this->read();
33 }
34
35 public static function treeExists($a_server_id, $a_mid, $a_tree_id)
36 {
37 global $ilDB;
38
39 $query = 'SELECT COUNT(*) num FROM ecs_cms_data '.
40 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
41 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
42 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer');
43
44 $res = $ilDB->query($query);
45 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
46 {
47 return $row->num > 0 ? true : false;
48 }
49 return false;
50 }
51
62 public static function findDeletedNodes($a_server_id,$a_mid, $a_tree_id)
63 {
64 global $ilDB;
65
66 $query = 'SELECT ed.obj_id obj_id FROM ecs_cms_data ed '.
67 'LEFT JOIN ecs_cms_tree et ON ed.obj_id = et.child '.
68 'WHERE et.child IS NULL '.
69 'AND server_id = '.$ilDB->quote($a_server_id,'integer').' '.
70 'AND mid = '.$ilDB->quote($a_mid).' '.
71 'AND tree_id = '.$ilDB->quote($a_tree_id);
72 $res = $ilDB->query($query);
73
74 $deleted = array();
75 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
76 {
77 $deleted[] = $row->obj_id;
78 }
79 return $deleted;
80 }
81
82 public static function lookupObjId($a_server_id, $a_mid, $a_tree_id, $cms_id)
83 {
84 global $ilDB;
85
86 $query = 'SELECT obj_id FROM ecs_cms_data '.
87 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
88 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
89 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
90 'AND cms_id = '.$ilDB->quote($cms_id,'text');
91 $res = $ilDB->query($query);
92
93 $GLOBALS['ilLog']->write(__METHOD__.': '.$query);
94
95 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
96 {
97 return $row->obj_id;
98 }
99 return 0;
100 }
101
110 public static function lookupFirstTreeOfNode($a_server_id, $a_mid, $cms_id)
111 {
112 global $ilDB;
113
114 $GLOBALS['ilLog']->write(__METHOD__.':ASDUASDUASDU '.$a_server_id.' '.$a_mid. ' '.$cms_id);
115
116 $query = 'SELECT tree_id FROM ecs_cms_data '.
117 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
118 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
119 'AND cms_id = '.$ilDB->quote($cms_id,'text'). ' '.
120 'ORDER BY tree_id ';
121 $res = $ilDB->query($query);
122
123 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
124 {
125 return $row->tree_id;
126 }
127 return 0;
128 }
129
134 public static function lookupTitle($a_server_id, $a_mid, $a_tree_id)
135 {
136 global $ilDB;
137
138 $query = 'SELECT * FROM ecs_cms_data '.
139 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
140 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
141 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer');
142 $res = $ilDB->query($query);
143 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
144 {
145 return $row->title;
146 }
147 return '';
148 }
149
157 public static function lookupTopTerm($a_server_id, $a_mid, $a_tree_id)
158 {
159 global $ilDB;
160
161 $query = 'SELECT term FROM ecs_cms_data '.
162 'JOIN ecs_cms_tree ON obj_id = child '.
163 'WHERE tree = '.$ilDB->quote($a_tree_id,'integer').' '.
164 'AND server_id = '.$ilDB->quote($a_server_id,'integer').' '.
165 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
166 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
167 'ORDER BY depth';
168 $res = $ilDB->query($query);
169 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
170 {
171 return $row->term;
172 }
173 return '';
174 }
175
180 public static function lookupStatusByObjId($a_server_id, $a_mid, $a_tree_id, $obj_id)
181 {
182 global $ilDB;
183
184 $query = 'SELECT status,deleted FROM ecs_cms_data '.
185 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
186 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
187 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
188 'AND obj_id = '.$ilDB->quote($obj_id,'integer');
189 $res = $ilDB->query($query);
190 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
191 {
192 if($row->deleted)
193 {
195 }
196 return $row->status;
197 }
199 }
200
205 public static function lookupStatusByCmsId($a_server_id, $a_mid, $a_tree_id, $cms_id)
206 {
207 global $ilDB;
208
209 $query = 'SELECT status FROM ecs_cms_data '.
210 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
211 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
212 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
213 'AND cms_id = '.$ilDB->quote($cms_id,'text');
214 $res = $ilDB->query($query);
215 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
216 {
217 return $row->status;
218 }
220 }
221
222 public static function updateStatus($a_server_id, $a_mid, $a_tree_id)
223 {
224 // Set all status to pending unmapped
225 self::writeAllStatus($a_server_id, $a_mid, $a_tree_id, self::MAPPING_UNMAPPED);
226
227 // Set mapped for mapped and their descendent
228 include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignments.php';
229 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php';
230 foreach(ilECSNodeMappingAssignments::lookupAssignmentIds($a_server_id, $a_mid, $a_tree_id) as $assignment)
231 {
232 $cmsTree = new ilECSCmsTree($a_tree_id);
233 $subIds = self::lookupCmsIds(array_merge($cmsTree->getSubTreeIds($assignment),array($assignment)));
234
236 $a_server_id,
237 $a_mid,
238 $a_tree_id,
239 $subIds,
240 self::MAPPING_MAPPED);
241 }
242 }
243
248 public static function lookupCmsId($a_obj_id)
249 {
250 $cms_ids = self::lookupCmsIds(array($a_obj_id));
251 return $cms_ids[0];
252 }
253
254
255 public static function lookupCmsIds($a_obj_ids)
256 {
257 global $ilDB;
258
259 $query = 'SELECT cms_id FROM ecs_cms_data '.
260 'WHERE '.$ilDB->in('obj_id',$a_obj_ids,false,'integer');
261 $res = $ilDB->query($query);
262
263 $cms_ids = array();
264 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
265 {
266 $cms_ids[] = $row->cms_id;
267 }
268 return $cms_ids;
269 }
270
278 public static function lookupCmsIdsOfTree($a_server_id,$a_mid, $a_tree_id)
279 {
280 global $ilDB;
281
282 $query = 'SELECT cms_id FROM ecs_cms_data '.
283 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
284 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
285 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer');
286 $res = $ilDB->query($query);
287 $cms_ids = array();
288 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
289 {
290 $cms_ids[] = $row->cms_id;
291 }
292 return $cms_ids;
293 }
294
305 public static function writeStatus($a_server_id, $a_mid, $a_tree_id, $cms_ids, $status)
306 {
307 global $ilDB;
308
309 $query = 'UPDATE ecs_cms_data '.
310 'SET status = '.$ilDB->quote($status,'integer'). ' '.
311 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
312 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
313 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
314 'AND '. $ilDB->in('cms_id',$cms_ids,false,'text');
315 $ilDB->manipulate($query);
316 return true;
317 }
318
329 public static function writeAllStatus($a_server_id, $a_mid, $a_tree_id, $status)
330 {
331 global $ilDB;
332
333 $query = 'UPDATE ecs_cms_data '.
334 'SET status = '.$ilDB->quote($status,'integer'). ' '.
335 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
336 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
337 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' ';
338 $ilDB->manipulate($query);
339 return true;
340 }
341
349 public static function writeAllDeleted($a_server_id, $a_mid, $a_tree_id, $a_deleted_flag)
350 {
351 global $ilDB;
352
353 $query = 'UPDATE ecs_cms_data '.
354 'SET deleted = '.$ilDB->quote($a_deleted_flag,'integer'). ' '.
355 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
356 'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
357 'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' ';
358 $ilDB->manipulate($query);
359 return true;
360 }
361
362 public static function lookupTreeIds($a_server_id,$a_mid)
363 {
364 global $ilDB;
365
366 $query = 'SELECT DISTINCT(tree_id) tid FROM ecs_cms_data '.
367 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
368 'AND mid = '.$ilDB->quote($a_mid,'integer');
369 $res = $ilDB->query($query);
370
371 $tree_ids = array();
372 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
373 {
374 $tree_ids[] = $row->tid;
375 }
376 return (array) $tree_ids;
377 }
378
379
380 public function setTitle($a_title)
381 {
382 $this->title = $a_title;
383 }
384
385 public function getTitle()
386 {
387 return $this->title;
388 }
389
390 public function setTerm($a_term)
391 {
392 $this->term = $a_term;
393 }
394
395 public function getTerm()
396 {
397 return $this->term;
398 }
399
400 public function setObjId($a_id)
401 {
402 $this->obj_id = $a_id;
403 }
404
405 public function getObjId()
406 {
407 return $this->obj_id;
408 }
409
410 public function setCmsId($a_id)
411 {
412 $this->cms_id = $a_id;
413 }
414
415 public function getCmsId()
416 {
417 return $this->cms_id;
418 }
419
420 public function setServerId($a_id)
421 {
422 $this->server_id = $a_id;
423 }
424
425 public function getServerId()
426 {
427 return $this->server_id;
428 }
429
430 public function setTreeId($a_id)
431 {
432 $this->tree_id = $a_id;
433 }
434
435 public function getTreeId()
436 {
437 return $this->tree_id;
438 }
439
440 public function setMid($a_id)
441 {
442 $this->mid = $a_id;
443 }
444
445 public function getMid()
446 {
447 return $this->mid;
448 }
449
450 public function setStatus($a_status)
451 {
452 $this->status = $a_status;
453 }
454
455 public function getStatus()
456 {
457 return $this->status;
458 }
459
460 public function setDeleted($a_is_deleted)
461 {
462 $this->deleted = $a_is_deleted;
463 }
464
465 public function isDeleted()
466 {
467 return $this->deleted;
468 }
469
470
471 public function save()
472 {
473 global $ilDB;
474
475 $this->obj_id = $ilDB->nextId('ecs_cms_data');
476
477 $query = 'INSERT INTO ecs_cms_data (obj_id,server_id,mid,tree_id,cms_id,title,term,status,deleted) '.
478 'VALUES ( '.
479 $ilDB->quote($this->obj_id,'integer').', '.
480 $ilDB->quote($this->server_id, 'integer') . ', ' .
481 $ilDB->quote($this->mid,'integer').', '.
482 $ilDB->quote($this->tree_id,'integer').', '.
483 $ilDB->quote($this->cms_id,'text').', '.
484 $ilDB->quote($this->title,'text'). ', '.
485 $ilDB->quote($this->term,'text').', '.
486 $ilDB->quote($this->status,'integer').', '.
487 $ilDB->quote($this->deleted,'integer').' '.
488 ')';
489 $ilDB->manipulate($query);
490 return true;
491 }
492
493 public function update()
494 {
495 global $ilDB;
496
497 $query = "UPDATE ecs_cms_data SET ".
498 'title = '.$ilDB->quote($this->title,'text').', '.
499 'term = '.$ilDB->quote($this->term,'text').', '.
500 'status = '.$ilDB->quote($this->status,'text').', '.
501 'deleted = '.$ilDB->quote($this->isDeleted(),'integer').' '.
502 'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
503 $ilDB->manipulate($query);
504 }
505
506 public function delete()
507 {
508 global $ilDB;
509
510 $query = "DELETE FROM ecs_cms_data ".
511 'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
512 $ilDB->manipulate($query);
513 }
514
515 public function deleteTree()
516 {
517 global $ilDB;
518
519 $query = "DELETE FROM ecs_cms_data ".
520 'WHERE server_id = '.$ilDB->quote($this->server_id,'integer').' '.
521 'AND mid = '.$ilDB->quote($this->mid,'integer').' '.
522 'AND tree_id = '.$ilDB->quote($this->tree_id,'integer').' ';
523 $ilDB->manipulate($query);
524 }
525
526 public static function deleteByServerId($a_server_id)
527 {
528 global $ilDB;
529
530 $query = "DELETE FROM ecs_cms_data ".
531 'WHERE server_id = '.$ilDB->quote($a_server_id,'integer');
532 $ilDB->manipulate($query);
533 }
534
535 protected function read()
536 {
537 global $ilDB;
538
539 $query = 'SELECT * FROM ecs_cms_data '.
540 'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
541 $res = $ilDB->query($query);
542 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
543 {
544 $this->title = $row->title;
545 $this->term = $row->term;
546 $this->server_id = $row->server_id;
547 $this->mid = $row->mid;
548 $this->tree_id = $row->tree_id;
549 $this->cms_id = $row->cms_id;
550 $this->status = $row->status;
551 $this->deleted = $row->deleted;
552 }
553 }
554
555}
556?>
const DB_FETCHMODE_OBJECT
Definition: class.ilDB.php:11
const MAPPING_PENDING_DISCONNECTABLE
static lookupObjId($a_server_id, $a_mid, $a_tree_id, $cms_id)
static writeAllStatus($a_server_id, $a_mid, $a_tree_id, $status)
Update status @global $ilDB.
static updateStatus($a_server_id, $a_mid, $a_tree_id)
const MAPPING_PENDING_NOT_DISCONNECTABLE
static lookupCmsIds($a_obj_ids)
static treeExists($a_server_id, $a_mid, $a_tree_id)
static lookupStatusByCmsId($a_server_id, $a_mid, $a_tree_id, $cms_id)
Lookup status.
static findDeletedNodes($a_server_id, $a_mid, $a_tree_id)
Find deleted nodes Uses a left join since this is more robust.
static lookupTopTerm($a_server_id, $a_mid, $a_tree_id)
Lookup term (highest term in cms tree) @global <type> $ilDB.
__construct($a_obj_id=0)
static writeAllDeleted($a_server_id, $a_mid, $a_tree_id, $a_deleted_flag)
Write deleted status.
static writeStatus($a_server_id, $a_mid, $a_tree_id, $cms_ids, $status)
Update status @global $ilDB.
setDeleted($a_is_deleted)
static lookupCmsId($a_obj_id)
Lookup cms id.
static lookupFirstTreeOfNode($a_server_id, $a_mid, $cms_id)
Lookup first obj_id of cms node @global $ilDB $ilDB.
static lookupStatusByObjId($a_server_id, $a_mid, $a_tree_id, $obj_id)
Lookup status.
static lookupTreeIds($a_server_id, $a_mid)
static lookupCmsIdsOfTree($a_server_id, $a_mid, $a_tree_id)
@global $ilDB $ilDB
static lookupTitle($a_server_id, $a_mid, $a_tree_id)
Lookup title by obj id.
static deleteByServerId($a_server_id)
setStatus($a_status)
static lookupAssignmentIds($a_server_id, $a_mid, $a_tree_id)
Lookup assignments @global $ilDB.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
global $ilDB