19 declare(strict_types=1);
40 $this->db = $DIC->database();
44 private function read(): void
46 $query =
"SELECT * FROM reg_access_limit ";
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)