Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Janis
/
btflags
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
c170f000
authored
2018-10-01 15:49:46 +0800
by
Joshua Tundag
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
allow both
1 parent
a537571a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
9 additions
and
32 deletions
src/BTFlags/FlagManager.php
src/BTFlags/Flags.php
src/BTFlags/FlagManager.php
View file @
c170f00
...
...
@@ -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
;
...
...
src/BTFlags/Flags.php
View file @
c170f00
...
...
@@ -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
));
}
/**
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment