4141class CircleProbe extends MemberProbe {
4242
4343
44- /** @var array */
45- public static $ filters = [
46- Circle::CFG_SINGLE ,
47- Circle::CFG_HIDDEN ,
48- Circle::CFG_BACKEND ,
49- ];
50-
5144 /** @var int */
5245 private $ include = 0 ;
5346
47+ /** @var int */
48+ private $ filter = 0 ;
49+
50+
51+ /**
52+ * CircleProbe constructor.
53+ *
54+ * @param bool $defaultFilters
55+ */
56+ public function __construct (bool $ defaultFilters = true ) {
57+ if ($ defaultFilters ) {
58+ $ this ->filter = Circle::CFG_SINGLE | Circle::CFG_HIDDEN ;
59+ }
60+ }
61+
5462
5563 /**
5664 * @param bool $include
@@ -139,21 +147,95 @@ public function isIncluded(int $config): bool {
139147 return (($ this ->included () & $ config ) !== 0 );
140148 }
141149
150+
151+ /**
152+ * @param bool $filter
153+ *
154+ * @return $this
155+ */
156+ public function filterPersonalCircles (bool $ filter = true ): self {
157+ $ this ->filter |= Circle::CFG_PERSONAL ;
158+ if (!$ filter ) {
159+ $ this ->filter -= Circle::CFG_PERSONAL ;
160+ }
161+
162+ return $ this ;
163+ }
164+
165+ /**
166+ * @param bool $filter
167+ *
168+ * @return $this
169+ */
170+ public function filterSingleCircles (bool $ filter = true ): self {
171+ $ this ->filter |= Circle::CFG_SINGLE ;
172+ if (!$ filter ) {
173+ $ this ->filter -= Circle::CFG_SINGLE ;
174+ }
175+
176+ return $ this ;
177+ }
178+
179+ /**
180+ * @param bool $filter
181+ *
182+ * @return $this
183+ */
184+ public function filterSystemCircles (bool $ filter = true ): self {
185+ $ this ->filter |= Circle::CFG_SYSTEM ;
186+ if (!$ filter ) {
187+ $ this ->filter -= Circle::CFG_SYSTEM ;
188+ }
189+
190+ return $ this ;
191+ }
192+
193+ /**
194+ * @param bool $filter
195+ *
196+ * @return $this
197+ */
198+ public function filterHiddenCircles (bool $ filter = true ): self {
199+ $ this ->filter |= Circle::CFG_HIDDEN ;
200+ if (!$ filter ) {
201+ $ this ->filter -= Circle::CFG_HIDDEN ;
202+ }
203+
204+ return $ this ;
205+ }
206+
207+ /**
208+ * @param bool $filter
209+ *
210+ * @return $this
211+ */
212+ public function filterBackendCircles (bool $ filter = true ): self {
213+ $ this ->filter |= Circle::CFG_BACKEND ;
214+ if (!$ filter ) {
215+ $ this ->filter -= Circle::CFG_BACKEND ;
216+ }
217+
218+ return $ this ;
219+ }
220+
221+
142222 /**
143223 * @return int
144224 */
145225 public function filtered (): int {
146- $ filtered = 0 ;
147- foreach (self ::$ filters as $ filter ) {
148- if ($ this ->isIncluded ($ filter )) {
149- continue ;
150- }
151- $ filtered += $ filter ;
152- }
226+ return $ this ->filter ;
227+ }
153228
154- return $ filtered ;
229+ /**
230+ * @param int $config
231+ *
232+ * @return bool
233+ */
234+ public function isFiltered (int $ config ): bool {
235+ return (($ this ->filtered () & $ config ) !== 0 );
155236 }
156237
238+
157239 /**
158240 * @return array
159241 */
@@ -162,9 +244,16 @@ public function getAsOptions(): array {
162244 [
163245 'included ' => $ this ->included (),
164246 'includeHiddenCircles ' => $ this ->isIncluded (Circle::CFG_HIDDEN ),
247+ 'includeSingleCircles ' => $ this ->isIncluded (Circle::CFG_SINGLE ),
165248 'includeBackendCircles ' => $ this ->isIncluded (Circle::CFG_BACKEND ),
166249 'includeSystemCircles ' => $ this ->isIncluded (Circle::CFG_SYSTEM ),
167250 'includePersonalCircles ' => $ this ->isIncluded (Circle::CFG_PERSONAL ),
251+ 'filtered ' => $ this ->included (),
252+ 'filterHiddenCircles ' => $ this ->isIncluded (Circle::CFG_HIDDEN ),
253+ 'filterSingleCircles ' => $ this ->isIncluded (Circle::CFG_SINGLE ),
254+ 'filterBackendCircles ' => $ this ->isIncluded (Circle::CFG_BACKEND ),
255+ 'filterSystemCircles ' => $ this ->isIncluded (Circle::CFG_SYSTEM ),
256+ 'filterPersonalCircles ' => $ this ->isIncluded (Circle::CFG_PERSONAL ),
168257 ],
169258 parent ::getAsOptions ()
170259 );
0 commit comments