ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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
5include_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 {
141 return ilBibliographicEntry::exists($entry_id, $obj_id);
142 }
143
144
150 public static function _lookupOnline($a_id)
151 {
152 global $DIC;
153 $ilDB = $DIC['ilDB'];
154 $q = "SELECT is_online FROM il_bibl_data WHERE id = " . $ilDB->quote($a_id, "integer");
155 $bibl_set = $ilDB->query($q);
156 $bibl_rec = $ilDB->fetchAssoc($bibl_set);
157
158 return $bibl_rec["is_online"];
159 }
160}
$_GET["client_id"]
An exception for terminatinating execution or to throw for unit testing.
const IL_STATUS_MESSAGE
const IL_NO_OBJECT_ACCESS
Class ilObjBibliographicAccess.
_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...
static checkEntryIdMatch($obj_id, $entry_id)
static _lookupOnline($a_id)
Check wether bibliographic is online or not.
Class ilObjectAccess.
global $lng
Definition: privfeed.php:17
global $DIC
Definition: saml.php:7
global $ilDB
$ilUser
Definition: imgupload.php:18