19 declare(strict_types=1);
    40         $this->db = $DIC->database();
    44     private function read(): void
    46         $query = 
"SELECT * FROM reg_access_limit ";
    47         $res = $this->db->query($query);
    49         $this->access_limitations = [];
    51             $role_id = (
int) $row->role_id;
    52             $this->access_limitations[$role_id][
'id'] = $role_id;
    53             $this->access_limitations[$role_id][
'absolute'] = is_null($row->limit_absolute) ? null : (
int) $row->limit_absolute;
    54             $this->access_limitations[$role_id][
'relative_d'] = is_null($row->limit_relative_d) ? null : (
int) $row->limit_relative_d;
    55             $this->access_limitations[$role_id][
'relative_m'] = is_null($row->limit_relative_m) ? null : (
int) $row->limit_relative_m;
    56             $this->access_limitations[$role_id][
'mode'] = (
string) $row->limit_mode;
    60     public function save(): bool
    62         foreach ($this->access_limitations as $role_id => 
$data) {
    63             $query = 
"DELETE FROM reg_access_limit " .
    64                 "WHERE role_id = " . $this->db->quote($role_id, 
'integer');
    65             $this->db->manipulate($query);
    67             $query = 
"INSERT INTO reg_access_limit (role_id,limit_mode,limit_absolute," .
    68                 "limit_relative_d,limit_relative_m) " .
    76             $this->db->manipulate($query);
    83         foreach ($this->access_limitations as 
$data) {
    84             if ($data[
'mode'] === 
'null') {
    85                 return self::IL_REG_ACCESS_LIMITATION_MISSING_MODE;
    88             if ($data[
'mode'] === 
'absolute' && $data[
'absolute'] < time()) {
    89                 return self::IL_REG_ACCESS_LIMITATION_OUT_OF_DATE;
    92             if ($data[
'mode'] === 
'relative' && ($data[
'relative_d'] < 1 && $data[
'relative_m'] < 1)) {
    93                 return self::IL_REG_ACCESS_LIMITATION_OUT_OF_DATE;
    99     public function getMode(
int $a_role_id): string
   101         return isset($this->access_limitations[$a_role_id]) ? $this->access_limitations[$a_role_id][
'mode'] : 
'null';
   104     public function setMode(
string $a_mode, 
int $a_role_id): void
   106         $this->access_limitations[$a_role_id][
'mode'] = $a_mode;
   111         return $this->access_limitations[$a_role_id][
'absolute'] ?? time();
   116         if (!is_null($date)) {
   117             $unix_date = strtotime($date);
   119                 $this->access_limitations[$a_role_id][
'absolute'] = $unix_date;
   126         return $this->access_limitations[$a_role_id][
'relative_' . $a_type] ?? 0;
   134         if (null === $a_arr) {
   135             $this->access_limitations[$a_role_id][
'relative_d'] = null;
   136             $this->access_limitations[$a_role_id][
'relative_m'] = null;
   138             $this->access_limitations[$a_role_id][
'relative_d'] = (
int) $a_arr[
'dd'];
   139             $this->access_limitations[$a_role_id][
'relative_m'] = (
int) $a_arr[
'MM'];
   145         $this->access_limitations = [];
 
array $access_limitations
 
setAbsolute(?string $date, int $a_role_id)
 
const IL_REG_ACCESS_LIMITATION_OUT_OF_DATE
 
setMode(string $a_mode, int $a_role_id)
 
setRelative(?array $a_arr, int $a_role_id)
 
const IL_REG_ACCESS_LIMITATION_MISSING_MODE
 
Class class.ilRegistrationAccessLimitation. 
 
getRelative(int $a_role_id, string $a_type)
 
getAbsolute(int $a_role_id)