c170f000 by Joshua Tundag

allow both

1 parent a537571a
...@@ -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 /**
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!