- Модуль: mobileapp
- Путь к файлу: ~/bitrix/modules/mobileapp/lib/mobile.php
- Класс: BitrixMobileAppMobile
- Вызов: Mobile::__construct
private function __construct()
{
global $APPLICATION;
$this->setDeviceWidth($_COOKIE["MOBILE_RESOLUTION_WIDTH"] ?? null);
$this->setDeviceHeight($_COOKIE["MOBILE_RESOLUTION_HEIGHT"] ?? null);
$this->setPixelratio($_COOKIE["MOBILE_SCALE"] ?? null);
$this->screenCategory = $_COOKIE["MOBILE_SCREEN_CATEGORY"] ?? null;
if (!empty($_COOKIE["PG_VERSION"]))
{
self::$pgVersion = $_COOKIE["PG_VERSION"];
}
self::$isDev = (isset($_COOKIE["MOBILE_DEV"]) && $_COOKIE["MOBILE_DEV"] == "Y");
$this->device = $_COOKIE["MOBILE_DEVICE"] ?? null;
if (!empty($_COOKIE["IS_WEBRTC_SUPPORTED"]) && $_COOKIE["IS_WEBRTC_SUPPORTED"] == "Y")
{
$this->setWebRtcSupport(true);
}
if (!empty($_COOKIE["IS_BXSCRIPT_SUPPORTED"]) && $_COOKIE["IS_BXSCRIPT_SUPPORTED"] == "Y")
{
$this->setBXScriptSupported(true);
}
if ($this->getDevice() == "iPad")
{
$this->setScreenCategory("LARGE");
if (intval($this->getPixelRatio()) == 2) //retina hack
{
$this->setDeviceWidth($_COOKIE["MOBILE_RESOLUTION_WIDTH"] / 2);
$this->setDeviceHeight($_COOKIE["MOBILE_RESOLUTION_HEIGHT"] / 2);
}
}
//detecting OS
if (array_key_exists("MOBILE_DEVICE", $_COOKIE))
{
$deviceDetectSource = $_COOKIE["MOBILE_DEVICE"];
}
else
{
$deviceDetectSource = mb_strtolower(Context::getCurrent()->getServer()->get("HTTP_USER_AGENT"));
}
if (mb_strrpos(ToUpper($deviceDetectSource), "IPHONE") > 0 || mb_strrpos(ToUpper($deviceDetectSource), "IPAD") > 0)
{
self::$platform = "ios";
}
elseif (mb_strrpos(ToUpper($deviceDetectSource), "ANDROID") > 0 || mb_strrpos(ToUpper($deviceDetectSource), "ANDROID") === 0)
{
self::$platform = "android";
}
$userAgent = BitrixMainContext::getCurrent()->getServer()->get("HTTP_USER_AGENT");
if (!empty($_COOKIE["MOBILE_SYSTEM_VERSION"]))
{
self::$systemVersion = $_COOKIE["MOBILE_SYSTEM_VERSION"];
}
else
{
//iOS
preg_match("/iOSs(d+.d+)/i",$userAgent, $pregMatch);
if(count($pregMatch) == 2)
self::$systemVersion = floatval($pregMatch[1]);
}
if (array_key_exists("emulate_platform", $_REQUEST))
{
self::$platform = $_REQUEST["emulate_platform"];
}
if ($mobileTZ = $APPLICATION->get_cookie("TZ", "MOBILE")) {
$tz = $APPLICATION->get_cookie("TZ");
if ($tz != $mobileTZ) {
$cookie = new BitrixMainWebCookie("TZ", $mobileTZ, time() + 60 * 60 * 24 * 30 * 12);
BitrixMainContext::getCurrent()->getResponse()->addCookie($cookie);
}
}
if (array_key_exists("MOBILE_API_VERSION", $_COOKIE))
{
self::$apiVersion = $_COOKIE["MOBILE_API_VERSION"];
}
elseif ($APPLICATION->get_cookie("MOBILE_APP_VERSION"))
{
self::$apiVersion = $APPLICATION->get_cookie("MOBILE_APP_VERSION");
}
elseif (array_key_exists("api_version", $_REQUEST))
{
self::$apiVersion = $_REQUEST["api_version"];
}
else
{
preg_match("/(?<=BitrixMobile/Version=).*d/i",$userAgent, $pregMatch);
if(count($pregMatch) == 1)
{
self::$apiVersion = $pregMatch[0];
}
}
self::$apiVersion = intval(self::$apiVersion);
}