From aa05b557dee733ff0388344a734684ed52cb62c4 Mon Sep 17 00:00:00 2001 From: John Kodumal Date: Tue, 12 May 2015 14:43:48 -0700 Subject: [PATCH] Fix two bugs in user targets: don't access protected property, and parse target rule --- src/LaunchDarkly/LDClient.php | 2 +- src/LaunchDarkly/TargetRule.php | 4 ++++ src/LaunchDarkly/Variation.php | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/LaunchDarkly/LDClient.php b/src/LaunchDarkly/LDClient.php index 7411e9ccb..7655d3d43 100644 --- a/src/LaunchDarkly/LDClient.php +++ b/src/LaunchDarkly/LDClient.php @@ -212,7 +212,7 @@ protected static function _decode($json, $user) { $ts = empty($v['targets']) ? [] : $v['targets']; $targets = array_map($makeTarget, $ts); if (isset($v['userTarget'])) { - return new Variation($v['value'], $v['weight'], $targets, $v['userTarget']); + return new Variation($v['value'], $v['weight'], $targets, $makeTarget($v['userTarget'])); } else { return new Variation($v['value'], $v['weight'], $targets, null); diff --git a/src/LaunchDarkly/TargetRule.php b/src/LaunchDarkly/TargetRule.php index cc7345f25..0f75b8c3d 100644 --- a/src/LaunchDarkly/TargetRule.php +++ b/src/LaunchDarkly/TargetRule.php @@ -15,6 +15,10 @@ public function __construct($attribute, $operator, $values) { $this->_values = $values; } + public function isKey() { + return $this->_attribute == "key"; + } + public function matchTarget($user) { $u_value = null; diff --git a/src/LaunchDarkly/Variation.php b/src/LaunchDarkly/Variation.php index 1399ab899..35a38c72b 100644 --- a/src/LaunchDarkly/Variation.php +++ b/src/LaunchDarkly/Variation.php @@ -27,7 +27,7 @@ public function matchUser($user) { public function matchTarget($user) { foreach($this->_targets as $target) { - if ($this->_userTarget != null && $target->_attribute == "key") { + if ($this->_userTarget != null && $target->isKey()) { continue; } if ($target->matchTarget($user)) {