Ejemplo n.º 1
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Windows CE;')) {
         return 'generic_ms_mobile';
     }
     return $this->getDeviceIDFromRIS($userAgent, 6);
 }
Ejemplo n.º 2
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Froyo')) {
         return 'generic_android_ver2_2';
     }
     $android_version = self::getAndroidVersion($userAgent);
     $version_string = str_replace('.', '_', $android_version);
     $deviceID = 'generic_android_ver' . $version_string;
     if ($deviceID == 'generic_android_ver2_0') {
         $deviceID = 'generic_android_ver2';
     }
     if ($deviceID == 'generic_android_ver4_0') {
         $deviceID = 'generic_android_ver4';
     }
     if (($android_version < 3.0 || $android_version >= 4.0) && WURFL_Handlers_Utils::checkIfContains($userAgent, 'Safari') && !WURFL_Handlers_Utils::checkIfContains($userAgent, 'Mobile')) {
         // This is probably a tablet (Android 3.x is always a tablet, so it doesn't have a "_tablet" ID)
         if (in_array($deviceID . '_tablet', self::$constantIDs)) {
             return $deviceID . '_tablet';
         }
         return 'generic_android_ver1_5_tablet';
     }
     if (in_array($deviceID, self::$constantIDs)) {
         return $deviceID;
     }
     return 'generic_android';
 }
Ejemplo n.º 3
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Qtek');
 }
Ejemplo n.º 4
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, "Philips") || WURFL_Handlers_Utils::checkIfStartsWith($userAgent, "PHILIPS");
 }
Ejemplo n.º 5
0
 /**
  * If the User Agent contains "MIB/2.2" or "MIB/BER2.2", 
  * return "mot_mib22_generic"
  *
  * @param string $userAgent
  * @return string
  */
 function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, "MIB/2.2") || WURFL_Handlers_Utils::checkIfContains($userAgent, "MIB/BER2.2")) {
         return "mot_mib22_generic";
     }
     return WURFL_Constants::GENERIC;
 }
Ejemplo n.º 6
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Skyfire/2.')) {
         return 'generic_skyfire_version2';
     }
     return 'generic_skyfire_version1';
 }
Ejemplo n.º 7
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('HTC', 'XV6875'));
 }
Ejemplo n.º 8
0
 /**
  * Apply Recovery Match
  *
  * @param string $userAgent
  * @return string
  */
 function applyRecoveryMatch($userAgent)
 {
     if (strpos($userAgent, "BlackBerry") === 0) {
         $position = WURFL_Handlers_Utils::firstSlash($userAgent);
         if ($position > 0 && $position + 4 <= strlen($userAgent)) {
             $version = substr($userAgent, $position + 1, $position + 4);
             if (strpos($version, "2.") === 0) {
                 return "blackberry_generic_ver2";
             }
             if (strpos($version, "3.2") === 0) {
                 return "blackberry_generic_ver3_sub2";
             }
             if (strpos($version, "3.3") === 0) {
                 return "blackberry_generic_ver3_sub30";
             }
             if (strpos($version, "3.5") === 0) {
                 return "blackberry_generic_ver3_sub50";
             }
             if (strpos($version, "3.6") === 0) {
                 return "blackberry_generic_ver3_sub60";
             }
             if (strpos($version, "3.7") === 0) {
                 return "blackberry_generic_ver3_sub70";
             }
             if (strpos($version, "4.") === 0) {
                 return "blackberry_generic_ver4";
             }
         }
     }
 }
Ejemplo n.º 9
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Trident/5.0')) {
         return 'generic_ms_phone_os7_5_desktopmode';
     }
     return 'generic_ms_phone_os7_desktopmode';
 }
Ejemplo n.º 10
0
 public function normalize($userAgent)
 {
     // Normalize Android version
     $userAgent = preg_replace('/(Android)[ \\-\\/](\\d\\.\\d)([^; \\/\\)]+)/', '$1 $2', $userAgent);
     // Opera Mobi/Tablet
     $is_opera_mobi = WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Mobi');
     $is_opera_tablet = WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Tablet');
     if ($is_opera_mobi || $is_opera_tablet) {
         $opera_version = WURFL_Handlers_AndroidHandler::getOperaOnAndroidVersion($userAgent, false);
         $android_version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false);
         if ($opera_version !== null && $android_version !== null) {
             $opera_model = $is_opera_tablet ? 'Opera Tablet' : 'Opera Mobi';
             $prefix = $opera_model . ' ' . $opera_version . ' Android ' . $android_version . WURFL_Constants::RIS_DELIMITER;
             return $prefix . $userAgent;
         }
     }
     // Stock Android
     if (!WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, $this->skip_normalization)) {
         $model = WURFL_Handlers_AndroidHandler::getAndroidModel($userAgent, false);
         $version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false);
         if ($model !== null && $version !== null) {
             $prefix = $version . ' ' . $model . WURFL_Constants::RIS_DELIMITER;
             return $prefix . $userAgent;
         }
     }
     return $userAgent;
 }
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Android') && WURFL_Handlers_Utils::checkIfContains($userAgent, 'NetFrontLifeBrowser/2.2');
 }
Ejemplo n.º 12
0
 /**
  *
  * Apply RIS with FS (First Slash) after Nokia String as a threshold.
  * 
  * 
  * @param string $userAgent
  * @return string
  */
 function lookForMatchingUserAgent($userAgent)
 {
     //$tolerance = WU
     $tolerance = WURFL_Handlers_Utils::indexOfAnyOrLength($userAgent, array("/", " "), strpos($userAgent, "Nokia"));
     $userAgents = array_keys($this->userAgentsWithDeviceID);
     return parent::applyRisWithTollerance($userAgents, $userAgent, $tolerance);
 }
Ejemplo n.º 13
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'MSIE 10.0')) {
         return 'microsoft_xbox360_ver1_subie10';
     }
     return 'microsoft_xbox360_ver1';
 }
 public function applyRecoveryMatch($userAgent)
 {
     $version = self::getWindowsPhoneVersion($userAgent);
     if ($version == "8.1") {
         return 'generic_ms_phone_os8_1';
     }
     if ($version == "8.0") {
         return 'generic_ms_phone_os8';
     }
     if ($version == "7.8") {
         return 'generic_ms_phone_os7_8';
     }
     if ($version == "7.5") {
         return 'generic_ms_phone_os7_5';
     }
     if ($version == "7.0") {
         return 'generic_ms_phone_os7';
     }
     if ($version == "6.5") {
         return 'generic_ms_winmo6_5';
     }
     //These are probably UAs of the type "Windows Phone Ad Client (Xna)/5.1.0.0 BMID/E67970D969"
     if (WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Windows Phone Ad Client') || WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'WindowsPhoneAdClient')) {
         return 'generic_ms_phone_os7';
     }
     return WURFL_Constants::NO_MATCH;
 }
Ejemplo n.º 15
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('kyocera', 'QC-', 'KWC-'));
 }
Ejemplo n.º 16
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('MIB/2.2', 'MIB/BER2.2'))) {
         return "mot_mib22_generic";
     }
     return null;
 }
Ejemplo n.º 17
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Windows CE;')) {
         return 'generic_ms_mobile';
     }
     return WURFL_Constants::NO_MATCH;
 }
Ejemplo n.º 18
0
 public function normalize($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('WPDesktop', 'ZuneWP7')) || WURFL_Handlers_Utils::checkIfContainsAll($userAgent, array('Mozilla/5.0 (Windows NT ', ' ARM;', ' Edge/'))) {
         $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneDesktopModel($userAgent);
         $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneDesktopVersion($userAgent);
     } else {
         if (WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('Windows Phone Ad Client', 'WindowsPhoneAdClient'))) {
             $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneAdClientModel($userAgent);
             $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneVersion($userAgent);
         } else {
             if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NativeHost')) {
                 return $userAgent;
             } else {
                 $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneModel($userAgent);
                 $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneVersion($userAgent);
             }
         }
     }
     if ($model !== null && $version !== null) {
         // "WP" is for Windows Phone
         $prefix = 'WP' . $version . ' ' . $model . WURFL_Constants::RIS_DELIMITER;
         return $prefix . $userAgent;
     }
     return $userAgent;
 }
