@@ -7,38 +7,58 @@ class AnalyticsRules implements \ArrayAccess
77 const RESOURCE_PATH = '/analytics/rules ' ;
88
99 private ApiCall $ apiCall ;
10- private $ analyticsRules = [];
10+
11+ /**
12+ * @var array
13+ */
14+ private array $ analyticsRules = [];
1115
1216 public function __construct (ApiCall $ apiCall )
1317 {
1418 $ this ->apiCall = $ apiCall ;
1519 }
1620
17- public function __get ($ ruleName )
18- {
19- if (!isset ($ this ->analyticsRules [$ ruleName ])) {
20- $ this ->analyticsRules [$ ruleName ] = new AnalyticsRule ($ ruleName , $ this ->apiCall );
21- }
22- return $ this ->analyticsRules [$ ruleName ];
23- }
24-
25- public function upsert ($ ruleName , $ params )
21+ /**
22+ * Create multiple analytics rules
23+ *
24+ * @param array $rules Array of rule objects
25+ * @return array Response from the API
26+ */
27+ public function create (array $ rules )
2628 {
27- return $ this ->apiCall ->put ( $ this -> endpoint_path ( $ ruleName ) , $ params );
29+ return $ this ->apiCall ->post ( self :: RESOURCE_PATH , $ rules );
2830 }
2931
32+ /**
33+ * Retrieve all analytics rules
34+ *
35+ * @return array Response from the API
36+ */
3037 public function retrieve ()
3138 {
32- return $ this ->apiCall ->get ($ this -> endpoint_path () , []);
39+ return $ this ->apiCall ->get (self :: RESOURCE_PATH , []);
3340 }
3441
35- private function endpoint_path ($ operation = null )
42+ /**
43+ * Get a specific rule by name
44+ *
45+ * @param string $ruleName
46+ * @return AnalyticsRule
47+ */
48+ public function __get ($ ruleName )
3649 {
37- return self ::RESOURCE_PATH . ($ operation === null ? '' : "/ " . encodeURIComponent ($ operation ));
50+ if (isset ($ this ->{$ ruleName })) {
51+ return $ this ->{$ ruleName };
52+ }
53+ if (!isset ($ this ->analyticsRules [$ ruleName ])) {
54+ $ this ->analyticsRules [$ ruleName ] = new AnalyticsRule ($ ruleName , $ this ->apiCall );
55+ }
56+
57+ return $ this ->analyticsRules [$ ruleName ];
3858 }
3959
4060 /**
41- * @inheritDoc
61+ * ArrayAccess implementation for backwards compatibility
4262 */
4363 public function offsetExists ($ offset ): bool
4464 {
@@ -72,4 +92,4 @@ public function offsetUnset($offset): void
7292 {
7393 unset($ this ->analyticsRules [$ offset ]);
7494 }
75- }
95+ }
0 commit comments