/** * @return scalar[] */ function userAgent() { static $engines = ['ie' => LIBSTD_ENV_USER_AGENT_ENGINE_MSIE, 'gecko' => LIBSTD_ENV_USER_AGENT_ENGINE_GECKO, 'webkit' => LIBSTD_ENV_USER_AGENT_ENGINE_WEBKIT]; static $browsers = ['ie' => LIBSTD_ENV_USER_AGENT_BROWSER_MSIE, 'chrome' => LIBSTD_ENV_USER_AGENT_BROWSER_CHROME, 'firefox' => LIBSTD_ENV_USER_AGENT_BROWSER_FIREFOX, 'safari' => LIBSTD_ENV_USER_AGENT_BROWSER_SAFARI]; if (false === libstd_isset('useragent', 'env')) { if (false === function_exists('get_browser')) { $info = false; } else { $info = get_browser(null, true); } $userAgent = []; if (false === $info) { $userAgent = ['engine' => LIBSTD_ENV_USER_AGENT_ENGINE_UNKNOWN, 'engine_version' => 0, 'browser' => LIBSTD_ENV_USER_AGENT_BROWSER_UNKNOWN, 'browser_version' => 0, 'mobile' => false]; } else { if (isset($info['browser'])) { $browserName = strtolower($info['browser']); if (isset($browsers[$browserName])) { $userAgent['browser'] = $browsers[$browserName]; } else { $userAgent['browser'] = LIBSTD_ENV_USER_AGENT_BROWSER_UNKNOWN; } } else { $userAgent['browser'] = LIBSTD_ENV_USER_AGENT_BROWSER_UNKNOWN; } if (isset($info['renderingengine_name'])) { $engineName = strtolower($info['renderingengine_name']); if (isset($engines[$engineName])) { $userAgent['engine'] = $engines[$engineName]; } else { $userAgent['engine'] = LIBSTD_ENV_USER_AGENT_ENGINE_UNKNOWN; } } else { $userAgent['engine'] = LIBSTD_ENV_USER_AGENT_ENGINE_UNKNOWN; } if (isset($info['majorver'])) { $userAgent['browser_version'] = (int) $info['majorver']; } else { $userAgent['browser_version'] = 0; } if (isset($info['renderingengine_version'])) { $userAgent['engine_version'] = (int) $info['renderingengine_version']; } else { $userAgent['engine_version'] = 0; } $userAgent['mobile'] = isset($info['ismobiledevice']) && (bool) $info['ismobiledevice']; } libstd_set('useragent', $userAgent); return $userAgent; } return libstd_get('useragent', 'env'); }
<?php namespace js; /** * LIBSTD * * @package net.evalcode.libstd.php * @subpackage js * * @author evalcode.net */ // PROPERTIES libstd_set('libstd', 'runtime/js/libstd.js', 'js'); //-------------------------------------------------------------------------- // ACCESSORS /** * @param string $string_ * * @return string */ function escape($string_) { static $match = ["/\\\\/", "/\n/", "/\r/", "/\"/", "/\\'/", "/&/", "/</", "/>/"]; static $replace = ["\\\\\\\\", "\\n", "\\r", "\\\"", "\\'", "\\x26", "\\x3C", "\\x3E"]; return str_replace($match, $replace, $string_); } // libstd.js API /** * @return string */