ILIAS  Release_4_2_x_branch Revision 61807
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilLinkResourceItems.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once "./classes/class.ilObjectGUI.php";
6 
16 {
21  function ilLinkResourceItems($webr_id)
22  {
23  global $ilDB;
24 
25  $this->webr_ref_id = 0;
26  $this->webr_id = $webr_id;
27 
28  $this->db =& $ilDB;
29  }
30 
31  // BEGIN PATCH Lucene search
32  public static function lookupItem($a_webr_id,$a_link_id)
33  {
34  global $ilDB;
35 
36  $query = "SELECT * FROM webr_items ".
37  "WHERE webr_id = ".$ilDB->quote($a_webr_id ,'integer')." ".
38  "AND link_id = ".$ilDB->quote($a_link_id ,'integer');
39 
40  $res = $ilDB->query($query);
41  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
42  {
43  $item['title'] = $row->title;
44  $item['description'] = $row->description;
45  $item['target'] = $row->target;
46  $item['active'] = (bool) $row->active;
47  $item['disable_check'] = $row->disable_check;
48  $item['create_date'] = $row->create_date;
49  $item['last_update'] = $row->last_update;
50  $item['last_check'] = $row->last_check;
51  $item['valid'] = $row->valid;
52  $item['link_id'] = $row->link_id;
53  }
54  return $item ? $item : array();
55 
56  }
57  // END PATCH Lucene Search
58 
59  // SET GET
60  function setLinkResourceRefId($a_ref_id)
61  {
62  $this->webr_ref_id = $a_ref_id;
63  }
65  {
66  return $this->webr_ref_id;
67  }
68  function setLinkResourceId($a_id)
69  {
70  $this->webr_id = $a_id;
71  }
72  function getLinkResourceId()
73  {
74  return $this->webr_id;
75  }
76  function setLinkId($a_id)
77  {
78  $this->id = $a_id;
79  }
80  function getLinkId()
81  {
82  return $this->id;
83  }
84  function setTitle($a_title)
85  {
86  $this->title = $a_title;
87  }
88  function getTitle()
89  {
90  return $this->title;
91  }
92  function setDescription($a_description)
93  {
94  $this->description = $a_description;
95  }
96  function getDescription()
97  {
98  return $this->description;
99  }
100  function setTarget($a_target)
101  {
102  $this->target = $a_target;
103  }
104  function getTarget()
105  {
106  return $this->target;
107  }
108  function setActiveStatus($a_status)
109  {
110  $this->status = (int) $a_status;
111  }
112  function getActiveStatus()
113  {
114  return (bool) $this->status;
115  }
116  function setDisableCheckStatus($a_status)
117  {
118  $this->check = (int) $a_status;
119  }
121  {
122  return (bool) $this->check;
123  }
124  // PRIVATE
125  function __setCreateDate($a_date)
126  {
127  $this->c_date = $a_date;
128  }
129  function getCreateDate()
130  {
131  return $this->c_date;
132  }
133  // PRIVATE
134  function __setLastUpdateDate($a_date)
135  {
136  $this->m_date = $a_date;
137  }
138  function getLastUpdateDate()
139  {
140  return $this->m_date;
141  }
142  function setLastCheckDate($a_date)
143  {
144  $this->last_check = $a_date;
145  }
146  function getLastCheckDate()
147  {
148  return $this->last_check;
149  }
150  function setValidStatus($a_status)
151  {
152  $this->valid = (int) $a_status;
153  }
154  function getValidStatus()
155  {
156  return (bool) $this->valid;
157  }
158 
166  public function cloneItems($a_new_id)
167  {
168  include_once 'Modules/WebResource/classes/class.ilParameterAppender.php';
169  $appender = new ilParameterAppender($this->getLinkResourceId());
170 
171  foreach($this->getAllItems() as $item)
172  {
173  $new_item = new ilLinkResourceItems($a_new_id);
174  $new_item->setTitle($item['title']);
175  $new_item->setDescription($item['description']);
176  $new_item->setTarget($item['target']);
177  $new_item->setActiveStatus($item['active']);
178  $new_item->setDisableCheckStatus($item['disable_check']);
179  $new_item->setLastCheckDate($item['last_check']);
180  $new_item->setValidStatus($item['valid']);
181  $new_item->add(true);
182 
183  // Add parameters
184  foreach(ilParameterAppender::_getParams($item['link_id']) as $param_id => $data)
185  {
186  $appender->setName($data['name']);
187  $appender->setValue($data['value']);
188  $appender->add($new_item->getLinkId());
189  }
190 
191  unset($new_item);
192  }
193  return true;
194  }
195 
196  function delete($a_item_id,$a_update_history = true)
197  {
198  global $ilDB;
199 
200  $item = $this->getItem($a_item_id);
201 
202  $query = "DELETE FROM webr_items ".
203  "WHERE webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer')." ".
204  "AND link_id = ".$ilDB->quote($a_item_id ,'integer');
205  $res = $ilDB->manipulate($query);
206 
207  if($a_update_history)
208  {
209  include_once("classes/class.ilHistory.php");
210  ilHistory::_createEntry($this->getLinkResourceId(), "delete",
211  $item['title']);
212  }
213 
214  return true;
215  }
216 
217  function update($a_update_history = true)
218  {
219  global $ilDB;
220 
221  if(!$this->getLinkId())
222  {
223  return false;
224  }
225 
226  $this->__setLastUpdateDate(time());
227  $query = "UPDATE webr_items ".
228  "SET title = ".$ilDB->quote($this->getTitle() ,'text').", ".
229  "description = ".$ilDB->quote($this->getDescription() ,'text').", ".
230  "target = ".$ilDB->quote($this->getTarget() ,'text').", ".
231  "active = ".$ilDB->quote($this->getActiveStatus() ,'integer').", ".
232  "valid = ".$ilDB->quote($this->getValidStatus() ,'integer').", ".
233  "disable_check = ".$ilDB->quote($this->getDisableCheckStatus() ,'integer').", ".
234  "last_update = ".$ilDB->quote($this->getLastUpdateDate() ,'integer').", ".
235  "last_check = ".$ilDB->quote($this->getLastCheckDate() ,'integer')." ".
236  "WHERE link_id = ".$ilDB->quote($this->getLinkId() ,'integer')." ".
237  "AND webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer');
238  $res = $ilDB->manipulate($query);
239 
240  if($a_update_history)
241  {
242  include_once("classes/class.ilHistory.php");
243  ilHistory::_createEntry($this->getLinkResourceId(), "update",
244  $this->getTitle());
245  }
246 
247  return true;
248  }
249 
250  function updateValid($a_status)
251  {
252  global $ilDB;
253 
254  $query = "UPDATE webr_items ".
255  "SET valid = ".$ilDB->quote($a_status ,'integer')." ".
256  "WHERE link_id = ".$ilDB->quote($this->getLinkId() ,'integer');
257  $res = $ilDB->manipulate($query);
258 
259  return true;
260  }
261 
262  function updateActive($a_status)
263  {
264  global $ilDB;
265 
266  $query = "UPDATE webr_items ".
267  "SET active = ".$ilDB->quote($a_status ,'integer')." ".
268  "WHERE link_id = ".$ilDB->quote($this->getLinkId() ,'integer');
269 
270  $this->db->query($query);
271 
272  return true;
273  }
274  function updateDisableCheck($a_status)
275  {
276  global $ilDB;
277 
278  $query = "UPDATE webr_items ".
279  "SET disable_check = ".$ilDB->quote($a_status ,'integer')." ".
280  "WHERE link_id = ".$ilDB->quote($this->getLinkId() ,'integer');
281  $res = $ilDB->manipulate($query);
282 
283  return true;
284  }
285 
286  function updateLastCheck($a_offset = 0)
287  {
288  global $ilDB;
289 
290  if($a_offset)
291  {
292  $period = $a_offset ? $a_offset : 0;
293  $time = time() - $period;
294 
295 
296  $query = "UPDATE webr_items ".
297  "SET last_check = ".$ilDB->quote(time() ,'integer')." ".
298  "WHERE webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer')." ".
299  "AND disable_check = '0' ".
300  "AND last_check < ".$ilDB->quote($time ,'integer');
301  $res = $ilDB->manipulate($query);
302  }
303  else
304  {
305  $query = "UPDATE webr_items ".
306  "SET last_check = ".$ilDB->quote(time() ,'integer')." ".
307  "WHERE webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer')." ".
308  "AND disable_check = '0' ";
309  $res = $ilDB->manipulate($query);
310  }
311  return true;
312  }
313 
314  function updateValidByCheck($a_offset = 0)
315  {
316  global $ilDB;
317 
318  if($a_offset)
319  {
320  $period = $a_offset ? $a_offset : 0;
321  $time = time() - $period;
322 
323 
324  $query = "UPDATE webr_items ".
325  "SET valid = '1' ".
326  "WHERE disable_check = '0' ".
327  "AND webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer')." ".
328  "AND last_check < ".$ilDB->quote($time ,'integer');
329  $res = $ilDB->manipulate($query);
330  }
331  else
332  {
333  $query = "UPDATE webr_items ".
334  "SET valid = '1' ".
335  "WHERE disable_check = '0' ".
336  "AND webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer');
337  $res = $ilDB->manipulate($query);
338  }
339  return true;
340  }
341 
342 
343  function add($a_update_history = true)
344  {
345  global $ilDB;
346 
347  $this->__setLastUpdateDate(time());
348  $this->__setCreateDate(time());
349 
350  $next_id = $ilDB->nextId('webr_items');
351  $query = "INSERT INTO webr_items (link_id,title,description,target,active,disable_check,".
352  "last_update,create_date,webr_id,valid) ".
353  "VALUES( ".
354  $ilDB->quote($next_id ,'integer').", ".
355  $ilDB->quote($this->getTitle() ,'text').", ".
356  $ilDB->quote($this->getDescription() ,'text').", ".
357  $ilDB->quote($this->getTarget() ,'text').", ".
358  $ilDB->quote($this->getActiveStatus() ,'integer').", ".
359  $ilDB->quote($this->getDisableCheckStatus() ,'integer').", ".
360  $ilDB->quote($this->getLastUpdateDate() ,'integer').", ".
361  $ilDB->quote($this->getCreateDate() ,'integer').", ".
362  $ilDB->quote($this->getLinkResourceId() ,'integer').", ".
363  $ilDB->quote($this->getValidStatus(),'integer'). ' '.
364  ")";
365  $res = $ilDB->manipulate($query);
366 
367  $link_id = $next_id;
368  $this->setLinkId($link_id);
369 
370  if($a_update_history)
371  {
372  include_once("classes/class.ilHistory.php");
374  $this->getTitle());
375  }
376 
377  return $link_id;
378  }
379  function readItem($a_link_id)
380  {
381  global $ilDB;
382 
383  $query = "SELECT * FROM webr_items ".
384  "WHERE link_id = ".$ilDB->quote($a_link_id ,'integer');
385 
386  $res = $this->db->query($query);
387  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
388  {
389  $this->setTitle($row->title);
390  $this->setDescription($row->description);
391  $this->setTarget($row->target);
392  $this->setActiveStatus($row->active);
393  $this->setDisableCheckStatus($row->disable_check);
394  $this->__setCreateDate($row->create_date);
395  $this->__setLastUpdateDate($row->last_update);
396  $this->setLastCheckDate($row->last_check);
397  $this->setValidStatus($row->valid);
398  $this->setLinkId($row->link_id);
399  }
400  return true;
401  }
402 
403 
404  function getItem($a_link_id)
405  {
406  global $ilDB;
407 
408  $query = "SELECT * FROM webr_items ".
409  "WHERE webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer')." ".
410  "AND link_id = ".$ilDB->quote($a_link_id ,'integer');
411 
412  $res = $this->db->query($query);
413  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
414  {
415  $item['title'] = $row->title;
416  $item['description'] = $row->description;
417  $item['target'] = $row->target;
418  $item['active'] = (bool) $row->active;
419  $item['disable_check'] = $row->disable_check;
420  $item['create_date'] = $row->create_date;
421  $item['last_update'] = $row->last_update;
422  $item['last_check'] = $row->last_check;
423  $item['valid'] = $row->valid;
424  $item['link_id'] = $row->link_id;
425  }
426  return $item ? $item : array();
427  }
428 
434  public static function getAllItemIds($a_webr_id)
435  {
436  global $ilDB;
437 
438  $query = "SELECT link_id FROM webr_items ".
439  "WHERE webr_id = ".$ilDB->quote($a_webr_id ,'integer');
440  $res = $ilDB->query($query);
441  while($row = $res->fetchRow(DB_FETCHMODE_ASSOC))
442  {
443  $link_ids[] = $row['link_id'];
444  }
445  return (array) $link_ids;
446  }
447 
448  function getAllItems()
449  {
450  global $ilDB;
451 
452  $query = "SELECT * FROM webr_items ".
453  "WHERE webr_id = ".$ilDB->quote($this->getLinkResourceId() ,'integer');
454 
455  $res = $this->db->query($query);
456  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
457  {
458  $items[$row->link_id]['title'] = $row->title;
459  $items[$row->link_id]['description'] = $row->description;
460  $items[$row->link_id]['target'] = $row->target;
461  $items[$row->link_id]['active'] = (bool) $row->active;
462  $items[$row->link_id]['disable_check'] = $row->disable_check;
463  $items[$row->link_id]['create_date'] = $row->create_date;
464  $items[$row->link_id]['last_update'] = $row->last_update;
465  $items[$row->link_id]['last_check'] = $row->last_check;
466  $items[$row->link_id]['valid'] = $row->valid;
467  $items[$row->link_id]['link_id'] = $row->link_id;
468  }
469  return $items ? $items : array();
470  }
471 
477  public function sortItems($a_items)
478  {
479  include_once './Services/Container/classes/class.ilContainer.php';
480  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
482 
483  if($mode == ilContainer::SORT_TITLE)
484  {
485  $a_items = ilUtil::sortArray($a_items, 'title','asc',false,true);
486  return $a_items;
487  }
488 
489 
490  if($mode == ilContainer::SORT_MANUAL)
491  {
492  include_once './Services/Container/classes/class.ilContainerSorting.php';
494  foreach($a_items as $link_id => $item)
495  {
496  if(isset($pos[$link_id]))
497  {
498  $sorted[$link_id] = $item;
499  $sorted[$link_id]['position'] = $pos[$link_id];
500  }
501  else
502  {
503  $unsorted[$link_id] = $item;
504  }
505  }
506  $sorted = ilUtil::sortArray((array) $sorted, 'position','asc',true,true);
507  $unsorted = ilUtil::sortArray((array) $unsorted, 'title','asc',false,true);
508  $a_items = (array) $sorted + (array) $unsorted;
509  return $a_items;
510  }
511  return $a_items;
512  }
513 
514 
515 
516  function getActivatedItems()
517  {
518  foreach($this->getAllItems() as $id => $item_data)
519  {
520  if($item_data['active'])
521  {
522  $active_items[$id] = $item_data;
523  }
524  }
525  return $active_items ? $active_items : array();
526  }
527 
528  function getCheckItems($a_offset = 0)
529  {
530  $period = $a_offset ? $a_offset : 0;
531  $time = time() - $period;
532 
533  foreach($this->getAllItems() as $id => $item_data)
534  {
535  if(!$item_data['disable_check'])
536  {
537  if(!$item_data['last_check'] or $item_data['last_check'] < $time)
538  {
539  $check_items[$id] = $item_data;
540  }
541  }
542  }
543  return $check_items ? $check_items : array();
544  }
545 
546 
547 
548  // STATIC
549  function _deleteAll($webr_id)
550  {
551  global $ilDB;
552 
553  $ilDB->manipulate("DELETE FROM webr_items WHERE webr_id = ".$ilDB->quote($webr_id ,'integer'));
554 
555  return true;
556  }
557 
566  public static function _isSingular($a_webr_id)
567  {
568  global $ilDB;
569 
570  $res = $ilDB->query("SELECT * FROM webr_items WHERE webr_id = ".$ilDB->quote($a_webr_id ,'integer')." AND active = '1'");
571 
572  return $res->numRows() == 1 ? true : false;
573  }
574 
580  public static function lookupNumberOfLinks($a_webr_id)
581  {
582  global $ilDB;
583 
584  $query = "SELECT COUNT(*) num FROM webr_items ".
585  "WHERE webr_id = ".$ilDB->quote($a_webr_id,'integer');
586  $res = $ilDB->query($query);
587  $row = $res->fetchRow(DB_FETCHMODE_OBJECT);
588  return $row->num;
589  }
590 
599  public static function _getFirstLink($a_webr_id)
600  {
601  global $ilDB;
602 
603  include_once("./Modules/WebResource/classes/class.ilObjLinkResourceAccess.php");
604  return ilObjLinkResourceAccess::_getFirstLink($a_webr_id);
605  }
606 
611  public function validate()
612  {
613  return $this->getTarget() and $this->getTitle();
614  }
615 
616 
622  public function toXML(ilXmlWriter $writer)
623  {
624  foreach(self::getAllItemIds($this->getLinkResourceId()) as $link_id)
625  {
626  $link = self::lookupItem($this->getLinkResourceId(), $link_id);
627 
628  $writer->xmlStartTag(
629  'WebLink',
630  array(
631  'id' => $link['link_id'],
632  'active' => $link['active'] ? 1 : 0,
633  'valid' => $link['valid'] ? 1 : 0,
634  'disableValidation' => $link['disable_check'] ? 1 : 0,
635 # 'action' => 'Delete'
636  )
637  );
638  $writer->xmlElement('Title',array(),$link['title']);
639  $writer->xmlElement('Description',array(),$link['description']);
640  $writer->xmlElement('Target',array(),$link['target']);
641 
642  // Dynamic parameters
643  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
644  foreach(ilParameterAppender::_getParams($link_id) as $param_id => $param)
645  {
646  $value = '';
647  switch($param['value'])
648  {
649  case LINKS_USER_ID:
650  $value = 'userId';
651  break;
652 
653  case LINKS_LOGIN:
654  $value = 'userName';
655  break;
656 
657  case LINKS_MATRICULATION:
658  $value = 'matriculation';
659  break;
660  }
661 
662  if(!$value)
663  {
664  // Fix for deprecated LINKS_SESSION
665  continue;
666  }
667 
668  $writer->xmlElement(
669  'DynamicParameter',
670  array(
671  'id' => $param_id,
672  'name' => $param['name'],
673  'type' => $value
674  )
675  );
676  }
677 
678  $writer->xmlEndTag('WebLink');
679  }
680  return true;
681  }
682 }
683 
684 ?>