Bitrix-D7
23.9
Загрузка...
Поиск...
Не найдено
filter.php
1
<?php
2
3
namespace
Bitrix\Translate
;
4
19
class
Filter
implements
\Iterator, \Countable, \Serializable, \ArrayAccess
20
{
21
const
STORAGE_NAME
=
'TRANSLATE_FILTER'
;
22
const
STORAGE_TAB_CNT
=
'TRANSLATE_FILTER_TAB'
;
23
24
private
array $params = [];
25
26
private
array $iterateCodes = [];
27
28
private
int
$iteratePosition = 0;
29
30
36
public
function
__construct
($param =
null
)
37
{
38
if
(\is_array($param))
39
{
40
$this->params = $param;
41
}
42
elseif (\is_int($param) && (
int
)$param > 0)
43
{
44
$this->
restore
((
int
)$param);
45
}
46
}
47
48
//region getter/setter
49
57
public
function
__isset
($code)
58
{
59
return
isset($this->params[$code]);
60
}
61
69
public
function
__get
($code)
70
{
71
return
$this->params[$code] ?:
null
;
72
}
73
82
public
function
__set
($code, $value)
83
{
84
$this->params[$code] = $value;
85
$this->iterateCodes[] = $code;
86
}
87
95
public
function
__unset
($code)
96
{
97
if
(isset($this->params[$code]))
98
{
99
unset($this->params[$code]);
100
$this->iterateCodes = \array_keys($this->params);
101
}
102
}
103
104
//endregion
105
106
//region Iterator
107
113
#[\ReturnTypeWillChange]
114
public
function
current
()
115
{
116
$code = $this->iterateCodes[$this->iteratePosition];
117
118
return
$this->params[$code] ?:
null
;
119
}
120
126
public
function
next
(): void
127
{
128
++ $this->iteratePosition;
129
}
130
136
#[\ReturnTypeWillChange]
137
public
function
key
()
138
{
139
return
$this->iterateCodes[$this->iteratePosition] ?:
null
;
140
}
141
147
public
function
valid
(): bool
148
{
149
return
isset($this->iterateCodes[$this->iteratePosition], $this->params[$this->iterateCodes[$this->iteratePosition]]);
150
}
151
157
public
function
rewind
(): void
158
{
159
$this->iteratePosition = 0;
160
$this->iterateCodes = \array_keys($this->params);
161
}
162
163
//endregion
164
165
// region Serializable
166
171
public
function
serialize
(): string
172
{
173
return \serialize($this->params);
174
}
175
180
public
function
unserialize
($data): void
181
{
182
if
(!empty($data))
183
{
184
$deserialized = \unserialize($data, [
'allowed_classes'
=>
false
]);
185
if
(\is_array($deserialized))
186
{
187
$this->params = $deserialized;
188
}
189
}
190
}
191
192
//endregion
193
194
// region Storage
195
201
public
static
function
getTabId
(
bool
$increment =
true
): int
202
{
203
$tabId = 0;
204
if
(isset($_SESSION[self::STORAGE_TAB_CNT]))
205
{
206
$tabId = $_SESSION[self::STORAGE_TAB_CNT];
207
}
208
if
($increment)
209
{
210
$tabId ++;
211
$_SESSION[self::STORAGE_TAB_CNT] = $tabId;
212
}
213
214
return
$tabId;
215
}
216
217
222
public
function
store
(): void
223
{
224
if
(!isset($_SESSION[self::STORAGE_NAME]))
225
{
226
$_SESSION[self::STORAGE_NAME] = [];
227
}
228
if
(!isset($this->tabId))
229
{
230
$this->tabId = self::getTabId();
231
}
232
233
$_SESSION[self::STORAGE_NAME][$this->tabId] = $this->
serialize
();
234
}
235
240
public
function
restore
(
int
$id): void
241
{
242
if
(isset($_SESSION[self::STORAGE_NAME], $_SESSION[self::STORAGE_NAME][$id]))
243
{
244
$this->
unserialize
($_SESSION[self::STORAGE_NAME][$id]);
245
}
246
$this->tabId = $id;
247
}
248
249
// endregion
250
251
//region ArrayAccess
252
260
public
function
offsetExists
($code): bool
261
{
262
return
isset($this->params[$code]);
263
}
264
272
#[\ReturnTypeWillChange]
273
public
function
offsetGet
($code)
274
{
275
if
(isset($this->params[$code]))
276
{
277
return
$this->params[$code];
278
}
279
280
return
null
;
281
}
282
291
public
function
offsetSet
($code, $param): void
292
{
293
$this->params[$code] = $param;
294
}
295
303
public
function
offsetUnset
($code): void
304
{
305
if
(isset($this->params[$code]))
306
{
307
unset($this->params[$code]);
308
}
309
}
310
311
// endregion
312
313
//region Countable
314
320
public
function
count
(): int
321
{
322
return \is_array($this->params) ? \count($this->params) : 0;
323
}
324
325
//endregion
326
}
Bitrix\Translate\Filter
Definition
filter.php:20
Bitrix\Translate\Filter\restore
restore(int $id)
Definition
filter.php:240
Bitrix\Translate\Filter\offsetGet
offsetGet($code)
Definition
filter.php:273
Bitrix\Translate\Filter\STORAGE_TAB_CNT
const STORAGE_TAB_CNT
Definition
filter.php:22
Bitrix\Translate\Filter\serialize
serialize()
Definition
filter.php:171
Bitrix\Translate\Filter\offsetSet
offsetSet($code, $param)
Definition
filter.php:291
Bitrix\Translate\Filter\__get
__get($code)
Definition
filter.php:69
Bitrix\Translate\Filter\key
key()
Definition
filter.php:137
Bitrix\Translate\Filter\__unset
__unset($code)
Definition
filter.php:95
Bitrix\Translate\Filter\STORAGE_NAME
const STORAGE_NAME
Definition
filter.php:21
Bitrix\Translate\Filter\getTabId
static getTabId(bool $increment=true)
Definition
filter.php:201
Bitrix\Translate\Filter\offsetExists
offsetExists($code)
Definition
filter.php:260
Bitrix\Translate\Filter\unserialize
unserialize($data)
Definition
filter.php:180
Bitrix\Translate\Filter\store
store()
Definition
filter.php:222
Bitrix\Translate\Filter\__isset
__isset($code)
Definition
filter.php:57
Bitrix\Translate\Filter\valid
valid()
Definition
filter.php:147
Bitrix\Translate\Filter\__set
__set($code, $value)
Definition
filter.php:82
Bitrix\Translate\Filter\offsetUnset
offsetUnset($code)
Definition
filter.php:303
Bitrix\Translate\Filter\count
count()
Definition
filter.php:320
Bitrix\Translate\Filter\next
next()
Definition
filter.php:126
Bitrix\Translate\Filter\rewind
rewind()
Definition
filter.php:157
Bitrix\Translate\Filter\__construct
__construct($param=null)
Definition
filter.php:36
Bitrix\Translate\Filter\current
current()
Definition
filter.php:114
Bitrix\Translate
modules
translate
lib
filter.php
Создано системой
1.10.0