Advertisement
Guest User

Mobile Web Device Match

a guest
Jan 11th, 2011
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.45 KB | None | 0 0
  1. function mobile_web_device_match($class_capabilities, $user_capabilities) {
  2.     $group_pass   = FALSE;
  3.     // Default operator is AND
  4.     $operator     = $class_capabilities['operator'] ? $class_capabilities['operator'] : 'AND';
  5.     foreach ($class_capabilities['support'] as $logic) {
  6.       if (array_key_exists('support', $logic)) {
  7.         $match = mobile_web_device_match($logic, $user_capabilities); // Recurse, yo
  8.         if (!$match) {
  9.           return FALSE;
  10.         }
  11.       }
  12.       else {
  13.         // Default comparison operator is ==
  14.         $comparison = $logic['comparison'] ? $logic['comparison'] : '==';
  15.         $user_value = '';
  16.         $cap        = $logic['capability'];
  17.         $user_value = $user_capabilities[$cap];
  18.         $test_value = $logic['value'];
  19.         $pass       = FALSE;
  20.  
  21.         switch ($comparison) {  // Trying to avoid using eval()
  22.           case '==':
  23.             if ($user_value == $test_value) {
  24.               $pass = TRUE;
  25.             }
  26.             break;
  27.           case '!=':
  28.             if ($user_value != $test_value) {
  29.               $pass = TRUE;
  30.             }
  31.             break;
  32.           case '>':
  33.             if ($user_value > $test_value) {
  34.               $pass = TRUE;
  35.             }
  36.             break;
  37.           case '<':
  38.             if ($user_value < $test_value) {
  39.               $pass = TRUE;
  40.             }
  41.             break;
  42.           case '>=':
  43.             if ($user_value >= $test_value) {
  44.               $pass = TRUE;
  45.             }
  46.             break;
  47.           case '<=':
  48.             if ($user_value <= $test_value) {
  49.               $pass = TRUE;
  50.             }
  51.             break;
  52.           case 'LIKE':
  53.             if (strpos($user_value, $test_value) !== FALSE) {
  54.               $pass = TRUE;
  55.             }
  56.             break;
  57.           case 'NOT LIKE':
  58.             if (strpos($user_value, $test_value) === FALSE) {
  59.               $pass = TRUE;
  60.             }
  61.             break;
  62.           default:
  63.             if ($user_value == $test_value) {
  64.               $pass = TRUE;
  65.             }
  66.             break;
  67.         }
  68.         // Test: $user_value $comparison $test_value
  69.         // If fail AND operator == AND, return false
  70.         $result = ($pass) ? "PASS" : "FAIL";  
  71.         if ($pass) {
  72.           $group_pass = TRUE;
  73.         }
  74.         else if (!$pass && $operator == 'AND') {
  75.           $group_pass = FALSE;
  76.           break;
  77.         }
  78.       }
  79.     }
  80.     return $group_pass;
  81.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement