Initialize this filter, parse configuration.
31 {
32 parent::__construct(
$config, $reserved);
34
36
37 foreach (
$config as $attribute => $rules) {
38 if ($attribute === '%ignoreEntities') {
39 $this->ignoreEntities =
$config[
'%ignoreEntities'];
40 continue;
41 }
42
43 if (!is_string($attribute)) {
45 }
46 $this->cardinality[$attribute] = array('warn' => false);
47
48
49 if (isset($rules[0])) {
50 $this->cardinality[$attribute]['min'] = $rules[0];
51 } elseif (isset($rules['min'])) {
52 $this->cardinality[$attribute]['min'] = $rules['min'];
53 }
54 if (isset($rules[1])) {
55 $this->cardinality[$attribute]['max'] = $rules[1];
56 } elseif (isset($rules['max'])) {
57 $this->cardinality[$attribute]['max'] = $rules['max'];
58 }
59 if (array_key_exists('warn', $rules)) {
60 $this->cardinality[$attribute]['warn'] = (bool) $rules['warn'];
61 }
62
63
64 if (!array_key_exists('min', $this->cardinality[$attribute])) {
65 $this->cardinality[$attribute]['min'] = 0;
66 } elseif (!is_int($this->cardinality[$attribute]['min']) ||
67 $this->cardinality[$attribute]['min'] < 0
68 ) {
70 var_export($attribute, true));
71 }
72 if (array_key_exists('max', $this->cardinality[$attribute]) &&
73 !is_int($this->cardinality[$attribute]['max'])
74 ) {
76 var_export($attribute, true));
77 }
78 if (array_key_exists('min', $this->cardinality[$attribute]) &&
79 array_key_exists('max', $this->cardinality[$attribute]) &&
80 $this->cardinality[$attribute]['min'] > $this->cardinality[$attribute]['max']
81 ) {
83 var_export($attribute, true));
84 }
85
86
87 $this->cardinality[$attribute]['_expr'] = sprintf('%d ≤ n', $this->cardinality[$attribute]['min']);
88 if (array_key_exists('max', $this->cardinality[$attribute])) {
89 $this->cardinality[$attribute]['_expr'] .= sprintf(' ≤ %d', $this->cardinality[$attribute]['max']);
90 }
91 }
92 }
static http()
Fetches the global http state from ILIAS.