ILIAS  Release_5_0_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,'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  {
194  return self::MAPPING_DELETED;
195  }
196  return $row->status;
197  }
198  return self::MAPPING_UNMAPPED;
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  }
219  return self::MAPPING_UNMAPPED;
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 ?>