Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mobile_web_device_match($class_capabilities, $user_capabilities) {
- $group_pass = FALSE;
- // Default operator is AND
- $operator = $class_capabilities['operator'] ? $class_capabilities['operator'] : 'AND';
- foreach ($class_capabilities['support'] as $logic) {
- if (array_key_exists('support', $logic)) {
- $match = mobile_web_device_match($logic, $user_capabilities); // Recurse, yo
- if (!$match) {
- return FALSE;
- }
- }
- else {
- // Default comparison operator is ==
- $comparison = $logic['comparison'] ? $logic['comparison'] : '==';
- $user_value = '';
- $cap = $logic['capability'];
- $user_value = $user_capabilities[$cap];
- $test_value = $logic['value'];
- $pass = FALSE;
- switch ($comparison) { // Trying to avoid using eval()
- case '==':
- if ($user_value == $test_value) {
- $pass = TRUE;
- }
- break;
- case '!=':
- if ($user_value != $test_value) {
- $pass = TRUE;
- }
- break;
- case '>':
- if ($user_value > $test_value) {
- $pass = TRUE;
- }
- break;
- case '<':
- if ($user_value < $test_value) {
- $pass = TRUE;
- }
- break;
- case '>=':
- if ($user_value >= $test_value) {
- $pass = TRUE;
- }
- break;
- case '<=':
- if ($user_value <= $test_value) {
- $pass = TRUE;
- }
- break;
- case 'LIKE':
- if (strpos($user_value, $test_value) !== FALSE) {
- $pass = TRUE;
- }
- break;
- case 'NOT LIKE':
- if (strpos($user_value, $test_value) === FALSE) {
- $pass = TRUE;
- }
- break;
- default:
- if ($user_value == $test_value) {
- $pass = TRUE;
- }
- break;
- }
- // Test: $user_value $comparison $test_value
- // If fail AND operator == AND, return false
- $result = ($pass) ? "PASS" : "FAIL";
- if ($pass) {
- $group_pass = TRUE;
- }
- else if (!$pass && $operator == 'AND') {
- $group_pass = FALSE;
- break;
- }
- }
- }
- return $group_pass;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement