18 declare(strict_types=1);
32 'permission' =>
'read',
38 'permission' =>
'read',
43 'permission' =>
'write',
44 'lang_var' =>
'edit_content' 48 'permission' =>
'write',
49 'lang_var' =>
'settings' 53 'permission' =>
'unparticipate',
54 'lang_var' =>
'unparticipate' 61 return self::$using_code;
67 $act = $obj->getLSActivation();
68 $online = $act->getIsOnline();
71 && ($act->getActivationStart() !== null ||
72 $act->getActivationEnd() !== null)
75 $activation_start = $act->getActivationStart();
76 if ($activation_start !== null) {
77 $after_activation_start = $ts_now >= $activation_start->getTimestamp();
79 $after_activation_start =
true;
81 $activation_end = $act->getActivationEnd();
82 if ($activation_end !== null) {
83 $before_activation_end = $ts_now <= $activation_end->getTimestamp();
85 $before_activation_end =
true;
88 $online = ($after_activation_start && $before_activation_end);
91 if ($act->getEffectiveOnlineStatus() ===
false && $online ===
true) {
92 $obj->setEffectiveOnlineStatus(
true);
93 $obj->announceLSOOnline();
95 if ($act->getEffectiveOnlineStatus() ===
true && $online ===
false) {
96 $obj->setEffectiveOnlineStatus(
false);
97 $obj->announceLSOOffline();
100 $new_status = ($online)
101 ? $obj->getObjectProperties()->getPropertyIsOnline()->withOnline()
102 : $obj->getObjectProperties()->getPropertyIsOnline()->withOffline();
103 $obj->getObjectProperties()->storePropertyIsOnline($new_status);
112 switch ($permission) {
114 $has_any_administrative_permission =
false;
116 $has_any_administrative_permission = (
117 $rbacsystem->checkAccessOfUser(
$user_id,
'write', $ref_id) ||
118 $rbacsystem->checkAccessOfUser(
$user_id,
'edit_members', $ref_id) ||
119 $rbacsystem->checkAccessOfUser(
$user_id,
'edit_learning_progress', $ref_id)
125 if ($is_offine && !$has_any_administrative_permission) {
135 return $rbacsystem->checkAccessOfUser(
$user_id, $permission, $ref_id);
145 $rbacsystem = $DIC[
'rbacsystem'];
146 $il_access = $DIC[
'ilAccess'];
const IL_NO_OBJECT_ACCESS
_checkAccess(string $cmd, string $permission, int $ref_id, int $obj_id, ?int $user_id=null)
static isOffline(int $ref_id)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id