ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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 
13  const MAPPING_UNMAPPED = 1;
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,'integer');
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  $query = 'SELECT tree_id FROM ecs_cms_data '.
115  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
116  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
117  'AND cms_id = '.$ilDB->quote($cms_id,'integer'). ' '.
118  'ORDER BY tree_id ';
119  $res = $ilDB->query($query);
120 
121  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
122  {
123  return $row->tree_id;
124  }
125  return 0;
126  }
127 
132  public static function lookupTitle($a_server_id, $a_mid, $a_tree_id)
133  {
134  global $ilDB;
135 
136  $query = 'SELECT * FROM ecs_cms_data '.
137  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
138  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
139  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer');
140  $res = $ilDB->query($query);
141  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
142  {
143  return $row->title;
144  }
145  return '';
146  }
147 
155  public static function lookupTopTerm($a_server_id, $a_mid, $a_tree_id)
156  {
157  global $ilDB;
158 
159  $query = 'SELECT term FROM ecs_cms_data '.
160  'JOIN ecs_cms_tree ON obj_id = child '.
161  'WHERE tree = '.$ilDB->quote($a_tree_id,'integer').' '.
162  'AND server_id = '.$ilDB->quote($a_server_id,'integer').' '.
163  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
164  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
165  'ORDER BY depth';
166  $res = $ilDB->query($query);
167  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
168  {
169  return $row->term;
170  }
171  return '';
172  }
173 
178  public static function lookupStatusByObjId($a_server_id, $a_mid, $a_tree_id, $obj_id)
179  {
180  global $ilDB;
181 
182  $query = 'SELECT status,deleted FROM ecs_cms_data '.
183  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
184  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
185  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
186  'AND obj_id = '.$ilDB->quote($obj_id,'integer');
187  $res = $ilDB->query($query);
188  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
189  {
190  if($row->deleted)
191  {
192  return self::MAPPING_DELETED;
193  }
194  return $row->status;
195  }
196  return self::MAPPING_UNMAPPED;
197  }
198 
203  public static function lookupStatusByCmsId($a_server_id, $a_mid, $a_tree_id, $cms_id)
204  {
205  global $ilDB;
206 
207  $query = 'SELECT status FROM ecs_cms_data '.
208  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
209  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
210  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
211  'AND cms_id = '.$ilDB->quote($cms_id,'integer');
212  $res = $ilDB->query($query);
213  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
214  {
215  return $row->status;
216  }
217  return self::MAPPING_UNMAPPED;
218  }
219 
220  public static function updateStatus($a_server_id, $a_mid, $a_tree_id)
221  {
222  // Set all status to pending unmapped
223  self::writeAllStatus($a_server_id, $a_mid, $a_tree_id, self::MAPPING_UNMAPPED);
224 
225  // Set mapped for mapped and their descendent
226  include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignments.php';
227  include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php';
228  foreach(ilECSNodeMappingAssignments::lookupAssignmentIds($a_server_id, $a_mid, $a_tree_id) as $assignment)
229  {
230  $cmsTree = new ilECSCmsTree($a_tree_id);
231  $subIds = self::lookupCmsIds(array_merge($cmsTree->getSubTreeIds($assignment),array($assignment)));
232 
234  $a_server_id,
235  $a_mid,
236  $a_tree_id,
237  $subIds,
238  self::MAPPING_MAPPED);
239  }
240  }
241 
246  public static function lookupCmsId($a_obj_id)
247  {
248  $cms_ids = self::lookupCmsIds(array($a_obj_id));
249  return (int) $cms_ids[0];
250  }
251 
252 
253  public static function lookupCmsIds($a_obj_ids)
254  {
255  global $ilDB;
256 
257  $query = 'SELECT cms_id FROM ecs_cms_data '.
258  'WHERE '.$ilDB->in('obj_id',$a_obj_ids,false,'integer');
259  $res = $ilDB->query($query);
260 
261  $cms_ids = array();
262  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
263  {
264  $cms_ids[] = $row->cms_id;
265  }
266  return $cms_ids;
267  }
268 
276  public static function lookupCmsIdsOfTree($a_server_id,$a_mid, $a_tree_id)
277  {
278  global $ilDB;
279 
280  $query = 'SELECT cms_id FROM ecs_cms_data '.
281  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
282  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
283  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer');
284  $res = $ilDB->query($query);
285  $cms_ids = array();
286  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
287  {
288  $cms_ids[] = $row->cms_id;
289  }
290  return $cms_ids;
291  }
292 
303  public static function writeStatus($a_server_id, $a_mid, $a_tree_id, $cms_ids, $status)
304  {
305  global $ilDB;
306 
307  $query = 'UPDATE ecs_cms_data '.
308  'SET status = '.$ilDB->quote($status,'integer'). ' '.
309  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
310  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
311  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' '.
312  'AND '. $ilDB->in('cms_id',$cms_ids,false,'integer');
313  $ilDB->manipulate($query);
314  return true;
315  }
316 
327  public static function writeAllStatus($a_server_id, $a_mid, $a_tree_id, $status)
328  {
329  global $ilDB;
330 
331  $query = 'UPDATE ecs_cms_data '.
332  'SET status = '.$ilDB->quote($status,'integer'). ' '.
333  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
334  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
335  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' ';
336  $ilDB->manipulate($query);
337  return true;
338  }
339 
347  public static function writeAllDeleted($a_server_id, $a_mid, $a_tree_id, $a_deleted_flag)
348  {
349  global $ilDB;
350 
351  $query = 'UPDATE ecs_cms_data '.
352  'SET deleted = '.$ilDB->quote($a_deleted_flag,'integer'). ' '.
353  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
354  'AND mid = '.$ilDB->quote($a_mid,'integer').' '.
355  'AND tree_id = '.$ilDB->quote($a_tree_id,'integer').' ';
356  $ilDB->manipulate($query);
357  return true;
358  }
359 
360  public static function lookupTreeIds($a_server_id,$a_mid)
361  {
362  global $ilDB;
363 
364  $query = 'SELECT DISTINCT(tree_id) tid FROM ecs_cms_data '.
365  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer').' '.
366  'AND mid = '.$ilDB->quote($a_mid,'integer');
367  $res = $ilDB->query($query);
368 
369  $tree_ids = array();
370  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
371  {
372  $tree_ids[] = $row->tid;
373  }
374  return (array) $tree_ids;
375  }
376 
377 
378  public function setTitle($a_title)
379  {
380  $this->title = $a_title;
381  }
382 
383  public function getTitle()
384  {
385  return $this->title;
386  }
387 
388  public function setTerm($a_term)
389  {
390  $this->term = $a_term;
391  }
392 
393  public function getTerm()
394  {
395  return $this->term;
396  }
397 
398  public function setObjId($a_id)
399  {
400  $this->obj_id = $a_id;
401  }
402 
403  public function getObjId()
404  {
405  return $this->obj_id;
406  }
407 
408  public function setCmsId($a_id)
409  {
410  $this->cms_id = $a_id;
411  }
412 
413  public function getCmsId()
414  {
415  return $this->cms_id;
416  }
417 
418  public function setServerId($a_id)
419  {
420  $this->server_id = $a_id;
421  }
422 
423  public function getServerId()
424  {
425  return $this->server_id;
426  }
427 
428  public function setTreeId($a_id)
429  {
430  $this->tree_id = $a_id;
431  }
432 
433  public function getTreeId()
434  {
435  return $this->tree_id;
436  }
437 
438  public function setMid($a_id)
439  {
440  $this->mid = $a_id;
441  }
442 
443  public function getMid()
444  {
445  return $this->mid;
446  }
447 
448  public function setStatus($a_status)
449  {
450  $this->status = $a_status;
451  }
452 
453  public function getStatus()
454  {
455  return $this->status;
456  }
457 
458  public function setDeleted($a_is_deleted)
459  {
460  $this->deleted = $a_is_deleted;
461  }
462 
463  public function isDeleted()
464  {
465  return $this->deleted;
466  }
467 
468 
469  public function save()
470  {
471  global $ilDB;
472 
473  $this->obj_id = $ilDB->nextId('ecs_cms_data');
474 
475  $query = 'INSERT INTO ecs_cms_data (obj_id,server_id,mid,tree_id,cms_id,title,term,status,deleted) '.
476  'VALUES ( '.
477  $ilDB->quote($this->obj_id,'integer').', '.
478  $ilDB->quote($this->server_id, 'integer') . ', ' .
479  $ilDB->quote($this->mid,'integer').', '.
480  $ilDB->quote($this->tree_id,'integer').', '.
481  $ilDB->quote($this->cms_id,'integer').', '.
482  $ilDB->quote($this->title,'text'). ', '.
483  $ilDB->quote($this->term,'text').', '.
484  $ilDB->quote($this->status,'integer').', '.
485  $ilDB->quote($this->deleted,'integer').' '.
486  ')';
487  $ilDB->manipulate($query);
488  return true;
489  }
490 
491  public function update()
492  {
493  global $ilDB;
494 
495  $query = "UPDATE ecs_cms_data SET ".
496  'title = '.$ilDB->quote($this->title,'text').', '.
497  'term = '.$ilDB->quote($this->term,'text').', '.
498  'status = '.$ilDB->quote($this->status,'text').', '.
499  'deleted = '.$ilDB->quote($this->isDeleted(),'integer').' '.
500  'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
501  $ilDB->manipulate($query);
502  }
503 
504  public function delete()
505  {
506  global $ilDB;
507 
508  $query = "DELETE FROM ecs_cms_data ".
509  'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
510  $ilDB->manipulate($query);
511  }
512 
513  public function deleteTree()
514  {
515  global $ilDB;
516 
517  $query = "DELETE FROM ecs_cms_data ".
518  'WHERE server_id = '.$ilDB->quote($this->server_id,'integer').' '.
519  'AND mid = '.$ilDB->quote($this->mid,'integer').' '.
520  'AND tree_id = '.$ilDB->quote($this->tree_id,'integer').' ';
521  $ilDB->manipulate($query);
522  }
523 
524  public static function deleteByServerId($a_server_id)
525  {
526  global $ilDB;
527 
528  $query = "DELETE FROM ecs_cms_data ".
529  'WHERE server_id = '.$ilDB->quote($a_server_id,'integer');
530  $ilDB->manipulate($query);
531  }
532 
533  protected function read()
534  {
535  global $ilDB;
536 
537  $query = 'SELECT * FROM ecs_cms_data '.
538  'WHERE obj_id = '.$ilDB->quote($this->obj_id,'integer');
539  $res = $ilDB->query($query);
540  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
541  {
542  $this->title = $row->title;
543  $this->term = $row->term;
544  $this->server_id = $row->server_id;
545  $this->mid = $row->mid;
546  $this->tree_id = $row->tree_id;
547  $this->cms_id = $row->cms_id;
548  $this->status = $row->status;
549  $this->deleted = $row->deleted;
550  }
551  }
552 
553 }
554 ?>