1818
1919namespace vwo \Decorators ;
2020
21- use vwo \Packages \Logger \Core \LogManager ;
2221use vwo \Services \StorageService ;
2322use vwo \Enums \StorageEnum ;
2423use vwo \Models \FeatureModel ;
2524use vwo \Models \VariationModel ;
2625use vwo \Models \User \ContextModel ;
26+ use vwo \Services \ServiceContainer ;
2727
2828interface IStorageDecorator
2929{
30- public function getFeatureFromStorage ($ featureKey , $ context , $ storageService );
31- public function setDataInStorage ($ data , $ storageService );
30+ public function getFeatureFromStorage ($ featureKey , $ context , $ storageService, ServiceContainer $ serviceContainer = null );
31+ public function setDataInStorage ($ data , $ storageService, ServiceContainer $ serviceContainer = null );
3232}
3333
3434class StorageDecorator implements IStorageDecorator
3535{
36- public function getFeatureFromStorage ($ featureKey , $ context , $ storageService )
36+ public function getFeatureFromStorage ($ featureKey , $ context , $ storageService, ServiceContainer $ serviceContainer = null )
3737 {
38- $ campaignMap = $ storageService ->getDataInStorage ($ featureKey , $ context );
38+ $ campaignMap = $ storageService ->getDataInStorage ($ featureKey , $ context, $ serviceContainer );
3939
4040 switch ($ campaignMap ) {
4141 case StorageEnum::STORAGE_UNDEFINED :
@@ -55,9 +55,10 @@ public function getFeatureFromStorage($featureKey, $context, $storageService)
5555 }
5656 }
5757
58- public function setDataInStorage ($ data , $ storageService )
58+ public function setDataInStorage ($ data , $ storageService, ServiceContainer $ serviceContainer = null )
5959 {
6060 $ featureKey = $ data ['featureKey ' ] ?? null ;
61+ $ featureId = $ data ['featureId ' ] ?? null ;
6162 $ context = $ data ['context ' ] ?? null ;
6263 $ rolloutId = $ data ['rolloutId ' ] ?? null ;
6364 $ rolloutKey = $ data ['rolloutKey ' ] ?? null ;
@@ -66,27 +67,29 @@ public function setDataInStorage($data, $storageService)
6667 $ experimentKey = $ data ['experimentKey ' ] ?? null ;
6768 $ experimentVariationId = $ data ['experimentVariationId ' ] ?? null ;
6869
70+ $ logManager = $ serviceContainer ->getLogManager ();
71+
6972 if (!$ featureKey ) {
70- LogManager:: instance () ->error ("Error storing data: featureKey is invalid. " );
73+ $ logManager ->error ("Error storing data: featureKey is invalid. " );
7174 return false ;
7275 }
7376
7477 if ($ context ->getId () == null ) {
75- LogManager:: instance () ->error ("Error storing data: Context or Context.id is invalid. " );
78+ $ logManager ->error ("Error storing data: Context or Context.id is invalid. " );
7679 return false ;
7780 }
7881
7982 if ($ rolloutKey && !$ experimentKey && !$ rolloutVariationId ) {
80- LogManager:: instance () ->error ("Error storing data: Variation (rolloutKey, experimentKey or rolloutVariationId) is invalid. " );
83+ $ logManager ->error ("Error storing data: Variation (rolloutKey, experimentKey or rolloutVariationId) is invalid. " );
8184 return false ;
8285 }
8386
8487 if ($ experimentKey && !$ experimentVariationId ) {
85- LogManager:: instance () ->error ("Error storing data: Variation (experimentKey or experimentVariationId) is invalid. " );
88+ $ logManager ->error ("Error storing data: Variation (experimentKey or experimentVariationId) is invalid. " );
8689 return false ;
8790 }
8891
89- $ storageService -> setDataInStorage ( [
92+ $ storageData = [
9093 'featureKey ' => $ featureKey ,
9194 'userId ' => $ context ->getId (),
9295 'rolloutId ' => isset ($ rolloutId ) ? $ rolloutId : null ,
@@ -95,7 +98,14 @@ public function setDataInStorage($data, $storageService)
9598 'experimentId ' => isset ($ experimentId ) ? $ experimentId : null ,
9699 'experimentKey ' => isset ($ experimentKey ) ? $ experimentKey : null ,
97100 'experimentVariationId ' => isset ($ experimentVariationId ) ? $ experimentVariationId : null ,
98- ]);
101+ ];
102+
103+ // Add featureId if provided
104+ if ($ featureId !== null ) {
105+ $ storageData ['featureId ' ] = $ featureId ;
106+ }
107+
108+ $ storageService ->setDataInStorage ($ storageData , $ serviceContainer );
99109
100110 return true ;
101111 }
0 commit comments