ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjBibliographicAccess.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once("./Services/Object/classes/class.ilObjectAccess.php");
6 
15 {
16 
29  public static function _getCommands()
30  {
31  $commands = array(
32  array(
33  "permission" => "read",
34  "cmd" => "render",
35  "lang_var" => "show",
36  "default" => true,
37  ),
38  array("permission" => "write", "cmd" => "view", "lang_var" => "edit_content"),
39  array("permission" => "write", "cmd" => "edit", "lang_var" => "settings"),
40  );
41 
42  return $commands;
43  }
44 
45 
51  public static function _checkGoto($a_target)
52  {
53  global $DIC;
54  $ilAccess = $DIC['ilAccess'];
55  $lng = $DIC['lng'];
56  $t_arr = explode('_', $a_target);
57  if ($t_arr[0] != 'bibl' || ((int) $t_arr[1]) <= 0) {
58  return false;
59  }
60  if ($ilAccess->checkAccess('read', '', $t_arr[1])) {
61  return true;
62  }
63 
64  return false;
65  }
66 
67 
80  public function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "")
81  {
82  global $DIC;
83  $ilUser = $DIC['ilUser'];
84  $lng = $DIC['lng'];
85  $rbacsystem = $DIC['rbacsystem'];
86  $ilAccess = $DIC['ilAccess'];
87  if ($a_user_id == "") {
88  $a_user_id = $ilUser->getId();
89  }
90 
92  if (!self::checkEntryIdMatch($a_obj_id, $_GET[ilObjBibliographicGUI::P_ENTRY_ID])) {
93  return false;
94  }
95  }
96 
97  switch ($a_cmd) {
98  case "view":
99  if (!self::_lookupOnline($a_obj_id)
100  && !$rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id)
101  ) {
102  $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline"));
103 
104  return false;
105  }
106  break;
107  // for permission query feature
108  case "infoScreen":
109  if (!self::_lookupOnline($a_obj_id)) {
110  $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline"));
111  } else {
112  $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("online"));
113  }
114  break;
115  }
116  switch ($a_permission) {
117  case "read":
118  case "visible":
119  if (!self::_lookupOnline($a_obj_id)
120  && (!$rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id))
121  ) {
122  $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline"));
123 
124  return false;
125  }
126  break;
127  }
128 
129  return true;
130  }
131 
132 
139  private static function checkEntryIdMatch($obj_id, $entry_id)
140  {
144  $ilBiblEntry = ilBiblEntry::find($entry_id);
145  if (is_null($ilBiblEntry)) {
146  return false;
147  }
148 
149  return ($ilBiblEntry->getDataId() == $obj_id);
150  }
151 
152 
158  public static function _lookupOnline($a_id)
159  {
160  global $DIC;
161  $ilDB = $DIC['ilDB'];
162  $q = "SELECT is_online FROM il_bibl_data WHERE id = " . $ilDB->quote($a_id, "integer");
163  $bibl_set = $ilDB->query($q);
164  $bibl_rec = $ilDB->fetchAssoc($bibl_set);
165 
166  return $bibl_rec["is_online"];
167  }
168 }
global $DIC
Definition: saml.php:7
$_GET["client_id"]
const IL_NO_OBJECT_ACCESS
_checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id="")
checks wether a user may invoke a command or not (this method is called by ilAccessHandler::checkAcce...
Class ilObjBibliographicAccess.
const IL_STATUS_MESSAGE
$lng
static _lookupOnline($a_id)
Check wether bibliographic is online or not.
$ilUser
Definition: imgupload.php:18
Class ilObjectAccess.
global $ilDB