allow both
Showing
2 changed files
with
9 additions
and
32 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($value['name'], $value['value'], time() + (86400 * 30), "/"); | 159 | setcookie($flag['encrypted_name'], $value, time() + (86400 * 30), "/"); |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | 162 | ||
| ... | @@ -172,24 +172,13 @@ class FlagManager { | ... | @@ -172,24 +172,13 @@ 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 | $flagName = $flag['encrypted_name']; | 175 | if((isset($flag['both_usable']) && $flag['both_usable'])){ |
| 176 | $value = !empty($_GET[$flagName]) ? $this->filterFlag($flag, $_GET[$flagName], $defaultValue) : null; | 176 | if(!empty($_GET[$flag['name']])) return $this->filterFlag($flag, $_GET[$flag['name']], $defaultValue); |
| 177 | if(isset($flag['both_usable']) && $flag['both_usable'] && (!empty($_GET[$flag['name']]) || !empty($_COOKIE[$flag['name']]))){ | 177 | if(!empty($_GET[$flag['encrypted_name']])) return $this->filterFlag($flag, $_GET[$flag['encrypted_name']], $defaultValue); |
| 178 | $value = !empty($_GET[$flag['name']]) ? $this->filterFlag($flag, $_GET[$flag['name']], $defaultValue) : $value; | 178 | if(!empty($_COOKIE[$flag['encrypted_name']])) return $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue); |
| 179 | } | 179 | } |
| 180 | return [ | 180 | $flagName = $flag['is_encrypted'] ? $flag['encrypted_name'] : $flag['name']; |
| 181 | 'name' => $flag['encrypted_name'], | 181 | return !empty($_GET[$flagName]) ? $this->filterFlag($flag, $_GET[$flagName], $defaultValue) : (!empty($_COOKIE[$flag['encrypted_name']]) ? $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue) : $defaultValue); |
| 182 | 'value' => $value ? $value : (!empty($_COOKIE[$flag['encrypted_name']]) ? $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue) : $defaultValue), | ||
| 183 | ]; | ||
| 184 | } | ||
| 185 | |||
| 186 | private function filter($flag, $value, $default){ | ||
| 187 | $this->checkDir(); | ||
| 188 | $filters = [ | ||
| 189 | 'pmt' => ['rec', 'st'] | ||
| 190 | ]; | ||
| 191 | if(isset($filters[$flag])) return (in_array($value, $filters[$flag]))? $value:$default; | ||
| 192 | return $value; | ||
| 193 | } | 182 | } |
| 194 | 183 | ||
| 195 | public function getFlag($flag, $encrypted){ | 184 | public function getFlag($flag, $encrypted){ |
| ... | @@ -197,7 +186,7 @@ class FlagManager { | ... | @@ -197,7 +186,7 @@ class FlagManager { |
| 197 | $flags = $this->all(); | 186 | $flags = $this->all(); |
| 198 | if(!$flags) return []; | 187 | if(!$flags) return []; |
| 199 | $filteredFlags = array_values(array_filter($flags, function($f) use ($flag, $encrypted){ | 188 | $filteredFlags = array_values(array_filter($flags, function($f) use ($flag, $encrypted){ |
| 200 | if(isset($f['both_usable']) && $f['both_usable']) return in_array($flag, [$f['encrypted_name'], $f['name']]); | 189 | if(isset($f['both_usable']) && $f['both_usable']) return $flag == $f['name'] || $flag == $f['encrypted_name']; |
| 201 | return (($encrypted && $f['encrypted_name'] == $flag) || (!$encrypted && $f['name'] == $flag)); | 190 | return (($encrypted && $f['encrypted_name'] == $flag) || (!$encrypted && $f['name'] == $flag)); |
| 202 | })); | 191 | })); |
| 203 | return count($filteredFlags) ? $filteredFlags[0] : null; | 192 | return count($filteredFlags) ? $filteredFlags[0] : null; | ... | ... |
| ... | @@ -18,19 +18,7 @@ class Flags{ | ... | @@ -18,19 +18,7 @@ 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 | if(isset($flag['both_usable']) && $flag['both_usable']){ | 21 | return $flagManager->checkFlag($flag, $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null)); |
| 22 | $flagName = $flag['encrypted_name']; | ||
| 23 | } | ||
| 24 | $flagFromStorage = self::findFlagFromStorage($flagName, $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null), $driver); | ||
| 25 | if(!$flag['is_filtered']) return $flagFromStorage; | ||
| 26 | |||
| 27 | $filteredFlag = null; | ||
| 28 | if($flag['is_filtered']){ | ||
| 29 | $filteredFlag = array_values(array_filter($flag['accepted_values'], function($value) use ($flagFromStorage, $encrypted){ return $value['encrypted_value'] == $flagFromStorage; })); | ||
| 30 | } | ||
| 31 | $filteredValue = array_values(array_filter($flag['accepted_values'], function($value) use ($flag){ return $value['encrypted_value'] == $flag['default']; })); | ||
| 32 | |||
| 33 | return $filteredFlag && isset($filteredFlag[0]) ? $filteredFlag[0]['value'] : ($flag['is_encrypted'] && isset($filteredValue[0]['value']) ? $filteredValue[0]['value'] : $flag['default']); | ||
| 34 | } | 22 | } |
| 35 | 23 | ||
| 36 | /** | 24 | /** | ... | ... |
-
Please register or sign in to post a comment