1<?php 2 3declare(strict_types=1); 4 5class LSItemOnlineStatus 6{ 7 const S_LEARNMODULE_IL = "lm"; 8 const S_LEARNMODULE_HTML = "htlm"; 9 const S_SAHS = "sahs"; 10 const S_TEST = "tst"; 11 const S_SURVEY = "svy"; 12 const S_CONTENTPAGE = "copa"; 13 const S_EXERCISE = "exc"; 14 const S_IND_ASSESSMENT = "iass"; 15 const S_FILE = "file"; 16 17 private static $obj_with_online_status = array( 18 self::S_LEARNMODULE_IL, 19 self::S_LEARNMODULE_HTML, 20 self::S_SAHS, 21 self::S_TEST, 22 self::S_SURVEY 23 ); 24 25 public function setOnlineStatus(int $ref_id, bool $status) 26 { 27 $obj = \ilObjectFactory::getInstanceByRefId($ref_id); 28 $obj->setOfflineStatus(!$status); 29 $obj->update(); 30 } 31 32 public function getOnlineStatus(int $ref_id) : bool 33 { 34 if(!$this->hasOnlineStatus($ref_id)) { 35 return true; 36 } 37 return !\ilObject::lookupOfflineStatus(\ilObject::_lookupObjId($ref_id)); 38 } 39 40 public function hasOnlineStatus(int $ref_id) : bool 41 { 42 $type = $this->getObjectTypeFor($ref_id); 43 if (in_array($type, self::$obj_with_online_status)) { 44 return true; 45 } 46 47 return false; 48 } 49 50 protected function getObjectTypeFor(int $ref_id) : string 51 { 52 return \ilObject::_lookupType($ref_id, true); 53 } 54} 55