fix
Showing
2 changed files
with
15 additions
and
8 deletions
| ... | @@ -156,7 +156,7 @@ class FlagManager { | ... | @@ -156,7 +156,7 @@ class FlagManager { |
| 156 | if(!$flags) return []; | 156 | if(!$flags) return []; |
| 157 | foreach($flags as $flag){ | 157 | foreach($flags as $flag){ |
| 158 | $value = $this->checkFlag($flag, !empty($flag['default']) ? $flag['default'] : null); | 158 | $value = $this->checkFlag($flag, !empty($flag['default']) ? $flag['default'] : null); |
| 159 | setcookie($flag['encrypted_name'], $value, time() + (86400 * 30), "/"); | 159 | setcookie($value['name'], $value['value'], time() + (86400 * 30), "/"); |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | 162 | ||
| ... | @@ -172,11 +172,15 @@ class FlagManager { | ... | @@ -172,11 +172,15 @@ class FlagManager { |
| 172 | 172 | ||
| 173 | public function checkFlag($flag, $defaultValue, $driver = 'cookie'){ | 173 | public function checkFlag($flag, $defaultValue, $driver = 'cookie'){ |
| 174 | $this->checkDir(); | 174 | $this->checkDir(); |
| 175 | $flagEncryptedName = $flag['encrypted_name']; | 175 | $flagName = $flag['encrypted_name']; |
| 176 | // Cookie Driver | 176 | $value = !empty($_GET[$flagName]) ? $this->filterFlag($flag, $_GET[$flagName], $defaultValue) : null; |
| 177 | if($driver == 'cookie') return !empty($_GET[$flagEncryptedName]) ? $this->filterFlag($flag, $_GET[$flagEncryptedName], $defaultValue) : (!empty($_COOKIE[$flagEncryptedName]) ? $this->filterFlag($flag, $_COOKIE[$flagEncryptedName], $defaultValue) : $defaultValue); | 177 | if(isset($flag['both_usable']) && $flag['both_usable'] && (!empty($_GET[$flag['name']]) || !empty($_COOKIE[$flag['name']]))){ |
| 178 | // Session Driver | 178 | $value = !empty($_GET[$flag['name']]) ? $this->filterFlag($flag, $_GET[$flag['name']], $defaultValue) : $value; |
| 179 | return !empty($_GET[$flagEncryptedName]) ? $this->filterFlag($flag, $_GET[$flagEncryptedName], $defaultValue) : ($_SESSION[$flagEncryptedName] ? $this->filterFlag($flag, $_SESSION[$flagEncryptedName], $defaultValue) : $defaultValue); | 179 | } |
| 180 | return [ | ||
| 181 | 'name' => $flag['encrypted_name'], | ||
| 182 | 'value' => $value ? $value : (!empty($_COOKIE[$flag['encrypted_name']]) ? $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue) : $defaultValue), | ||
| 183 | ]; | ||
| 180 | } | 184 | } |
| 181 | 185 | ||
| 182 | private function filter($flag, $value, $default){ | 186 | private function filter($flag, $value, $default){ |
| ... | @@ -193,7 +197,7 @@ class FlagManager { | ... | @@ -193,7 +197,7 @@ class FlagManager { |
| 193 | $flags = $this->all(); | 197 | $flags = $this->all(); |
| 194 | if(!$flags) return []; | 198 | if(!$flags) return []; |
| 195 | $filteredFlags = array_values(array_filter($flags, function($f) use ($flag, $encrypted){ | 199 | $filteredFlags = array_values(array_filter($flags, function($f) use ($flag, $encrypted){ |
| 196 | if(isset($f['both_usable']) && $f['both_usable']) return $f['encrypted_name'] == $flag || $f['name'] == $flag; | 200 | if(isset($f['both_usable']) && $f['both_usable']) return in_array($flag, [$f['encrypted_name'], $f['name']]); |
| 197 | return (($encrypted && $f['encrypted_name'] == $flag) || (!$encrypted && $f['name'] == $flag)); | 201 | return (($encrypted && $f['encrypted_name'] == $flag) || (!$encrypted && $f['name'] == $flag)); |
| 198 | })); | 202 | })); |
| 199 | return count($filteredFlags) ? $filteredFlags[0] : null; | 203 | return count($filteredFlags) ? $filteredFlags[0] : null; | ... | ... |
| ... | @@ -18,7 +18,10 @@ class Flags{ | ... | @@ -18,7 +18,10 @@ class Flags{ |
| 18 | $flagManager = new FlagManager(); | 18 | $flagManager = new FlagManager(); |
| 19 | $flag = $flagManager->getFlag($flagName, $encrypted); | 19 | $flag = $flagManager->getFlag($flagName, $encrypted); |
| 20 | if(!$flag) return null; | 20 | if(!$flag) return null; |
| 21 | $flagFromStorage = self::findFlagFromStorage($encrypted ? $flagName : $flag['encrypted_name'], $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null), $driver); | 21 | if(isset($flag['both_usable']) && $flag['both_usable']){ |
| 22 | $flagName = $flag['encrypted_name']; | ||
| 23 | } | ||
| 24 | $flagFromStorage = self::findFlagFromStorage($flagName, $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null), $driver); | ||
| 22 | if(!$flag['is_filtered']) return $flagFromStorage; | 25 | if(!$flag['is_filtered']) return $flagFromStorage; |
| 23 | 26 | ||
| 24 | $filteredFlag = null; | 27 | $filteredFlag = null; | ... | ... |
-
Please register or sign in to post a comment