Ejemplo n.º 19
0
 public function normalize($userAgent)
 {
     $ucb_version = WURFL_Handlers_UcwebU3Handler::getUcBrowserVersion($userAgent);
     if ($ucb_version === null) {
         return $userAgent;
     }
     //Android U3K Mobile + Tablet
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Android')) {
         // Apply Version+Model--- matching normalization
         $model = WURFL_Handlers_AndroidHandler::getAndroidModel($userAgent, false);
         $version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false);
         if ($model !== null && $version !== null) {
             $prefix = "{$version} U3Android {$ucb_version} {$model}" . WURFL_Constants::RIS_DELIMITER;
             return $prefix . $userAgent;
         }
     } else {
         if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'iPhone;')) {
             if (preg_match('/iPhone OS (\\d+)(?:_(\\d+))?(?:_\\d+)* like/', $userAgent, $matches)) {
                 $version = $matches[1] . '.' . $matches[2];
                 $prefix = "{$version} U3iPhone {$ucb_version}" . WURFL_Constants::RIS_DELIMITER;
                 return $prefix . $userAgent;
             }
         } else {
             if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'iPad')) {
                 if (preg_match('/CPU OS (\\d)_?(\\d)?.+like Mac.+; iPad([0-9,]+)\\) AppleWebKit/', $userAgent, $matches)) {
                     $version = $matches[1] . '.' . $matches[2];
                     $model = $matches[3];
                     $prefix = "{$version} U3iPad {$ucb_version} {$model}" . WURFL_Constants::RIS_DELIMITER;
                     return $prefix . $userAgent;
                 }
             }
         }
     }
     return $userAgent;
 }
Ejemplo n.º 20
0
 /**
  * if the UA contains "iPhone" return "apple_iphone_ver1"
  * if the UA contains "iPod" return "apple_ipod_touch_ver1"
  *
  * @param string $userAgent
  * @return string
  */
 function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContains($userAgent, "iPhone")) {
         return "apple_iphone_ver1";
     }
     return "apple_ipod_touch_ver1";
 }
Ejemplo n.º 21
0
 function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfStartsWith($userAgent, "DoCoMo/2")) {
         return "docomo_generic_jap_ver2";
     }
     return "docomo_generic_jap_ver1";
 }
Ejemplo n.º 22
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, "Alcatel") || WURFL_Handlers_Utils::checkIfStartsWith($userAgent, "ALCATEL");
 }
Ejemplo n.º 23
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Mozilla') && WURFL_Handlers_Utils::checkIfContains($userAgent, 'Safari');
 }
Ejemplo n.º 24
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('SLCC1', 'Media Center PC', '.NET CLR', 'OfficeLiveConnector'))) {
         return WURFL_Constants::GENERIC_WEB_BROWSER;
     }
     return WURFL_Constants::NO_MATCH;
 }
Ejemplo n.º 25
0
 public function applyRecoveryMatch($userAgent)
 {
     if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Macintosh', 'Windows'))) {
         return WURFL_Constants::GENERIC_WEB_BROWSER;
     }
     return WURFL_Constants::NO_MATCH;
 }
Ejemplo n.º 26
0
 public function applyConclusiveMatch($userAgent)
 {
     $matches = array();
     if (preg_match('/^Mozilla\\/4\\.0 \\(compatible; MSIE (\\d)\\.(\\d);/', $userAgent, $matches)) {
         if (WURFL_Configuration_ConfigHolder::getWURFLConfig()->isHighPerformance()) {
             return WURFL_Constants::GENERIC_WEB_BROWSER;
         }
         switch ($matches[1]) {
             // cases are intentionally out of sequence for performance
             case 7:
                 return 'msie_7';
                 break;
             case 8:
                 return 'msie_8';
                 break;
             case 9:
                 return 'msie_9';
                 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;
         }
     }
     $tolerance = WURFL_Handlers_Utils::firstSlash($userAgent);
     return $this->getDeviceIDFromRIS($userAgent, $tolerance);
 }
Ejemplo n.º 27
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('Grundig', 'GRUNDIG'));
 }
Ejemplo n.º 28
0
 /**
  * Intercept all UAs Containing Firefox and are not mobile browsers
  *
  * @param string $userAgent
  * @return boolean
  */
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfContains($userAgent, "Konqueror");
 }
Ejemplo n.º 29
0
 public function canHandle($userAgent)
 {
     if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) {
         return false;
     }
     return WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('Sagem', 'SAGEM'));
 }
Ejemplo n.º 30
0
 public function testShouldReturnNegativeOneForInexistantChar()
 {
     $haystack = "Mozilla/4.0 (compatible; MSIE 4.0; Windows 95; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
     $needle = ":";
     $expected = WURFL_Handlers_Utils::ordinalIndexOf($haystack, $needle, 1);
     $this->assertEquals(-1, $expected);
 }