c170f000 by Joshua Tundag

allow both

1 parent a537571a
......@@ -156,7 +156,7 @@ class FlagManager {
if(!$flags) return [];
foreach($flags as $flag){
$value = $this->checkFlag($flag, !empty($flag['default']) ? $flag['default'] : null);
setcookie($value['name'], $value['value'], time() + (86400 * 30), "/");
setcookie($flag['encrypted_name'], $value, time() + (86400 * 30), "/");
}
}
......@@ -172,24 +172,13 @@ class FlagManager {
public function checkFlag($flag, $defaultValue, $driver = 'cookie'){
$this->checkDir();
$flagName = $flag['encrypted_name'];
$value = !empty($_GET[$flagName]) ? $this->filterFlag($flag, $_GET[$flagName], $defaultValue) : null;
if(isset($flag['both_usable']) && $flag['both_usable'] && (!empty($_GET[$flag['name']]) || !empty($_COOKIE[$flag['name']]))){
$value = !empty($_GET[$flag['name']]) ? $this->filterFlag($flag, $_GET[$flag['name']], $defaultValue) : $value;
if((isset($flag['both_usable']) && $flag['both_usable'])){
if(!empty($_GET[$flag['name']])) return $this->filterFlag($flag, $_GET[$flag['name']], $defaultValue);
if(!empty($_GET[$flag['encrypted_name']])) return $this->filterFlag($flag, $_GET[$flag['encrypted_name']], $defaultValue);
if(!empty($_COOKIE[$flag['encrypted_name']])) return $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue);
}
return [
'name' => $flag['encrypted_name'],
'value' => $value ? $value : (!empty($_COOKIE[$flag['encrypted_name']]) ? $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue) : $defaultValue),
];
}
private function filter($flag, $value, $default){
$this->checkDir();
$filters = [
'pmt' => ['rec', 'st']
];
if(isset($filters[$flag])) return (in_array($value, $filters[$flag]))? $value:$default;
return $value;
$flagName = $flag['is_encrypted'] ? $flag['encrypted_name'] : $flag['name'];
return !empty($_GET[$flagName]) ? $this->filterFlag($flag, $_GET[$flagName], $defaultValue) : (!empty($_COOKIE[$flag['encrypted_name']]) ? $this->filterFlag($flag, $_COOKIE[$flag['encrypted_name']], $defaultValue) : $defaultValue);
}
public function getFlag($flag, $encrypted){
......@@ -197,7 +186,7 @@ class FlagManager {
$flags = $this->all();
if(!$flags) return [];
$filteredFlags = array_values(array_filter($flags, function($f) use ($flag, $encrypted){
if(isset($f['both_usable']) && $f['both_usable']) return in_array($flag, [$f['encrypted_name'], $f['name']]);
if(isset($f['both_usable']) && $f['both_usable']) return $flag == $f['name'] || $flag == $f['encrypted_name'];
return (($encrypted && $f['encrypted_name'] == $flag) || (!$encrypted && $f['name'] == $flag));
}));
return count($filteredFlags) ? $filteredFlags[0] : null;
......
......@@ -18,19 +18,7 @@ class Flags{
$flagManager = new FlagManager();
$flag = $flagManager->getFlag($flagName, $encrypted);
if(!$flag) return null;
if(isset($flag['both_usable']) && $flag['both_usable']){
$flagName = $flag['encrypted_name'];
}
$flagFromStorage = self::findFlagFromStorage($flagName, $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null), $driver);
if(!$flag['is_filtered']) return $flagFromStorage;
$filteredFlag = null;
if($flag['is_filtered']){
$filteredFlag = array_values(array_filter($flag['accepted_values'], function($value) use ($flagFromStorage, $encrypted){ return $value['encrypted_value'] == $flagFromStorage; }));
}
$filteredValue = array_values(array_filter($flag['accepted_values'], function($value) use ($flag){ return $value['encrypted_value'] == $flag['default']; }));
return $filteredFlag && isset($filteredFlag[0]) ? $filteredFlag[0]['value'] : ($flag['is_encrypted'] && isset($filteredValue[0]['value']) ? $filteredValue[0]['value'] : $flag['default']);
return $flagManager->checkFlag($flag, $defaultValue ? $defaultValue : (isset($flag['has_default']) && $flag['has_default'] ? $flag['default'] : null));
}
/**
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!