ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilObjFileBasedLMAccess Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for ilObjFileBasedLMAccess:
+ Collaboration diagram for ilObjFileBasedLMAccess:

Public Member Functions

 __construct ()
 
 _checkAccess (string $cmd, string $permission, int $ref_id, int $obj_id, ?int $user_id=null)
 
- Public Member Functions inherited from ilObjectAccess
 _checkAccess (string $cmd, string $permission, int $ref_id, int $obj_id, ?int $user_id=null)
 Checks whether a user may invoke a command or not (this method is called by ilAccessHandler::checkAccess) More...
 
 canBeDelivered (ilWACPath $ilWACPath)
 

Static Public Member Functions

static _getCommands ()
 
static _determineStartUrl (int $a_id)
 
static _checkGoto (string $target)
 
static _lookupDiskUsage (int $a_id)
 Returns the number of bytes used on the harddisk by the learning module with the specified object id. More...
 
static _preloadData (array $obj_ids, array $ref_ids)
 
static isInfoEnabled (int $obj_id)
 
- Static Public Member Functions inherited from ilObjectAccess
static _getCommands ()
 get commands More...
 
static _checkGoto (string $target)
 check whether goto script will succeed More...
 
static _isOffline (int $obj_id)
 Type-specific implementation of general status, has to be overwritten if object type does not support centralized offline handling. More...
 
static _preloadData (array $obj_ids, array $ref_ids)
 Preload data. More...
 

Static Public Attributes

static array $startfile = []
 

Protected Attributes

ilObjUser $user
 
ilLanguage $lng
 
ilRbacSystem $rbacsystem
 
ilAccessHandler $access
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning

Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 22 of file class.ilObjFileBasedLMAccess.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjFileBasedLMAccess::__construct ( )

Definition at line 31 of file class.ilObjFileBasedLMAccess.php.

References $DIC, ILIAS\Repository\access(), ILIAS\Repository\lng(), and ILIAS\Repository\user().

32  {
33  global $DIC;
34 
35  $this->user = $DIC->user();
36  $this->lng = $DIC->language();
37  $this->rbacsystem = $DIC->rbac()->system();
38  $this->access = $DIC->access();
39  }
global $DIC
Definition: shib_login.php:22
+ Here is the call graph for this function:

Member Function Documentation

◆ _checkAccess()

ilObjFileBasedLMAccess::_checkAccess ( string  $cmd,
string  $permission,
int  $ref_id,
int  $obj_id,
?int  $user_id = null 
)

Definition at line 41 of file class.ilObjFileBasedLMAccess.php.

References $access, $lng, ilRBACAccessHandler\addInfoItem(), ilAccessInfo\IL_NO_OBJECT_ACCESS, and ilLanguage\txt().

41  : bool
42  {
43  $lng = $this->lng;
44  $ilAccess = $this->access;
45 
46  switch ($permission) {
47  case "read":
48 
49  if (self::_determineStartUrl($obj_id) === "") {
50  $ilAccess->addInfoItem(ilAccessInfo::IL_NO_OBJECT_ACCESS, $lng->txt("offline"));
51  return false;
52  }
53  break;
54  }
55  return true;
56  }
addInfoItem(string $a_type, string $a_text, string $a_data="")
add an info item to current info object
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
+ Here is the call graph for this function:

◆ _checkGoto()

static ilObjFileBasedLMAccess::_checkGoto ( string  $target)
static

Definition at line 132 of file class.ilObjFileBasedLMAccess.php.

References $DIC.

132  : bool
133  {
134  global $DIC;
135 
136  $ilAccess = $DIC->access();
137 
138  $t_arr = explode("_", $target);
139 
140  if ($t_arr[0] !== "htlm" || ((int) $t_arr[1]) <= 0) {
141  return false;
142  }
143 
144  if ($ilAccess->checkAccess("visible", "", $t_arr[1]) ||
145  $ilAccess->checkAccess("read", "", $t_arr[1])) {
146  return true;
147  }
148  return false;
149  }
global $DIC
Definition: shib_login.php:22

◆ _determineStartUrl()

static ilObjFileBasedLMAccess::_determineStartUrl ( int  $a_id)
static

Definition at line 74 of file class.ilObjFileBasedLMAccess.php.

References $DIC, $ilDB, $q, and ilFileUtils\getWebspaceDir().

Referenced by ilObjFileBasedLMListGUI\getProperties(), ilObjFileBasedLMGUI\getSettingsFormValues(), ilObjFileBasedLMGUI\getTabs(), ilObjFileBasedLMGUI\initSettingsForm(), and ilObjFileBasedLMGUI\setStartFile().

