/** * Prepares the list data */ public function prepareVars() { $pathName = \UserAgentInfoPeer::getOther($this->model->{$this->columnName}); $this->vars['name'] = $this->formField->getName(); $this->vars['value'] = 'Browser: ' . $pathName->getBrowserName() . ' ' . $pathName->getBrowserVersionMajor() . ($pathName->getBrowserVersionMinor() ? '.' . $pathName->getBrowserVersionMinor() : '') . ' / OS: ' . $pathName->getOsName(); }
function test_formatTime($time) { return number_format($time * 1000, 1) . ' ms'; } $start_time = microtime(true); require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '../UserAgentInfoPeer.class.php'; $start_time = test_formatTime(microtime(true) - $start_time); $my_time = microtime(true); $my_ua_string = UserAgentInfoPeer::getMy()->getUserAgentString(); $my_time = test_formatTime(microtime(true) - $my_time); $user_agents = explode("\n", trim(file_get_contents(UserAgentInfoConfig::$base_dir . UserAgentInfoConfig::DIR_TESTS . DIRECTORY_SEPARATOR . 'user-agent-examples.txt'))); array_unshift($user_agents, $my_ua_string, 'Random UA 1 (no match): ' . uniqid(null, true), 'Random UA 2 (no match): ' . uniqid(null, true), 'Random UA 3 (no match): ' . uniqid(null, true)); $results = array(); foreach ($user_agents as $i => $one_ua) { $t = microtime(true); $mua = UserAgentInfoPeer::getOther($one_ua, true); $t = test_formatTime(microtime(true) - $t); if ($mua->isMobileAndroid()) { $mobile_info = $mua->isMobileTablet() ? 'Android tablet' : 'Android'; } elseif ($mua->isMobileAppleIos()) { $mobile_info = $mua->isMobileTablet() ? 'iPad' : 'iPhone'; } elseif ($mua->isMobile()) { $mobile_info = $mua->isMobileTablet() ? 'tablet' : 'mobile'; } else { $mobile_info = ''; } $results[md5($mua->getUserAgentString())] = array($i, $t, $mua->isIdentifiedFully() ? '' : ($mua->isIdentified() ? '?' : 'x'), $mua->getUserAgentString(), $mua->renderInfoBrowser(true), $mua->renderInfoOs(true), $mua->renderInfoDevice(), $mua->getMobileGrade() ? 'grade ' . $mua->getMobileGrade() : '', $mua->isBanned() ? 'banned' : '', $mua->isBot() ? $mua->isBotReader() ? 'reader' : 'bot' : '', $mobile_info); } $old_results = call_user_func(array(UserAgentInfoConfig::CACHE_CLASS_NAME, 'get'), 'test-archive-of-user-agents'); call_user_func(array(UserAgentInfoConfig::CACHE_CLASS_NAME, 'set'), 'test-archive-of-user-agents', $results); $old_md5 = md5(serialize($old_results));
/** * Executed once or never. Sets all the information that is required for parsing the user agent string. * * If all the user agents are taken from cache, this method is not called */ protected static function initAfterCache() { if (null !== self::$uaparser) { return; } require_once UserAgentInfoConfig::$base_dir . UserAgentInfoConfig::DIR_IMPORTS . DIRECTORY_SEPARATOR . 'uaparser.php'; self::$browscap_wrapper = new BrowscapWrapper(self::$browscap_source_file); self::$uaparser = new UAParser(self::$uaparser_source_file); self::$md_browsers = array_keys(self::$mobile_detect->getBrowsers()); $md_os_list = self::$mobile_detect->getOperatingSystems(); self::$md_os_list = array_keys($md_os_list); self::$md_devices = array_keys(self::$mobile_detect->getPhoneDevices() + self::$mobile_detect->getTabletDevices()); self::$md_devices_generic = array(); foreach (self::$md_devices as $device) { if (!in_array($device, self::$generic_devices)) { self::$md_devices_generic[] = str_replace(self::MOBILE_DETECT_TABLET_SUFFIX, '', $device); } } self::$md_devices_generic[] = 'Nokia'; self::$md_devices_generic = array_unique(self::$md_devices_generic); }