ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilRegistrationRoleAccessLimitations.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
33define('IL_REG_ACCESS_LIMITATION_MISSING_MODE', 1);
34define('IL_REG_ACCESS_LIMITATION_OUT_OF_DATE', 2);
35
37{
38 private $access_limitations = array();
39
40 public $access_limits = array();
41
42 public function __construct()
43 {
44 global $DIC;
45
46 $ilDB = $DIC['ilDB'];
47
48 $this->db = $ilDB;
49 $this->__read();
50 }
51
52 // Private
53 public function __read()
54 {
55 global $DIC;
56
57 $ilias = $DIC['ilias'];
58
59 $query = "SELECT * FROM reg_access_limit ";
60 $res = $this->db->query($query);
61
62 $this->access_limitations = array();
63 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
64 $this->access_limitations[$row->role_id]['id'] = $row->role_id;
65 $this->access_limitations[$row->role_id]['absolute'] = $row->limit_absolute;
66 $this->access_limitations[$row->role_id]['relative_d'] = $row->limit_relative_d;
67 $this->access_limitations[$row->role_id]['relative_m'] = $row->limit_relative_m;
68 $this->access_limitations[$row->role_id]['relative_y'] = $row->limit_relative_y;
69 $this->access_limitations[$row->role_id]['mode'] = $row->limit_mode;
70 }
71
72 return true;
73 }
74
75 public function save()
76 {
77 global $DIC;
78
79 $ilias = $DIC['ilias'];
80 $ilDB = $DIC['ilDB'];
81
82 foreach ($this->access_limitations as $key => $data) {
83 $limit_value = "";
84
85 // Delete old entry
86 $query = "DELETE FROM reg_access_limit " .
87 "WHERE role_id = " . $ilDB->quote($key, 'integer');
88 $res = $ilDB->manipulate($query);
89
90
91 $query = "INSERT INTO reg_access_limit (role_id,limit_mode,limit_absolute," .
92 "limit_relative_d,limit_relative_m,limit_relative_y) " .
93 "VALUES( " .
94 $ilDB->quote($key, 'integer') . ", " .
95 $ilDB->quote($data['mode'], 'text') . ", " .
96 $ilDB->quote($data['absolute']) . ", " .
97 $ilDB->quote($data['relative_d']) . ", " .
98 $ilDB->quote($data['relative_m']) . ", " .
99 $ilDB->quote($data['relative_y']) . " " .
100 ")";
101 $res = $ilDB->manipulate($query);
102 }
103
104 return true;
105 }
106
107 public function validate()
108 {
109 foreach ($this->access_limitations as $data) {
110 if ($data['mode'] == "null") {
112 }
113
114 if ($data['mode'] == 'absolute' and $data['absolute'] < time()) {
116 }
117
118 if ($data['mode'] == 'relative' and ($data['relative_d'] < 1 and $data['relative_m'] < 1 and $data['relative_y'] < 1)) {
120 }
121 }
122
123 return 0;
124 }
125
126 public function getMode($a_role_id)
127 {
128 return $this->access_limitations[$a_role_id] ? $this->access_limitations[$a_role_id]['mode'] : 'null';
129 }
130
131 public function setMode($a_mode, $a_role_id)
132 {
133 $this->access_limitations[$a_role_id]['mode'] = $a_mode;
134 }
135
136 public function getAbsolute($a_role_id)
137 {
138 return $this->access_limitations[$a_role_id] ? $this->access_limitations[$a_role_id]['absolute'] : time();
139 }
140
141 public function setAbsolute($a_arr, $a_role_id)
142 {
143 $this->access_limitations[$a_role_id]['absolute'] = mktime(23, 59, 59, $a_arr['m'], $a_arr['d'], $a_arr['y']);
144 }
145
146 public function getRelative($a_role_id, $a_type)
147 {
148 return $this->access_limitations[$a_role_id] ? $this->access_limitations[$a_role_id]['relative_' . $a_type] : 0;
149 }
150
151 public function setRelative($a_arr, $a_role_id)
152 {
153 $this->access_limitations[$a_role_id]['relative_d'] = $a_arr['d'];
154 $this->access_limitations[$a_role_id]['relative_m'] = $a_arr['m'];
155 $this->access_limitations[$a_role_id]['relative_y'] = $a_arr['y'];
156 }
157
161 public function resetAccessLimitations()
162 {
163 $this->access_limitations = array();
164 }
165}
An exception for terminatinating execution or to throw for unit testing.
const IL_REG_ACCESS_LIMITATION_MISSING_MODE
Class class.ilRegistrationAccessLimitation.
$query
foreach($_POST as $key=> $value) $res
global $ilDB
$data
Definition: storeScorm.php:23
$a_type
Definition: workflow.php:92
$DIC
Definition: xapitoken.php:46