@@ -114,18 +114,18 @@ discard block |
||
114 | 114 | } |
115 | 115 | } |
116 | 116 | |
117 | - /** |
|
118 | - * Adds a callback as a validation method. The callback gets the |
|
119 | - * value to validate as first parameter, and any additional |
|
120 | - * parameters passed here get appended to that. |
|
121 | - * |
|
122 | - * The callback must return boolean true or false depending on |
|
123 | - * whether the value is valid. |
|
124 | - * |
|
125 | - * @param callable $callback |
|
126 | - * @param array $args |
|
127 | - * @return Request_Param |
|
128 | - */ |
|
117 | + /** |
|
118 | + * Adds a callback as a validation method. The callback gets the |
|
119 | + * value to validate as first parameter, and any additional |
|
120 | + * parameters passed here get appended to that. |
|
121 | + * |
|
122 | + * The callback must return boolean true or false depending on |
|
123 | + * whether the value is valid. |
|
124 | + * |
|
125 | + * @param callable $callback |
|
126 | + * @param array $args |
|
127 | + * @return Request_Param |
|
128 | + */ |
|
129 | 129 | public function setCallback($callback, array $args=array()) : Request_Param |
130 | 130 | { |
131 | 131 | if(!is_callable($callback)) { |
@@ -189,12 +189,12 @@ discard block |
||
189 | 189 | return $value; |
190 | 190 | } |
191 | 191 | |
192 | - /** |
|
193 | - * Runs the value through all validations that were added. |
|
194 | - * |
|
195 | - * @param mixed $value |
|
196 | - * @return mixed |
|
197 | - */ |
|
192 | + /** |
|
193 | + * Runs the value through all validations that were added. |
|
194 | + * |
|
195 | + * @param mixed $value |
|
196 | + * @return mixed |
|
197 | + */ |
|
198 | 198 | protected function applyValidations($value, bool $subval=false) |
199 | 199 | { |
200 | 200 | // go through all enqueued validations in turn, each time |
@@ -207,17 +207,17 @@ discard block |
||
207 | 207 | return $value; |
208 | 208 | } |
209 | 209 | |
210 | - /** |
|
211 | - * Validates the specified value using the validation type. Returns |
|
212 | - * the validated value. |
|
213 | - * |
|
214 | - * @param mixed $value |
|
215 | - * @param string $type |
|
216 | - * @param array $params |
|
217 | - * @param bool $subval Whether this is a subvalue in a list |
|
218 | - * @throws Request_Exception |
|
219 | - * @return mixed |
|
220 | - */ |
|
210 | + /** |
|
211 | + * Validates the specified value using the validation type. Returns |
|
212 | + * the validated value. |
|
213 | + * |
|
214 | + * @param mixed $value |
|
215 | + * @param string $type |
|
216 | + * @param array $params |
|
217 | + * @param bool $subval Whether this is a subvalue in a list |
|
218 | + * @throws Request_Exception |
|
219 | + * @return mixed |
|
220 | + */ |
|
221 | 221 | protected function validateType($value, string $type, array $params, bool $subval) |
222 | 222 | { |
223 | 223 | $class = '\AppUtils\Request_Param_Validator_'.ucfirst($type); |
@@ -286,13 +286,13 @@ discard block |
||
286 | 286 | |
287 | 287 | protected $valueType = self::VALUE_TYPE_STRING; |
288 | 288 | |
289 | - /** |
|
290 | - * Sets the variable to contain a comma-separated list of integer IDs. |
|
291 | - * Example: <code>145,248,4556</code>. A single ID is also allowed, e.g. |
|
292 | - * <code>145</code>. |
|
293 | - * |
|
294 | - * @return Request_Param |
|
295 | - */ |
|
289 | + /** |
|
290 | + * Sets the variable to contain a comma-separated list of integer IDs. |
|
291 | + * Example: <code>145,248,4556</code>. A single ID is also allowed, e.g. |
|
292 | + * <code>145</code>. |
|
293 | + * |
|
294 | + * @return Request_Param |
|
295 | + */ |
|
296 | 296 | public function setIDList() |
297 | 297 | { |
298 | 298 | $this->valueType = self::VALUE_TYPE_LIST; |
@@ -302,13 +302,13 @@ discard block |
||
302 | 302 | return $this; |
303 | 303 | } |
304 | 304 | |
305 | - /** |
|
306 | - * Sets the variable to be an alias, as defined by the |
|
307 | - * {@link RegexHelper::REGEX_ALIAS} regular expression. |
|
308 | - * |
|
309 | - * @return Request_Param |
|
310 | - * @see RegexHelper::REGEX_ALIAS |
|
311 | - */ |
|
305 | + /** |
|
306 | + * Sets the variable to be an alias, as defined by the |
|
307 | + * {@link RegexHelper::REGEX_ALIAS} regular expression. |
|
308 | + * |
|
309 | + * @return Request_Param |
|
310 | + * @see RegexHelper::REGEX_ALIAS |
|
311 | + */ |
|
312 | 312 | public function setAlias() |
313 | 313 | { |
314 | 314 | return $this->setRegex(RegexHelper::REGEX_ALIAS); |
@@ -349,12 +349,12 @@ discard block |
||
349 | 349 | return $this->setValidation(self::VALIDATION_TYPE_ALPHA); |
350 | 350 | } |
351 | 351 | |
352 | - /** |
|
353 | - * Sets the parameter value as a string containing lowercase |
|
354 | - * and/or uppercase letters, as well as numbers. |
|
355 | - * |
|
356 | - * @return Request_Param |
|
357 | - */ |
|
352 | + /** |
|
353 | + * Sets the parameter value as a string containing lowercase |
|
354 | + * and/or uppercase letters, as well as numbers. |
|
355 | + * |
|
356 | + * @return Request_Param |
|
357 | + */ |
|
358 | 358 | public function setAlnum() |
359 | 359 | { |
360 | 360 | return $this->setValidation(self::VALIDATION_TYPE_ALNUM); |
@@ -387,17 +387,17 @@ discard block |
||
387 | 387 | ); |
388 | 388 | } |
389 | 389 | |
390 | - /** |
|
391 | - * Only available for array values: the parameter must be |
|
392 | - * an array value, and the array may only contain values |
|
393 | - * specified in the values array. |
|
394 | - * |
|
395 | - * Submitted values that are not in the allowed list of |
|
396 | - * values are stripped from the value. |
|
397 | - * |
|
398 | - * @param array $values List of allowed values |
|
399 | - * @return \AppUtils\Request_Param |
|
400 | - */ |
|
390 | + /** |
|
391 | + * Only available for array values: the parameter must be |
|
392 | + * an array value, and the array may only contain values |
|
393 | + * specified in the values array. |
|
394 | + * |
|
395 | + * Submitted values that are not in the allowed list of |
|
396 | + * values are stripped from the value. |
|
397 | + * |
|
398 | + * @param array $values List of allowed values |
|
399 | + * @return \AppUtils\Request_Param |
|
400 | + */ |
|
401 | 401 | public function setValuesList(array $values) |
402 | 402 | { |
403 | 403 | $this->setArray(); |
@@ -410,11 +410,11 @@ discard block |
||
410 | 410 | ); |
411 | 411 | } |
412 | 412 | |
413 | - /** |
|
414 | - * Whether the parameter is a list of values. |
|
415 | - * |
|
416 | - * @return bool |
|
417 | - */ |
|
413 | + /** |
|
414 | + * Whether the parameter is a list of values. |
|
415 | + * |
|
416 | + * @return bool |
|
417 | + */ |
|
418 | 418 | public function isList() : bool |
419 | 419 | { |
420 | 420 | return $this->valueType === self::VALUE_TYPE_LIST; |
@@ -425,53 +425,53 @@ discard block |
||
425 | 425 | return $this->setValidation(self::VALIDATION_TYPE_ARRAY); |
426 | 426 | } |
427 | 427 | |
428 | - /** |
|
429 | - * Specifies that a JSON-encoded string is expected. |
|
430 | - * |
|
431 | - * NOTE: Numbers or quoted strings are technically valid |
|
432 | - * JSON, but are not accepted, because it is assumed |
|
433 | - * at least an array or object are expected. |
|
434 | - * |
|
435 | - * @return \AppUtils\Request_Param |
|
436 | - */ |
|
428 | + /** |
|
429 | + * Specifies that a JSON-encoded string is expected. |
|
430 | + * |
|
431 | + * NOTE: Numbers or quoted strings are technically valid |
|
432 | + * JSON, but are not accepted, because it is assumed |
|
433 | + * at least an array or object are expected. |
|
434 | + * |
|
435 | + * @return \AppUtils\Request_Param |
|
436 | + */ |
|
437 | 437 | public function setJSON() : Request_Param |
438 | 438 | { |
439 | 439 | return $this->setValidation(self::VALIDATION_TYPE_JSON, array('arrays' => true)); |
440 | 440 | } |
441 | 441 | |
442 | - /** |
|
443 | - * Like {@link Request_Param::setJSON()}, but accepts |
|
444 | - * only JSON objects. Arrays will not be accepted. |
|
445 | - * |
|
446 | - * @return \AppUtils\Request_Param |
|
447 | - */ |
|
442 | + /** |
|
443 | + * Like {@link Request_Param::setJSON()}, but accepts |
|
444 | + * only JSON objects. Arrays will not be accepted. |
|
445 | + * |
|
446 | + * @return \AppUtils\Request_Param |
|
447 | + */ |
|
448 | 448 | public function setJSONObject() : Request_Param |
449 | 449 | { |
450 | 450 | return $this->setValidation(self::VALIDATION_TYPE_JSON, array('arrays' => false)); |
451 | 451 | } |
452 | 452 | |
453 | - /** |
|
454 | - * The parameter is a string boolean representation. This means |
|
455 | - * it can be any of the following: "yes", "true", "no", "false". |
|
456 | - * The value is automatically converted to a boolean when retrieving |
|
457 | - * the parameter. |
|
458 | - * |
|
459 | - * @return Request_Param |
|
460 | - */ |
|
453 | + /** |
|
454 | + * The parameter is a string boolean representation. This means |
|
455 | + * it can be any of the following: "yes", "true", "no", "false". |
|
456 | + * The value is automatically converted to a boolean when retrieving |
|
457 | + * the parameter. |
|
458 | + * |
|
459 | + * @return Request_Param |
|
460 | + */ |
|
461 | 461 | public function setBoolean() : Request_Param |
462 | 462 | { |
463 | 463 | return $this->addClassFilter('Boolean'); |
464 | 464 | } |
465 | 465 | |
466 | - /** |
|
467 | - * Validates the request parameter as an MD5 string, |
|
468 | - * so that only values resembling md5 values are accepted. |
|
469 | - * |
|
470 | - * NOTE: This can only guarantee the format, not whether |
|
471 | - * it is an actual valid hash of something. |
|
472 | - * |
|
473 | - * @return \AppUtils\Request_Param |
|
474 | - */ |
|
466 | + /** |
|
467 | + * Validates the request parameter as an MD5 string, |
|
468 | + * so that only values resembling md5 values are accepted. |
|
469 | + * |
|
470 | + * NOTE: This can only guarantee the format, not whether |
|
471 | + * it is an actual valid hash of something. |
|
472 | + * |
|
473 | + * @return \AppUtils\Request_Param |
|
474 | + */ |
|
475 | 475 | public function setMD5() : Request_Param |
476 | 476 | { |
477 | 477 | return $this->setRegex(RegexHelper::REGEX_MD5); |
@@ -513,14 +513,14 @@ discard block |
||
513 | 513 | return $this; |
514 | 514 | } |
515 | 515 | |
516 | - /** |
|
517 | - * Retrieves the value of the request parameter, |
|
518 | - * applying all filters (if any) and validation |
|
519 | - * (if any). |
|
520 | - * |
|
521 | - * @param mixed $default |
|
522 | - * @return mixed |
|
523 | - */ |
|
516 | + /** |
|
517 | + * Retrieves the value of the request parameter, |
|
518 | + * applying all filters (if any) and validation |
|
519 | + * (if any). |
|
520 | + * |
|
521 | + * @param mixed $default |
|
522 | + * @return mixed |
|
523 | + */ |
|
524 | 524 | public function get($default=null) |
525 | 525 | { |
526 | 526 | $value = $this->request->getParam($this->paramName); |
@@ -608,12 +608,12 @@ discard block |
||
608 | 608 | return $this; |
609 | 609 | } |
610 | 610 | |
611 | - /** |
|
612 | - * Adds a filter that trims whitespace from the request |
|
613 | - * parameter using the PHP <code>trim</code> function. |
|
614 | - * |
|
615 | - * @return \AppUtils\Request_Param |
|
616 | - */ |
|
611 | + /** |
|
612 | + * Adds a filter that trims whitespace from the request |
|
613 | + * parameter using the PHP <code>trim</code> function. |
|
614 | + * |
|
615 | + * @return \AppUtils\Request_Param |
|
616 | + */ |
|
617 | 617 | public function addFilterTrim() : Request_Param |
618 | 618 | { |
619 | 619 | // to guarantee we only work with strings |
@@ -622,13 +622,13 @@ discard block |
||
622 | 622 | return $this->addCallbackFilter('trim'); |
623 | 623 | } |
624 | 624 | |
625 | - /** |
|
626 | - * Converts the value to a string, even if it is not |
|
627 | - * a string value. Complex types like arrays and objects |
|
628 | - * are converted to an empty string. |
|
629 | - * |
|
630 | - * @return \AppUtils\Request_Param |
|
631 | - */ |
|
625 | + /** |
|
626 | + * Converts the value to a string, even if it is not |
|
627 | + * a string value. Complex types like arrays and objects |
|
628 | + * are converted to an empty string. |
|
629 | + * |
|
630 | + * @return \AppUtils\Request_Param |
|
631 | + */ |
|
632 | 632 | public function addStringFilter() : Request_Param |
633 | 633 | { |
634 | 634 | return $this->addClassFilter('String'); |
@@ -678,12 +678,12 @@ discard block |
||
678 | 678 | return $this->addCallbackFilter('strip_tags', array($allowedTags)); |
679 | 679 | } |
680 | 680 | |
681 | - /** |
|
682 | - * Adds a filter that strips all whitespace from the |
|
683 | - * request parameter, from spaces to tabs and newlines. |
|
684 | - * |
|
685 | - * @return \AppUtils\Request_Param |
|
686 | - */ |
|
681 | + /** |
|
682 | + * Adds a filter that strips all whitespace from the |
|
683 | + * request parameter, from spaces to tabs and newlines. |
|
684 | + * |
|
685 | + * @return \AppUtils\Request_Param |
|
686 | + */ |
|
687 | 687 | public function addStripWhitespaceFilter() : Request_Param |
688 | 688 | { |
689 | 689 | // to ensure we only work with strings. |
@@ -692,14 +692,14 @@ discard block |
||
692 | 692 | return $this->addClassFilter('StripWhitespace'); |
693 | 693 | } |
694 | 694 | |
695 | - /** |
|
696 | - * Adds a filter that transforms comma separated values |
|
697 | - * into an array of values. |
|
698 | - * |
|
699 | - * @param bool $trimEntries Trim whitespace from each entry? |
|
700 | - * @param bool $stripEmptyEntries Remove empty entries from the array? |
|
701 | - * @return \AppUtils\Request_Param |
|
702 | - */ |
|
695 | + /** |
|
696 | + * Adds a filter that transforms comma separated values |
|
697 | + * into an array of values. |
|
698 | + * |
|
699 | + * @param bool $trimEntries Trim whitespace from each entry? |
|
700 | + * @param bool $stripEmptyEntries Remove empty entries from the array? |
|
701 | + * @return \AppUtils\Request_Param |
|
702 | + */ |
|
703 | 703 | public function addCommaSeparatedFilter(bool $trimEntries=true, bool $stripEmptyEntries=true) : Request_Param |
704 | 704 | { |
705 | 705 | $this->setArray(); |
@@ -724,12 +724,12 @@ discard block |
||
724 | 724 | ); |
725 | 725 | } |
726 | 726 | |
727 | - /** |
|
728 | - * Adds a filter that encodes all HTML special characters |
|
729 | - * using the PHP <code>htmlspecialchars</code> function. |
|
730 | - * |
|
731 | - * @return \AppUtils\Request_Param |
|
732 | - */ |
|
727 | + /** |
|
728 | + * Adds a filter that encodes all HTML special characters |
|
729 | + * using the PHP <code>htmlspecialchars</code> function. |
|
730 | + * |
|
731 | + * @return \AppUtils\Request_Param |
|
732 | + */ |
|
733 | 733 | public function addHTMLSpecialcharsFilter() : Request_Param |
734 | 734 | { |
735 | 735 | return $this->addCallbackFilter('htmlspecialchars', array(ENT_QUOTES, 'UTF-8')); |
@@ -742,14 +742,14 @@ discard block |
||
742 | 742 | |
743 | 743 | protected $required = false; |
744 | 744 | |
745 | - /** |
|
746 | - * Marks this request parameter as required. To use this feature, |
|
747 | - * you have to call the request's {@link Request::validate()} |
|
748 | - * method. |
|
749 | - * |
|
750 | - * @return Request_Param |
|
751 | - * @see Request::validate() |
|
752 | - */ |
|
745 | + /** |
|
746 | + * Marks this request parameter as required. To use this feature, |
|
747 | + * you have to call the request's {@link Request::validate()} |
|
748 | + * method. |
|
749 | + * |
|
750 | + * @return Request_Param |
|
751 | + * @see Request::validate() |
|
752 | + */ |
|
753 | 753 | public function makeRequired() : Request_Param |
754 | 754 | { |
755 | 755 | $this->required = true; |
@@ -126,9 +126,9 @@ discard block |
||
126 | 126 | * @param array $args |
127 | 127 | * @return Request_Param |
128 | 128 | */ |
129 | - public function setCallback($callback, array $args=array()) : Request_Param |
|
129 | + public function setCallback($callback, array $args = array()) : Request_Param |
|
130 | 130 | { |
131 | - if(!is_callable($callback)) { |
|
131 | + if (!is_callable($callback)) { |
|
132 | 132 | throw new Request_Exception( |
133 | 133 | 'Not a valid callback', |
134 | 134 | 'The specified callback is not a valid callable entity.', |
@@ -159,22 +159,22 @@ discard block |
||
159 | 159 | // first off, apply filtering |
160 | 160 | $value = $this->filter($value); |
161 | 161 | |
162 | - if($this->valueType === self::VALUE_TYPE_LIST) |
|
162 | + if ($this->valueType === self::VALUE_TYPE_LIST) |
|
163 | 163 | { |
164 | - if(!is_array($value)) |
|
164 | + if (!is_array($value)) |
|
165 | 165 | { |
166 | 166 | $value = explode(',', $value); |
167 | 167 | } |
168 | 168 | |
169 | 169 | $keep = array(); |
170 | 170 | |
171 | - foreach($value as $subval) |
|
171 | + foreach ($value as $subval) |
|
172 | 172 | { |
173 | 173 | $subval = $this->filter($subval); |
174 | 174 | |
175 | 175 | $subval = $this->applyValidations($subval, true); |
176 | 176 | |
177 | - if($subval !== null) { |
|
177 | + if ($subval !== null) { |
|
178 | 178 | $keep[] = $subval; |
179 | 179 | } |
180 | 180 | } |
@@ -195,11 +195,11 @@ discard block |
||
195 | 195 | * @param mixed $value |
196 | 196 | * @return mixed |
197 | 197 | */ |
198 | - protected function applyValidations($value, bool $subval=false) |
|
198 | + protected function applyValidations($value, bool $subval = false) |
|
199 | 199 | { |
200 | 200 | // go through all enqueued validations in turn, each time |
201 | 201 | // replacing the value with the adjusted, validated value. |
202 | - foreach($this->validations as $validateDef) |
|
202 | + foreach ($this->validations as $validateDef) |
|
203 | 203 | { |
204 | 204 | $value = $this->validateType($value, $validateDef['type'], $validateDef['params'], $subval); |
205 | 205 | } |
@@ -222,7 +222,7 @@ discard block |
||
222 | 222 | { |
223 | 223 | $class = '\AppUtils\Request_Param_Validator_'.ucfirst($type); |
224 | 224 | |
225 | - if(!class_exists($class)) |
|
225 | + if (!class_exists($class)) |
|
226 | 226 | { |
227 | 227 | throw new Request_Exception( |
228 | 228 | 'Unknown validation type.', |
@@ -376,7 +376,7 @@ discard block |
||
376 | 376 | { |
377 | 377 | $args = func_get_args(); // cannot be used as function parameter in some PHP versions |
378 | 378 | |
379 | - if(is_array($args[0])) |
|
379 | + if (is_array($args[0])) |
|
380 | 380 | { |
381 | 381 | $args = $args[0]; |
382 | 382 | } |
@@ -521,10 +521,10 @@ discard block |
||
521 | 521 | * @param mixed $default |
522 | 522 | * @return mixed |
523 | 523 | */ |
524 | - public function get($default=null) |
|
524 | + public function get($default = null) |
|
525 | 525 | { |
526 | 526 | $value = $this->request->getParam($this->paramName); |
527 | - if($value !== null && $value !== '') { |
|
527 | + if ($value !== null && $value !== '') { |
|
528 | 528 | return $value; |
529 | 529 | } |
530 | 530 | |
@@ -543,7 +543,7 @@ discard block |
||
543 | 543 | { |
544 | 544 | $total = count($this->filters); |
545 | 545 | for ($i = 0; $i < $total; $i++) { |
546 | - $method = 'applyFilter_' . $this->filters[$i]['type']; |
|
546 | + $method = 'applyFilter_'.$this->filters[$i]['type']; |
|
547 | 547 | $value = $this->$method($value, $this->filters[$i]['params']); |
548 | 548 | } |
549 | 549 | |
@@ -700,7 +700,7 @@ discard block |
||
700 | 700 | * @param bool $stripEmptyEntries Remove empty entries from the array? |
701 | 701 | * @return \AppUtils\Request_Param |
702 | 702 | */ |
703 | - public function addCommaSeparatedFilter(bool $trimEntries=true, bool $stripEmptyEntries=true) : Request_Param |
|
703 | + public function addCommaSeparatedFilter(bool $trimEntries = true, bool $stripEmptyEntries = true) : Request_Param |
|
704 | 704 | { |
705 | 705 | $this->setArray(); |
706 | 706 | |
@@ -713,7 +713,7 @@ discard block |
||
713 | 713 | ); |
714 | 714 | } |
715 | 715 | |
716 | - protected function addClassFilter(string $name, array $params=array()) : Request_Param |
|
716 | + protected function addClassFilter(string $name, array $params = array()) : Request_Param |
|
717 | 717 | { |
718 | 718 | return $this->addFilter( |
719 | 719 | self::FILTER_TYPE_CLASS, |
@@ -27,14 +27,14 @@ |
||
27 | 27 | */ |
28 | 28 | protected $param; |
29 | 29 | |
30 | - /** |
|
31 | - * @var mixed |
|
32 | - */ |
|
30 | + /** |
|
31 | + * @var mixed |
|
32 | + */ |
|
33 | 33 | protected $value; |
34 | 34 | |
35 | - /** |
|
36 | - * @var bool |
|
37 | - */ |
|
35 | + /** |
|
36 | + * @var bool |
|
37 | + */ |
|
38 | 38 | protected $isSubvalue = false; |
39 | 39 | |
40 | 40 | public function __construct(Request_Param $param, bool $subval) |
@@ -28,11 +28,11 @@ |
||
28 | 28 | protected function _validate() |
29 | 29 | { |
30 | 30 | // subvalues cannot be arrays |
31 | - if($this->isSubvalue) { |
|
31 | + if ($this->isSubvalue) { |
|
32 | 32 | return $this->value; |
33 | 33 | } |
34 | 34 | |
35 | - if(is_array($this->value)) { |
|
35 | + if (is_array($this->value)) { |
|
36 | 36 | return $this->value; |
37 | 37 | } |
38 | 38 |
@@ -33,22 +33,22 @@ |
||
33 | 33 | |
34 | 34 | // if we are validating a subvalue, it means we are |
35 | 35 | // validating a single value in the existing list. |
36 | - if($this->isSubvalue) |
|
36 | + if ($this->isSubvalue) |
|
37 | 37 | { |
38 | - if(in_array($this->value, $allowed)) { |
|
38 | + if (in_array($this->value, $allowed)) { |
|
39 | 39 | return $this->value; |
40 | 40 | } |
41 | 41 | |
42 | 42 | return null; |
43 | 43 | } |
44 | 44 | |
45 | - if(!is_array($this->value)) { |
|
45 | + if (!is_array($this->value)) { |
|
46 | 46 | return array(); |
47 | 47 | } |
48 | 48 | |
49 | 49 | $keep = array(); |
50 | - foreach($this->value as $item) { |
|
51 | - if(in_array($item, $allowed)) { |
|
50 | + foreach ($this->value as $item) { |
|
51 | + if (in_array($item, $allowed)) { |
|
52 | 52 | $keep[] = $item; |
53 | 53 | } |
54 | 54 | } |