74  : string
75  {
76  global $DIC;
77 
78  static $startfile = [];
79  if (isset($startfile[$a_id])) {
80  return $startfile[$a_id];
81  }
82 
83  $ilDB = $DIC->database();
84 
85  $q = "SELECT startfile, rid FROM file_based_lm WHERE id = " . $ilDB->quote($a_id, "integer");
86  $set = $ilDB->query($q);
87  $rec = $ilDB->fetchAssoc($set);
88  $start_file = $rec["startfile"] ?? '';
89 
90  // Migrated learning module
91  if (!empty($rec['rid'])) {
92  // check if the file is available in the container
93  $rid = $DIC->resourceStorage()->manageContainer()->find($rec['rid']);
94  if (!$rid) {
95  return $startfile[$a_id] = "";
96  }
97  $zip = $DIC->resourceStorage()->consume()->containerZIP($rid)->getZIP();
98  foreach ($zip->getFiles() as $file) {
99  if ($file === $start_file) {
100  return $startfile[$a_id] = $start_file;
101  }
102  }
103  return $startfile[$a_id] = "";
104  }
105 
106  // Old learning module
107  $dir = realpath(__DIR__ . '/../../../../public/' . ilFileUtils::getWebspaceDir() . "/lm_data/lm_" . $a_id);
108 
109  if (($start_file !== "") && (is_file($dir . "/" . $start_file))) {
110  return $startfile[$a_id] = str_replace(
111  realpath(__DIR__ . '/../../../../public/'),
112  "",
113  $dir . "/" . $start_file
114  );
115  }
116 
117  if (is_file($dir . "/index.html")) {
118  return $startfile[$a_id] = str_replace(
119  realpath(__DIR__ . '/../../../../public/'),
120  "",
121  $dir . "/index.html"
122  );
123  }
124 
125  if (is_file($dir . "/index.htm")) {
126  return $startfile[$a_id] = str_replace(realpath(__DIR__ . '/../../../../public/'), "", $dir . "/index.htm");
127  }
128 
129  return $startfile[$a_id] = "";
130  }
static getWebspaceDir(string $mode="filesystem")
get webspace directory
global $DIC
Definition: shib_login.php:22
$q
Definition: shib_logout.php:21
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getCommands()

static ilObjFileBasedLMAccess::_getCommands ( )
static

Definition at line 58 of file class.ilObjFileBasedLMAccess.php.

Referenced by ilObjFileBasedLMListGUI\init().

58  : array
59  {
60  return [
61  [
62  "permission" => "read", "cmd" => "view", "lang_var" => "show",
63  "default" => true
64  ],
65  ["permission" => "write", "cmd" => "edit", "lang_var" => "edit_content"],
66  ["permission" => "write", "cmd" => "properties", "lang_var" => "settings"]
67  ];
68  }
+ Here is the caller graph for this function:

◆ _lookupDiskUsage()

static ilObjFileBasedLMAccess::_lookupDiskUsage ( int  $a_id)
static

Returns the number of bytes used on the harddisk by the learning module with the specified object id.

Definition at line 155 of file class.ilObjFileBasedLMAccess.php.

References ilFileUtils\dirsize(), and ilFileUtils\getWebspaceDir().

155  : int
156  {
157  $lm_data_dir = ilFileUtils::getWebspaceDir('filesystem') . "/lm_data";
158  $lm_dir = $lm_data_dir . DIRECTORY_SEPARATOR . "lm_" . $a_id;
159 
160  return file_exists($lm_dir) ? ilFileUtils::dirsize($lm_dir) : 0;
161  }
static getWebspaceDir(string $mode="filesystem")
get webspace directory
static dirsize(string $directory)
get size of a directory or a file.
+ Here is the call graph for this function:

◆ _preloadData()

static ilObjFileBasedLMAccess::_preloadData ( array  $obj_ids,
array  $ref_ids 
)
static

Definition at line 163 of file class.ilObjFileBasedLMAccess.php.

References $DIC, $ilDB, $lm_set, and $q.

163  : void
164  {
165  global $DIC;
166 
167  $ilDB = $DIC->database();
168 
169  $q = "SELECT id, startfile FROM file_based_lm WHERE " .
170  $ilDB->in("id", $obj_ids, false, "integer");
171 
172  $lm_set = $ilDB->query($q);
173  while ($rec = $ilDB->fetchAssoc($lm_set)) {
174  self::$startfile[$rec["id"]] = $rec["startfile"] . "";
175  }
176  }
global $DIC
Definition: shib_login.php:22
$lm_set
$q
Definition: shib_logout.php:21

◆ isInfoEnabled()

static ilObjFileBasedLMAccess::isInfoEnabled ( int  $obj_id)
static

Definition at line 178 of file class.ilObjFileBasedLMAccess.php.

References ilContainer\_lookupContainerSetting(), and ilObjectServiceSettingsGUI\INFO_TAB_VISIBILITY.

Referenced by ilObjFileBasedLMListGUI\getInfoScreenStatus().

178  : bool
179  {
181  $obj_id,
183  true
184  );
185  }
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $access

ilAccessHandler ilObjFileBasedLMAccess::$access
protected

Definition at line 27 of file class.ilObjFileBasedLMAccess.php.

Referenced by _checkAccess().

◆ $lng

ilLanguage ilObjFileBasedLMAccess::$lng
protected

Definition at line 25 of file class.ilObjFileBasedLMAccess.php.

Referenced by _checkAccess().

◆ $rbacsystem

ilRbacSystem ilObjFileBasedLMAccess::$rbacsystem
protected

Definition at line 26 of file class.ilObjFileBasedLMAccess.php.

◆ $startfile

array ilObjFileBasedLMAccess::$startfile = []
static

Definition at line 29 of file class.ilObjFileBasedLMAccess.php.

◆ $user

ilObjUser ilObjFileBasedLMAccess::$user
protected

Definition at line 24 of file class.ilObjFileBasedLMAccess.php.


The documentation for this class was generated from the following file: