/** * @param string $id - session id, must be valid hash * @return string */ public static function read($id) { if(!self::isConnected() || !self::isValidId($id)) return ""; $sid = self::getPrefix(); if (!self::$isReadOnly) { $lockTimeout = 55;//TODO: add setting $lockWait = 59000000;//micro seconds = 60 seconds TODO: add setting $waitStep = 100; if (defined('BX_SECURITY_SESSION_MEMCACHE_EXLOCK') && BX_SECURITY_SESSION_MEMCACHE_EXLOCK) $lock = Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage(); else $lock = 1; while(!self::$connection->add($sid.$id.".lock", $lock, 0, $lockTimeout)) { usleep($waitStep); $lockWait -= $waitStep; if($lockWait < 0) { $errorText = 'Unable to get session lock within 60 seconds.'; if ($lock !== 1) { $lockedUri = self::$connection->get($sid.$id.".lock"); if ($lockedUri && $lockedUri != 1) $errorText .= sprintf(' Locked by "%s".', self::$connection->get($sid.$id.".lock")); } CSecuritySession::triggerFatalError($errorText); } if($waitStep < 1000000) $waitStep *= 2; } } self::$sessionId = $id; self::$isSessionReady = true; $res = self::$connection->get($sid.$id); if($res === false) $res = ""; return $res; }
protected function getServiceRequestParamsByType($type) { $a = array('uid' => $_COOKIE['BX_USER_ID'], 'aid' => \Bitrix\Main\Analytics\Counter::getAccountId(), 'count' => $this->arParams['PAGE_ELEMENT_COUNT'] + 10); // random choices if ($type == 'any_similar') { $possible = array('similar_sell', 'similar_view', 'similar'); $type = $possible[array_rand($possible)]; } elseif ($type == 'any_personal') { $possible = array('bestsell', 'personal'); $type = $possible[array_rand($possible)]; } elseif ($type == 'any') { $possible = array('similar_sell', 'similar_view', 'similar', 'bestsell', 'personal'); $type = $possible[array_rand($possible)]; } // configure if ($type == 'bestsell') { $a['op'] = 'sim_domain_items'; $a['type'] = 'order'; $a['domain'] = Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost(); } elseif ($type == 'personal') { $a['op'] = 'recommend'; } elseif ($type == 'similar_sell') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; $a['type'] = 'order'; } elseif ($type == 'similar_view') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; $a['type'] = 'view'; } elseif ($type == 'similar') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; } else { // unkonwn type } // get iblocks $iblocks = array(); if (!empty($this->arParams['IBLOCK_ID'])) { $iblocks = array($this->arParams['IBLOCK_ID']); } else { $iblockList = array(); /* catalog */ $iblockIterator = \Bitrix\Catalog\CatalogIblockTable::getList(array('select' => array('IBLOCK_ID', 'PRODUCT_IBLOCK_ID'))); while ($iblock = $iblockIterator->fetch()) { $iblock['IBLOCK_ID'] = (int) $iblock['IBLOCK_ID']; $iblock['PRODUCT_IBLOCK_ID'] = (int) $iblock['PRODUCT_IBLOCK_ID']; $iblockList[$iblock['IBLOCK_ID']] = $iblock['IBLOCK_ID']; if ($iblock['PRODUCT_IBLOCK_ID'] > 0) { $iblockList[$iblock['PRODUCT_IBLOCK_ID']] = $iblock['PRODUCT_IBLOCK_ID']; } } /* iblock */ $iblockIterator = \Bitrix\Iblock\IblockSiteTable::getList(array('select' => array('IBLOCK_ID'), 'filter' => array('@IBLOCK_ID' => $iblockList, '=SITE_ID' => $this->getSiteId()))); while ($iblock = $iblockIterator->fetch()) { $iblocks[] = $iblock['IBLOCK_ID']; } } $a['ib'] = join('.', $iblocks); return $a; }
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $GLOBALS['APPLICATION']->AddHeadScript("/bitrix/js/main/amcharts/3.3/amcharts.js"); $GLOBALS['APPLICATION']->AddHeadScript("/bitrix/js/main/amcharts/3.3/pie.js"); global $USER; CJSCore::Init(array("fx", "date")); $diskSpace = isset($arResult["diskSpace"]) && strlen($arResult["diskSpace"]) > 0 ? doubleval($arResult["diskSpace"]) : 0; $diskSpace = $diskSpace < 0 ? 0 : $diskSpace; $freeSpace = isset($arResult["quota"]) && strlen($arResult["quota"]) > 0 ? doubleval($arResult["quota"]) : 0; $freeSpace = $freeSpace < 0 ? 0 : $freeSpace; $personalLibIndex = $arResult['personalLibIndex']; $isInstalledPull = $arResult["isInstalledPull"]; $currenUserId = $USER->getId(); $isMac = false; $request = Bitrix\Main\Context::getCurrent()->getRequest(); if (stripos($request->getUserAgent(), "Macintosh") !== false) { $isMac = true; } $diskEnabled = \Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk'); $isFirstRunAfterConvert = $diskEnabled && !\CUserOptions::getOption('disk', 'DesktopDiskInstall') && !\CUserOptions::getOption('disk', 'DesktopDiskReInstall') && \CUserOptions::getOption('webdav', 'DesktopDiskInstall'); IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/file.php"); ?> <script type="text/javascript"> BX.message({ 'disk_name': "<?php echo GetMessageJS('WD_DISK_NAME'); ?> ", 'disk_default': "<?php echo GetMessageJS('WD_DISK_JS_ERROR_DEFAULT');
* @var $USER CUser */ $arResult = array(); $USER_ID = $USER->GetID(); $arResult = array(); $ttl = defined("BX_COMP_MANAGED_CACHE") ? 2592000 : 600; $extEnabled = IsModuleInstalled('extranet'); $cache_id = 'user_mobile_menu_' . $USER_ID . '_' . $extEnabled . '_' . LANGUAGE_ID . '_' . CSite::GetNameFormat(false); $cache_dir = '/bx/user_mobile_menu/user_' . $USER_ID; $obCache = new CPHPCache(); if ($obCache->InitCache($ttl, $cache_id, $cache_dir)) { $arResult = $obCache->GetVars(); } else { global $CACHE_MANAGER; $CACHE_MANAGER->StartTagCache($cache_dir); $host = Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost(); $host = preg_replace("/:(80|443)\$/", "", $host); $arResult["HOST"] = htmlspecialcharsbx($host); $arResult["USER"] = $USER->GetByID($USER_ID)->GetNext(); $arResult["USER_FULL_NAME"] = $arResult["USER"]["FULL_NAME"] = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $USER->GetFirstName(), "LAST_NAME" => $USER->GetLastName(), "SECOND_NAME" => $USER->GetSecondName(), "LOGIN" => $USER->GetLogin())); $arResult["USER"]["AVATAR"] = false; if ($arResult["USER"]["PERSONAL_PHOTO"]) { $imageFile = CFile::GetFileArray($arResult["USER"]["PERSONAL_PHOTO"]); if ($imageFile !== false) { $arResult["USER"]["AVATAR"] = CFile::ResizeImageGet($imageFile, array("width" => 1200, "height" => 1020), BX_RESIZE_IMAGE_EXACT, false, false, false, 50); } } $arSGGroup = array(); $arExtSGGroup = array(); $arExtSGGroupTmp = array(); if (CModule::IncludeModule("socialnetwork")) {
/** * Finds match between requestURL and on of the url templates. * * <p>Lets using the engine object and greedy templates.</p> * @param string $folder404 * @param array[string]string $arUrlTemplates * @param array[string]string &$arVariables * @param string|bool $requestURL * @return string * */ public function guessComponentPath($folder404, $arUrlTemplates, &$arVariables, $requestURL = false) { if (!isset($arVariables) || !is_array($arVariables)) { $arVariables = array(); } if ($requestURL === false) { $requestURL = Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage(); } $folder404 = str_replace("\\", "/", $folder404); if ($folder404 != "/") { $folder404 = "/" . trim($folder404, "/ \t\n\r\v") . "/"; } //SEF base URL must match curent URL (several components on the same page) if (strpos($requestURL, $folder404) !== 0) { return false; } $currentPageUrl = substr($requestURL, strlen($folder404)); $pageCandidates = array(); $arUrlTemplates = $this->sortUrlTemplates($arUrlTemplates, $bHasGreedyPartsInTemplates); if ($bHasGreedyPartsInTemplates && is_callable($this->resolveCallback)) { foreach ($arUrlTemplates as $pageID => $pageTemplate) { $arVariablesTmp = $arVariables; if ($this->__CheckPath4Template($pageTemplate, $currentPageUrl, $arVariablesTmp)) { if ($this->hasNoVariables($pageTemplate)) { $arVariables = $arVariablesTmp; return $pageID; } else { $pageCandidates[$pageID] = $arVariablesTmp; } } } } else { foreach ($arUrlTemplates as $pageID => $pageTemplate) { if ($this->__CheckPath4Template($pageTemplate, $currentPageUrl, $arVariables)) { return $pageID; } } } if (!empty($pageCandidates) && is_callable($this->resolveCallback)) { return call_user_func_array($this->resolveCallback, array($this, $pageCandidates, &$arVariables)); } return false; }
function PrologActions() { /** @global CMain $APPLICATION */ global $APPLICATION, $USER; if (defined("BX_CHECK_SHORT_URI") && BX_CHECK_SHORT_URI) { if ($arUri = CBXShortUri::GetUri(Bitrix\Main\Context::getCurrent()->getRequest()->getDecodedUri())) { CBXShortUri::SetLastUsed($arUri["ID"]); if (CModule::IncludeModule("statistic")) { CStatEvent::AddCurrent("short_uri_redirect", "", "", "", "", $arUri["URI"], "N", SITE_ID); } LocalRedirect($arUri["URI"], true, CBXShortUri::GetHttpStatusCodeText($arUri["STATUS"])); die; } } if (COption::GetOptionString("main", "buffer_content", "Y") == "Y" && (!defined("BX_BUFFER_USED") || BX_BUFFER_USED !== true)) { ob_start(array(&$APPLICATION, "EndBufferContent")); $APPLICATION->buffered = true; define("BX_BUFFER_USED", true); register_shutdown_function(create_function('', 'define("BX_BUFFER_SHUTDOWN", true); while(@ob_end_flush());')); } //session expander if (COption::GetOptionString("main", "session_expand", "Y") != "N" && (!defined("BX_SKIP_SESSION_EXPAND") || BX_SKIP_SESSION_EXPAND === false)) { $arPolicy = $USER->GetSecurityPolicy(); $phpSessTimeout = ini_get("session.gc_maxlifetime"); if ($arPolicy["SESSION_TIMEOUT"] > 0) { $sessTimeout = min($arPolicy["SESSION_TIMEOUT"] * 60, $phpSessTimeout); } else { $sessTimeout = $phpSessTimeout; } $cookie_prefix = COption::GetOptionString('main', 'cookie_name', 'BITRIX_SM'); $salt = $_COOKIE[$cookie_prefix . '_UIDH'] . "|" . $_SERVER["REMOTE_ADDR"] . "|" . @filemtime($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/version.php") . "|" . LICENSE_KEY . "|" . CMain::GetServerUniqID(); $key = md5(bitrix_sessid() . $salt); $bShowMess = $USER->IsAuthorized() && COption::GetOptionString("main", "session_show_message", "Y") != "N"; CUtil::InitJSCore(array('ajax', 'ls')); $jsMsg = '<script type="text/javascript">' . "\n" . ($bShowMess ? 'bxSession.mess.messSessExpired = \'' . CUtil::JSEscape(GetMessage("MAIN_SESS_MESS", array("#TIMEOUT#" => round($sessTimeout / 60)))) . '\';' . "\n" : '') . 'bxSession.Expand(' . $sessTimeout . ', \'' . bitrix_sessid() . '\', ' . ($bShowMess ? 'true' : 'false') . ', \'' . $key . '\');' . "\n" . '</script>'; $APPLICATION->AddHeadScript('/bitrix/js/main/session.js'); $APPLICATION->AddAdditionalJS($jsMsg); $_SESSION["BX_SESSION_COUNTER"] = intval($_SESSION["BX_SESSION_COUNTER"]) + 1; if (!defined("BX_SKIP_SESSION_TERMINATE_TIME")) { $_SESSION["BX_SESSION_TERMINATE_TIME"] = time() + $sessTimeout; } } //user auto time zone via js cookies if (CTimeZone::Enabled() && (!defined("BX_SKIP_TIMEZONE_COOKIE") || BX_SKIP_TIMEZONE_COOKIE === false)) { CTimeZone::SetAutoCookie(); } // check user options set via cookie if ($USER->IsAuthorized()) { $cookieName = COption::GetOptionString("main", "cookie_name", "BITRIX_SM") . "_LAST_SETTINGS"; if (!empty($_COOKIE[$cookieName])) { CUserOptions::SetCookieOptions($cookieName); } } foreach (GetModuleEvents("main", "OnProlog", true) as $arEvent) { ExecuteModuleEventEx($arEvent); } }
public static function CheckUri() { if ($arUri = static::GetUri(Bitrix\Main\Context::getCurrent()->getRequest()->getDecodedUri())) { static::SetLastUsed($arUri["ID"]); if (CModule::IncludeModule("statistic")) { CStatEvent::AddCurrent("short_uri_redirect", "", "", "", "", $arUri["URI"], "N", SITE_ID); } LocalRedirect($arUri["URI"], true, static::GetHttpStatusCodeText($arUri["STATUS"])); return true; } return false; }
use Bitrix\Main\Web\Json; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); global $USER; $answer = array("success" => false, "message" => Loc::getMessage("main_app_passwords_ajax_error")); if (!$USER->IsAuthorized()) { $answer["message"] = Loc::getMessage("main_app_passwords_ajax_error_auth"); echo Json::encode($answer); die; } if (!check_bitrix_sessid()) { $answer["message"] = Loc::getMessage("main_app_passwords_ajax_error_sess"); echo Json::encode($answer); die; } $context = Bitrix\Main\Context::getCurrent(); $request = $context->getRequest(); if ($request->isPost()) { $post = $request->getPostList()->toArray(); $post = Main\Text\Encoding::convertEncodingArray($post, "UTF-8", $context->getCulture()->getCharset()); if ($post["action"] == "delete" && ($id = intval($post["ID"])) > 0) { //deleting the application password if (ApplicationPasswordTable::getRow(array("filter" => array("=ID" => $id, "=USER_ID" => $USER->GetID()))) !== null) { $result = ApplicationPasswordTable::delete($id); if ($result->isSuccess()) { $answer["success"] = true; $answer["message"] = Loc::getMessage("main_app_passwords_ajax_deleted"); } else { $answer["message"] = implode("<br>", $result->getErrorMessages()); } }
<?php use Bitrix\Disk\FocusController; define("STOP_STATISTICS", true); define("PUBLIC_AJAX_MODE", true); define("NO_KEEP_STATISTIC", "Y"); define("NO_AGENT_STATISTIC", "Y"); define("DisableEventsCheck", true); $siteId = isset($_REQUEST['SITE_ID']) && is_string($_REQUEST['SITE_ID']) ? $_REQUEST['SITE_ID'] : ''; $siteId = substr(preg_replace('/[^a-z0-9_]/i', '', $siteId), 0, 2); if (!empty($siteId) && is_string($siteId)) { define('SITE_ID', $siteId); } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; if (!\Bitrix\Main\Loader::includeModule('disk')) { die; } $action = Bitrix\Main\Context::getCurrent()->getRequest()->getQuery('action'); if (!$action) { die; } $docController = new FocusController(); $docController->setActionName($action)->exec();
protected function getServiceRequestParamsByType($type) { $a = array('uid' => $_COOKIE['BX_USER_ID'], 'aid' => \Bitrix\Main\Analytics\Counter::getAccountId(), 'count' => $this->arParams['PAGE_ELEMENT_COUNT'] + 10); // random choices if ($type == 'any_similar') { $possible = array('similar_sell', 'similar_view', 'similar'); $type = $possible[array_rand($possible)]; } elseif ($type == 'any_personal') { $possible = array('bestsell', 'personal'); $type = $possible[array_rand($possible)]; } elseif ($type == 'any') { $possible = array('similar_sell', 'similar_view', 'similar', 'bestsell', 'personal'); $type = $possible[array_rand($possible)]; } // configure if ($type == 'bestsell') { $a['op'] = 'sim_domain_items'; $a['type'] = 'order'; $a['domain'] = Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost(); } elseif ($type == 'personal') { $a['op'] = 'recommend'; } elseif ($type == 'similar_sell') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; $a['type'] = 'order'; } elseif ($type == 'similar_view') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; $a['type'] = 'view'; } elseif ($type == 'similar') { $a['op'] = 'simitems'; $a['eid'] = $this->arParams['ID']; } else { // unkonwn type } return $a; }