1 <?php
2
3 4 5 6 7 8 9
10 class rex_extension_point
11 {
12 private $name;
13 private $subject;
14 private $params = [];
15 private $extensionParams = [];
16 private $readonly = false;
17
18 19 20 21 22 23 24 25
26 public function __construct($name, $subject = null, array $params = [], $readonly = false)
27 {
28 $this->name = $name;
29 $this->subject = $subject;
30 $this->params = $params;
31 $this->readonly = $readonly;
32 }
33
34 35 36 37 38
39 public function getName()
40 {
41 return $this->name;
42 }
43
44 45 46 47 48 49 50
51 public function setSubject($subject)
52 {
53 if ($this->isReadonly()) {
54 throw new rex_exception('Subject can\'t be adjusted in readonly extension points');
55 }
56 $this->subject = $subject;
57 }
58
59 60 61 62 63
64 public function getSubject()
65 {
66 return $this->subject;
67 }
68
69 70 71 72 73 74 75 76
77 public function setParam($key, $value)
78 {
79 if ($this->isReadonly()) {
80 throw new rex_exception('Params can\'t be adjusted in readonly extension points');
81 }
82 $this->params[$key] = $value;
83 }
84
85 86 87 88 89
90 public function setExtensionParams(array $params)
91 {
92 $this->extensionParams = $params;
93 }
94
95 96 97 98 99 100 101
102 public function hasParam($key)
103 {
104 return isset($this->params[$key]) || isset($this->extensionParams[$key]);
105 }
106
107 108 109 110 111 112 113 114
115 public function getParam($key, $default = null)
116 {
117 if (isset($this->extensionParams[$key])) {
118 return $this->extensionParams[$key];
119 }
120 if (isset($this->params[$key])) {
121 return $this->params[$key];
122 }
123 return $default;
124 }
125
126 127 128 129 130
131 public function getParams()
132 {
133 return array_merge($this->params, $this->extensionParams);
134 }
135
136 137 138 139 140
141 public function isReadonly()
142 {
143 return $this->readonly;
144 }
145 }
146