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); }
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); }
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); }
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); }