예제 #1
0
 public function applyConclusiveMatch($ua)
 {
     $matches = array();
     if (preg_match('/^Mozilla\\/4\\.0 \\(compatible; MSIE (\\d)\\.(\\d);/', $ua, $matches)) {
         if (TeraWurflConfig::$SIMPLE_DESKTOP_ENGINE_ENABLE) {
             return WurflConstants::$GENERIC_WEB_BROWSER;
         }
         switch ($matches[1]) {
             // cases are intentionally out of sequnce for performance
             case 7:
                 return 'msie_7';
                 break;
             case 8:
                 return 'msie_8';
                 break;
             case 6:
                 return 'msie_6';
                 break;
             case 4:
                 return 'msie_4';
                 break;
             case 5:
                 return $matches[2] == 5 ? 'msie_5_5' : 'msie_5';
                 break;
             default:
                 return 'msie';
                 break;
         }
     }
     $ua = preg_replace('/( \\.NET CLR [\\d\\.]+;?| Media Center PC [\\d\\.]+;?| OfficeLive[a-zA-Z0-9\\.\\d]+;?| InfoPath[\\.\\d]+;?)/', '', $ua);
     $tolerance = UserAgentUtils::firstSlash($ua);
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     return $this->risMatch($ua, $tolerance);
 }
예제 #2
0
 public function applyConclusiveMatch($ua)
 {
     $clean_ua = $ua;
     if (self::contains($ua, "/SN") && !self::contains($ua, "XXXXXXXXXXXX")) {
         //not using RegEx for the time being
         $start_idx = strpos($ua, "/SN") + 3;
         $sub_str = substr($ua, $start_idx);
         $end_idx = strpos($sub_str, " ");
         if ($end_idx !== false && $sub_str != "" && strlen($sub_str) > $end_idx) {
             $num_digits = strlen($sub_str) - $end_idx;
             $new_ua = substr($ua, 0, $start_idx);
             for ($i = 0; $i < $end_idx; $i++) {
                 $new_ua .= "X";
             }
             $new_ua .= substr($ua, $end_idx);
             $clean_ua = $new_ua;
         }
     }
     $tolerance = UserAgentUtils::firstSlash($clean_ua);
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     $match = $this->risMatch($clean_ua, $tolerance);
     if ($match == WurflConstants::$GENERIC) {
         $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: LD", LOG_INFO);
         return $this->ldMatch($ua);
     }
     return $match;
 }
 public function applyConclusiveMatch($ua)
 {
     if (self::startsWith($ua, "BlackBerry;")) {
         $tolerance = UserAgentUtils::ordinalIndexOf($ua, ';', 3);
     } else {
         $tolerance = UserAgentUtils::firstSlash($ua);
     }
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold  {$tolerance}", LOG_INFO);
     return $this->risMatch($ua, $tolerance);
 }
 public function applyConclusiveMatch($ua)
 {
     if (self::startsWith($ua, 'KDDI/')) {
         $tolerance = UserAgentUtils::secondSlash($ua);
     } else {
         $tolerance = UserAgentUtils::firstSlash($ua);
     }
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     return $this->risMatch($ua, $tolerance);
 }
예제 #5
0
 public function applyConclusiveMatch($ua)
 {
     if (self::contains($ua, "MobilePhone")) {
         $tolerance = UserAgentUtils::indexOfOrLength($ua, '/', strpos($ua, "MobilePhone"));
     } else {
         $tolerance = UserAgentUtils::firstSlash($ua);
     }
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     return $this->risMatch($ua, $tolerance);
 }
 public function applyConclusiveMatch($ua)
 {
     // firstSlash() - 1 because some UAs have revisions that aren't getting detected properly:
     // SonyEricssonW995a/R1FA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.4.3
     $tolerance = UserAgentUtils::firstSlash($ua) - 1;
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     if (self::startsWith($ua, "SonyEricsson")) {
         return $this->risMatch($ua, $tolerance);
     }
     $tolerance = UserAgentUtils::secondSlash($ua);
     return $this->risMatch($ua, $tolerance);
 }
 public function applyConclusiveMatch($ua)
 {
     if (self::startsWith($ua, array("SAMSUNG-", "SEC-", "SCH"))) {
         $tolerance = UserAgentUtils::firstSlash($ua);
         $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold (first slash) {$tolerance}", LOG_INFO);
     } elseif (self::startsWith($ua, "Samsung") || self::startsWith($ua, "SPH") || self::startsWith($ua, "SGH")) {
         $tolerance = UserAgentUtils::firstSpace($ua);
         $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold (first space) {$tolerance}", LOG_INFO);
     } else {
         $tolerance = UserAgentUtils::secondSlash($ua);
         $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold (second slash) {$tolerance}", LOG_INFO);
     }
     return $this->risMatch($ua, $tolerance);
 }
예제 #8
0
 public function applyConclusiveMatch($ua)
 {
     $this->match_type = "conclusive";
     $tolerance = UserAgentUtils::firstSlash($ua);
     if (self::startsWith($ua, "Mozilla")) {
         $tolerance = 5;
         $this->wurfl->toLog("Applying CatchAll Conclusive Match: LD {$tolerance}, UA:\n{$ua}", LOG_INFO);
         $deviceID = $this->ldMatch($ua, $tolerance);
         if ($deviceID != WurflConstants::$GENERIC) {
             $this->match = true;
         }
         return $deviceID;
     }
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     $deviceID = $this->risMatch($ua, $tolerance);
     if ($deviceID != WurflConstants::$GENERIC) {
         $this->match = true;
     }
     return $deviceID;
 }
 public function recoveryMatch($ua)
 {
     // BlackBerry
     $ua = preg_replace('/^BlackBerry (\\d+.*)$/', 'BlackBerry$1', $ua);
     $this->wurfl->toLog("Applying " . get_class($this) . " recovery match ({$ua})", LOG_INFO);
     if (self::startsWith($ua, "BlackBerry")) {
         $position = UserAgentUtils::firstSlash($ua);
         if ($position !== false && $position + 4 <= strlen($ua)) {
             $version = substr($ua, $position + 1, $position + 4);
             $this->wurfl->toLog("BlackBerry version substring is {$version}", LOG_INFO);
             if (self::startsWith($version, "2.")) {
                 return "blackberry_generic_ver2";
             }
             if (self::startsWith($version, "3.2")) {
                 return "blackberry_generic_ver3_sub2";
             }
             if (self::startsWith($version, "3.3")) {
                 return "blackberry_generic_ver3_sub30";
             }
             if (self::startsWith($version, "3.5")) {
                 return "blackberry_generic_ver3_sub50";
             }
             if (self::startsWith($version, "3.6")) {
                 return "blackberry_generic_ver3_sub60";
             }
             if (self::startsWith($version, "3.7")) {
                 return "blackberry_generic_ver3_sub70";
             }
             if (self::startsWith($version, "4.")) {
                 return "blackberry_generic_ver4";
             }
             $this->wurfl->toLog("No version matched, User-Agent: {$ua} version: {$version}", LOG_INFO);
         }
     }
     return WurflConstants::$GENERIC;
 }
 public function applyConclusiveMatch($ua)
 {
     $tolerance = UserAgentUtils::firstSlash($ua);
     $this->wurfl->toLog("Applying " . get_class($this) . " Conclusive Match: RIS with threshold {$tolerance}", LOG_INFO);
     return $this->risMatch($ua, $tolerance);
 }