ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjChatroomAccess.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Services/Object/classes/class.ilObjectAccess.php';
5require_once 'Services/WebAccessChecker/interfaces/interface.ilWACCheckingClass.php';
6
14{
18 private static $chat_enabled = null;
19
23 public static function _getCommands()
24 {
25 $commands = array();
26 $commands[] = array("permission" => "read", "cmd" => "view", "lang_var" => "enter", "default" => true);
27 $commands[] = array("permission" => "write", "cmd" => "settings-general", "lang_var" => "settings");
28
29 // alex 3 Oct 2012: this leads to a blank screen, i guess it is a copy/paste bug from files
30 //$commands[] = array("permission" => "write", "cmd" => "versions", "lang_var" => "versions");
31
32 return $commands;
33 }
34
38 public static function _checkGoto($a_target)
39 {
40 global $DIC;
41
42 if (is_string($a_target)) {
43 $t_arr = explode("_", $a_target);
44
45 if (count($t_arr) < 2 || $t_arr[0] != "chtr" || ((int) $t_arr[1]) <= 0) {
46 return false;
47 }
48
49 if ($DIC->rbac()->system()->checkAccess("read", $t_arr[1])) {
50 return true;
51 }
52 }
53
54 return false;
55 }
56
60 public function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "")
61 {
62 if ($a_user_id == '') {
63 $a_user_id = $GLOBALS['DIC']->user()->getId();
64 }
65
66 return self::checkRoomAccess($a_permission, $a_ref_id, $a_obj_id, $a_user_id);
67 }
68
69
70 public static function checkRoomAccess($a_permission, $a_ref_id, $a_obj_id, $a_user_id)
71 {
72 if (self::$chat_enabled === null) {
73 $chatSetting = new ilSetting('chatroom');
74 self::$chat_enabled = (boolean) $chatSetting->get('chat_enabled');
75 }
76
77 if ($GLOBALS['DIC']->rbac()->system()->checkAccessOfUser($a_user_id, 'write', $a_ref_id)) {
78 return true;
79 }
80
81 switch ($a_permission) {
82 case 'visible':
83 $visible = null;
84
85 $active = self::isActivated($a_ref_id, $a_obj_id, $visible);
86 $hasWriteAccess = $GLOBALS['DIC']->rbac()->system()->checkAccessOfUser($a_user_id, 'write', $a_ref_id);
87
88 if (!$active) {
89 $GLOBALS['DIC']->access()->addInfoItem(IL_NO_OBJECT_ACCESS, $GLOBALS['DIC']->language()->txt('offline'));
90 }
91
92 if (!$hasWriteAccess && !$active && !$visible) {
93 return false;
94 }
95 break;
96
97 case 'read':
98 $hasWriteAccess = $GLOBALS['DIC']->rbac()->system()->checkAccessOfUser($a_user_id, 'write', $a_ref_id);
99 if ($hasWriteAccess) {
100 return true;
101 }
102
103 $active = self::isActivated($a_ref_id, $a_obj_id);
104 if (!$active) {
105 $GLOBALS['DIC']->access()->addInfoItem(IL_NO_OBJECT_ACCESS, $GLOBALS['DIC']->language()->txt('offline'));
106 return false;
107 }
108 break;
109 }
110
111 return self::$chat_enabled;
112 }
113
120 public static function isActivated($refId, $objId, &$a_visible_flag = null)
121 {
122 if (!self::lookupOnline($objId)) {
123 $a_visible_flag = false;
124 return false;
125 }
126
127 $a_visible_flag = true;
128
129 require_once 'Services/Object/classes/class.ilObjectActivation.php';
130 $item = ilObjectActivation::getItem($refId);
131 switch ($item['timing_type']) {
133 if (time() < $item['timing_start'] || time() > $item['timing_end']) {
134 $a_visible_flag = $item['visible'];
135 return false;
136 }
137
138 // no break
139 default:
140 return true;
141 }
142 }
143
148 public static function lookupOnline($a_obj_id)
149 {
150 global $DIC;
151
152 $res = $DIC->database()->query("SELECT online_status FROM chatroom_settings WHERE object_id = " . $DIC->database()->quote($a_obj_id, 'integer'));
153 $row = $DIC->database()->fetchAssoc($res);
154
155 return (bool) $row['online_status'];
156 }
157
161 public function canBeDelivered(ilWACPath $ilWACPath)
162 {
163 if (preg_match("/chatroom\\/smilies\\//ui", $ilWACPath->getPath())) {
164 return true;
165 }
166
167 return false;
168 }
169}
An exception for terminatinating execution or to throw for unit testing.
const IL_NO_OBJECT_ACCESS
Access class for chatroom objects.
static isActivated($refId, $objId, &$a_visible_flag=null)
_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::checkAcc...
static _checkGoto($a_target)
{check whether goto script will succeed}
canBeDelivered(ilWACPath $ilWACPath)
bool
static _getCommands()
{get commandsthis method returns an array of all possible commands/permission combinationsexample: $c...
static checkRoomAccess($a_permission, $a_ref_id, $a_obj_id, $a_user_id)
Class ilObjectAccess.
static getItem($a_ref_id)
Get item data.
ILIAS Setting Class.
Class ilWACPath.
Class ilWACCheckingClass.
$row
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
global $DIC
Definition: saml.php:7
foreach($_POST as $key=> $value) $res