11<?php
22namespace LaunchDarkly ;
33
4+ use LaunchDarkly \Impl \EventFactory ;
45use LaunchDarkly \Integrations \Guzzle ;
56use Monolog \Handler \ErrorLogHandler ;
67use Monolog \Logger ;
@@ -33,6 +34,10 @@ class LDClient
3334 protected $ _logger ;
3435 /** @var FeatureRequester */
3536 protected $ _featureRequester ;
37+ /** @var EventFactory */
38+ protected $ _eventFactoryDefault ;
39+ /** @var EventFactory */
40+ protected $ _eventFactoryWithReasons ;
3641
3742 /**
3843 * Creates a new client instance that connects to LaunchDarkly.
@@ -99,6 +104,9 @@ public function __construct($sdkKey, $options = array())
99104 }
100105 $ this ->_logger = $ options ['logger ' ];
101106
107+ $ this ->_eventFactoryDefault = new EventFactory (false );
108+ $ this ->_eventFactoryWithReasons = new EventFactory (true );
109+
102110 $ this ->_eventProcessor = new EventProcessor ($ sdkKey , $ options );
103111
104112 $ this ->_featureRequester = $ this ->getFeatureRequester ($ sdkKey , $ options );
@@ -141,7 +149,7 @@ private function getFeatureRequester($sdkKey, array $options)
141149 */
142150 public function variation ($ key , $ user , $ default = false )
143151 {
144- $ detail = $ this ->variationDetailInternal ($ key , $ user , $ default , false );
152+ $ detail = $ this ->variationDetailInternal ($ key , $ user , $ default , $ this -> _eventFactoryDefault );
145153 return $ detail ->getValue ();
146154 }
147155
@@ -159,29 +167,31 @@ public function variation($key, $user, $default = false)
159167 */
160168 public function variationDetail ($ key , $ user , $ default = false )
161169 {
162- return $ this ->variationDetailInternal ($ key , $ user , $ default , true );
170+ return $ this ->variationDetailInternal ($ key , $ user , $ default , $ this -> _eventFactoryWithReasons );
163171 }
164172
165173 /**
166174 * @param string $key
167175 * @param LDUser $user
168176 * @param mixed $default
169- * @param bool $includeReasonsInEvents
177+ * @param EventFactory $eventFactory
170178 */
171- private function variationDetailInternal ($ key , $ user , $ default , $ includeReasonsInEvents )
179+ private function variationDetailInternal ($ key , $ user , $ default , $ eventFactory )
172180 {
173181 $ default = $ this ->_get_default ($ key , $ default );
174182
175183 $ errorResult = function ($ errorKind ) use ($ key , $ default ) {
176184 return new EvaluationDetail ($ default , null , EvaluationReason::error ($ errorKind ));
177185 };
178- $ sendEvent = function ($ detail , $ flag ) use ($ key , $ user , $ default , $ includeReasonsInEvents ) {
186+ $ sendEvent = function ($ detail , $ flag ) use ($ key , $ user , $ default , $ eventFactory ) {
179187 if ($ this ->isOffline () || !$ this ->_send_events ) {
180188 return ;
181189 }
182- $ event = Util::newFeatureRequestEvent ($ key , $ user , $ detail ->getVariationIndex (), $ detail ->getValue (),
183- $ default , $ flag ? $ flag ->getVersion () : null , null ,
184- $ includeReasonsInEvents ? $ detail ->getReason () : null );
190+ if ($ flag ) {
191+ $ event = $ eventFactory ->newEvalEvent ($ flag , $ user , $ detail , $ default );
192+ } else {
193+ $ event = $ eventFactory ->newUnknownFlagEvent ($ key , $ user , $ detail );
194+ }
185195 $ this ->_eventProcessor ->enqueue ($ event );
186196 };
187197
@@ -211,7 +221,7 @@ private function variationDetailInternal($key, $user, $default, $includeReasonsI
211221 $ this ->_logger ->warning ("Variation called with null user or null user key! Returning default value " );
212222 return $ result ;
213223 }
214- $ evalResult = $ flag ->evaluate ($ user , $ this ->_featureRequester , $ includeReasonsInEvents );
224+ $ evalResult = $ flag ->evaluate ($ user , $ this ->_featureRequester , $ eventFactory );
215225 if (!$ this ->isOffline () && $ this ->_send_events ) {
216226 foreach ($ evalResult ->getPrerequisiteEvents () as $ e ) {
217227 $ this ->_eventProcessor ->enqueue ($ e );
@@ -271,16 +281,7 @@ public function track($eventName, $user, $data)
271281 if (is_null ($ user ) || $ user ->isKeyBlank ()) {
272282 $ this ->_logger ->warning ("Track called with null user or null/empty user key! " );
273283 }
274-
275- $ event = array ();
276- $ event ['user ' ] = $ user ;
277- $ event ['kind ' ] = "custom " ;
278- $ event ['creationDate ' ] = Util::currentTimeUnixMillis ();
279- $ event ['key ' ] = $ eventName ;
280- if (isset ($ data )) {
281- $ event ['data ' ] = $ data ;
282- }
283- $ this ->_eventProcessor ->enqueue ($ event );
284+ $ this ->_eventProcessor ->enqueue ($ this ->_eventFactoryDefault ->newCustomEvent ($ eventName , $ user , $ data ));
284285 }
285286
286287 /**
@@ -294,13 +295,7 @@ public function identify($user)
294295 if (is_null ($ user ) || $ user ->isKeyBlank ()) {
295296 $ this ->_logger ->warning ("Track called with null user or null/empty user key! " );
296297 }
297-
298- $ event = array ();
299- $ event ['user ' ] = $ user ;
300- $ event ['kind ' ] = "identify " ;
301- $ event ['creationDate ' ] = Util::currentTimeUnixMillis ();
302- $ event ['key ' ] = $ user ->getKey ();
303- $ this ->_eventProcessor ->enqueue ($ event );
298+ $ this ->_eventProcessor ->enqueue ($ this ->_eventFactoryDefault ->newIdentifyEvent ($ user ));
304299 }
305300
306301 /** Returns an array mapping Feature Flag keys to their evaluated results for a given user.
@@ -368,7 +363,7 @@ public function allFlagsState($user, $options = array())
368363 if ($ clientOnly && !$ flag ->isClientSide ()) {
369364 continue ;
370365 }
371- $ result = $ flag ->evaluate ($ user , $ preloadedRequester );
366+ $ result = $ flag ->evaluate ($ user , $ preloadedRequester, $ this -> _eventFactoryDefault );
372367 $ state ->addFlag ($ flag , $ result ->getDetail (), $ withReasons , $ detailsOnlyIfTracked );
373368 }
374369 return $ state ;
0 commit comments