예제 #1
0
 private function GetRealParameterValue($objectName, $fieldName, &$result)
 {
     $return = false;
     if ($objectName == "Document") {
         $rootActivity = $this->GetRootActivity();
         $documentId = $rootActivity->GetDocumentId();
         $documentService = $this->workflow->GetService("DocumentService");
         $document = $documentService->GetDocument($documentId);
         if (array_key_exists($fieldName, $document)) {
             $result = $document[$fieldName];
             if (is_array($result) && strtoupper(substr($fieldName, -strlen('_PRINTABLE'))) == '_PRINTABLE') {
                 $result = implode(", ", $result);
             }
             $return = true;
         } else {
             $result = '';
             $return = true;
         }
     } elseif ($objectName == "Template") {
         $rootActivity = $this->GetRootActivity();
         if (substr($fieldName, -strlen("_printable")) == "_printable") {
             $fieldNameTmp = substr($fieldName, 0, strlen($fieldName) - strlen("_printable"));
             $result = $rootActivity->{$fieldNameTmp};
             $rootActivity = $this->GetRootActivity();
             $documentId = $rootActivity->GetDocumentId();
             $documentService = $this->workflow->GetService("DocumentService");
             $result = $documentService->GetFieldValuePrintable($documentId, $fieldNameTmp, $rootActivity->arPropertiesTypes[$fieldNameTmp]["Type"], $result, $rootActivity->arPropertiesTypes[$fieldNameTmp]);
             if (is_array($result)) {
                 $result = implode(", ", $result);
             }
         } else {
             $result = $rootActivity->{$fieldName};
         }
         $return = true;
     } elseif ($objectName == "Variable" || $objectName == 'Constant') {
         $rootActivity = $this->GetRootActivity();
         if (substr($fieldName, -strlen("_printable")) == "_printable") {
             $fieldNameTmp = substr($fieldName, 0, strlen($fieldName) - strlen("_printable"));
             $result = $objectName == "Variable" ? $rootActivity->GetVariable($fieldNameTmp) : $rootActivity->GetConstant($fieldNameTmp);
             $fieldType = $objectName == "Variable" ? $rootActivity->arVariablesTypes[$fieldNameTmp] : $rootActivity->GetConstantType($fieldNameTmp);
             $rootActivity = $this->GetRootActivity();
             $documentId = $rootActivity->GetDocumentId();
             $documentService = $this->workflow->GetService("DocumentService");
             $result = $documentService->GetFieldValuePrintable($documentId, $fieldNameTmp, $fieldType["Type"], $result, $fieldType);
             if (is_array($result)) {
                 $result = implode(", ", $result);
             }
         } else {
             $result = $objectName == "Variable" ? $rootActivity->GetVariable($fieldName) : $rootActivity->GetConstant($fieldName);
         }
         $return = true;
     } elseif ($objectName == "Workflow") {
         $result = $this->GetWorkflowInstanceId();
         $return = true;
     } elseif ($objectName == "User") {
         $result = 0;
         if ($GLOBALS["USER"]->IsAuthorized()) {
             $result = "user_" . $GLOBALS["USER"]->GetID();
         }
         $return = true;
     } elseif ($objectName == "System") {
         global $DB;
         $result = null;
         if ($fieldName == "Now") {
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")));
         } elseif ($fieldName == "NowLocal") {
             $result = time();
             if (CTimeZone::Enabled()) {
                 $result += CTimeZone::GetOffset();
             }
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), $result);
         } elseif ($fieldName == "Date") {
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")));
         }
         if ($result !== null) {
             $return = true;
         }
     } elseif ($objectName) {
         $activity = $this->workflow->GetActivityByName($objectName);
         if ($activity) {
             // _printable is not supported because mapping between activity property types
             // and document property types is not supported
             $result = $activity->{$fieldName};
             $return = true;
         }
     }
     return $return;
 }
예제 #2
0
{
	$arResult["USER_PROPERTIES"]["SHOW"] = "Y";
	$arResult["bVarsFromForm"] = (count($arResult['ERRORS']) <= 0) ? false : true;
}
// ******************** /User properties ***************************************************

// initialize captcha
if ($arResult["USE_CAPTCHA"] == "Y")
	$arResult["CAPTCHA_CODE"] = htmlspecialcharsbx($APPLICATION->CaptchaGetCode());

// set title
if ($arParams["SET_TITLE"] == "Y") 
	$APPLICATION->SetTitle(GetMessage("REGISTER_DEFAULT_TITLE"));

//time zones
$arResult["TIME_ZONE_ENABLED"] = CTimeZone::Enabled();
if($arResult["TIME_ZONE_ENABLED"])
	$arResult["TIME_ZONE_LIST"] = CTimeZone::GetZones();

$arResult["SECURE_AUTH"] = false;
if(!CMain::IsHTTPS() && COption::GetOptionString('main', 'use_encrypted_auth', 'N') == 'Y')
{
	$sec = new CRsaSecurity();
	if(($arKeys = $sec->LoadKeys()))
	{
		$sec->SetKeys($arKeys);
		$sec->AddToForm('regform', array('REGISTER[PASSWORD]', 'REGISTER[CONFIRM_PASSWORD]'));
		$arResult["SECURE_AUTH"] = true;
	}
}
 /**
  * @return string
  */
 public static function getDatetimeExpressionTemplate()
 {
     if (self::$datetimeTemplate === null) {
         $helper = Application::getConnection()->getSqlHelper();
         $format = Context::getCurrent()->getCulture()->getDateTimeFormat();
         $datetimeFieldName = '#FIELD#';
         $datetimeField = $datetimeFieldName;
         if (\CTimeZone::Enabled()) {
             $diff = \CTimeZone::GetOffset();
             if ($diff != 0) {
                 $datetimeField = $helper->addSecondsToDateTime($diff, $datetimeField);
             }
             unset($diff);
         }
         self::$datetimeTemplate = str_replace(array('%', $datetimeFieldName), array('%%', '%1$s'), $helper->formatDate($format, $datetimeField));
         unset($datetimeField, $datetimeFieldName, $format, $helper);
     }
     return self::$datetimeTemplate;
 }
예제 #4
0
 function PrologActions()
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION, $USER;
     if (defined("BX_CHECK_SHORT_URI") && BX_CHECK_SHORT_URI) {
         if ($arUri = CBXShortUri::GetUri($_SERVER["REQUEST_URI"])) {
             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;
         }
     }
     //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";
         $ext = array('ajax');
         if ($bShowMess) {
             $ext[] = "fx";
         }
         CUtil::InitJSCore($ext);
         $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>';
         if ($APPLICATION->IsJSOptimized()) {
             $APPLICATION->AddHeadScript('/bitrix/js/main/session.js');
             $APPLICATION->AddAdditionalJS($jsMsg);
         } else {
             $APPLICATION->AddHeadString('<script type="text/javascript" src="' . CUtil::GetAdditionalFileURL('/bitrix/js/main/session.js') . '"></script>' . "\n" . $jsMsg, true);
         }
         $_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()) {
         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);
         }
     }
     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('', 'while(@ob_end_flush());'));
     }
     foreach (GetModuleEvents("main", "OnProlog", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent);
     }
 }
예제 #5
0
 public static function GetOffset($userId = false)
 {
     $offset = 0;
     if ($userId > 0) {
         if (!isset(self::$arTimezoneOffsets[$userId])) {
             if (!CTimeZone::Enabled()) {
                 CTimeZone::Enable();
                 $offset = CTimeZone::GetOffset($userId);
                 CTimeZone::Disable();
             } else {
                 $offset = CTimeZone::GetOffset($userId);
             }
             self::$arTimezoneOffsets[$userId] = $offset;
         } else {
             $offset = self::$arTimezoneOffsets[$userId];
         }
     } else {
         if (!isset(self::$offset)) {
             if (!CTimeZone::Enabled()) {
                 CTimeZone::Enable();
                 $offset = CTimeZone::GetOffset();
                 CTimeZone::Disable();
             } else {
                 $offset = CTimeZone::GetOffset();
             }
             self::$offset = $offset;
         } else {
             $offset = self::$offset;
         }
     }
     return $offset;
 }
예제 #6
0
파일: datetime.php 프로젝트: ASDAFF/open_bx
 /**
  * Creates DateTime object from local user time using global timezone settings and default culture
  *
  * @param string $timeString
  * @return DateTime
  */
 public static function createFromUserTime($timeString)
 {
     /** @var DateTime $time */
     try {
         //try full datetime format
         $time = new static($timeString);
     } catch (Main\ObjectException $e) {
         //try short date format
         $time = new static($timeString, Date::getFormat());
         $time->setTime(0, 0, 0);
     }
     if (\CTimeZone::Enabled()) {
         static $diff = null;
         if ($diff === null) {
             $diff = \CTimeZone::GetOffset();
         }
         if ($diff != 0) {
             $time->add(($diff > 0 ? "-" : "") . "PT" . abs($diff) . "S");
         }
     }
     return $time;
 }
예제 #7
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$arFormFields = array("NAME" => 1, "SECOND_NAME" => 1, "LAST_NAME" => 1, "AUTO_TIME_ZONE" => 1, "PERSONAL_PROFESSION" => 1, "PERSONAL_WWW" => 1, "PERSONAL_ICQ" => 1, "PERSONAL_GENDER" => 1, "PERSONAL_BIRTHDAY" => 1, "PERSONAL_PHOTO" => 1, "PERSONAL_PHONE" => 1, "PERSONAL_FAX" => 1, "PERSONAL_MOBILE" => 1, "PERSONAL_PAGER" => 1, "PERSONAL_STREET" => 1, "PERSONAL_MAILBOX" => 1, "PERSONAL_CITY" => 1, "PERSONAL_STATE" => 1, "PERSONAL_ZIP" => 1, "PERSONAL_COUNTRY" => 1, "PERSONAL_NOTES" => 1, "WORK_COMPANY" => 1, "WORK_DEPARTMENT" => 1, "WORK_POSITION" => 1, "WORK_WWW" => 1, "WORK_PHONE" => 1, "WORK_FAX" => 1, "WORK_PAGER" => 1, "WORK_STREET" => 1, "WORK_MAILBOX" => 1, "WORK_CITY" => 1, "WORK_STATE" => 1, "WORK_ZIP" => 1, "WORK_COUNTRY" => 1, "WORK_PROFILE" => 1, "WORK_LOGO" => 1, "WORK_NOTES" => 1);
if (!CTimeZone::Enabled()) {
    unset($arFormFields["AUTO_TIME_ZONE"]);
}
$arUserFields = array();
foreach ($arFormFields as $value => $dummy) {
    $arUserFields[$value] = "[" . $value . "] " . GetMessage("REGISTER_FIELD_" . $value);
}
$arRes = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", 0, LANGUAGE_ID);
$userProp = array();
if (!empty($arRes)) {
    foreach ($arRes as $key => $val) {
        $userProp[$val["FIELD_NAME"]] = strLen($val["EDIT_FORM_LABEL"]) > 0 ? $val["EDIT_FORM_LABEL"] : $val["FIELD_NAME"];
    }
}
$arComponentParameters = array("PARAMETERS" => array("SHOW_FIELDS" => array("NAME" => GetMessage("REGISTER_SHOW_FIELDS"), "TYPE" => "LIST", "MULTIPLE" => "Y", "ADDITIONAL_VALUES" => "N", "VALUES" => $arUserFields, "PARENT" => "BASE"), "REQUIRED_FIELDS" => array("NAME" => GetMessage("REGISTER_REQUIRED_FIELDS"), "TYPE" => "LIST", "MULTIPLE" => "Y", "ADDITIONAL_VALUES" => "N", "VALUES" => $arUserFields, "PARENT" => "BASE"), "AUTH" => array("NAME" => GetMessage("REGISTER_AUTOMATED_AUTH"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", "PARENT" => "ADDITIONAL_SETTINGS"), "USE_BACKURL" => array("NAME" => GetMessage("REGISTER_USE_BACKURL"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", "PARENT" => "ADDITIONAL_SETTINGS"), "SUCCESS_PAGE" => array("NAME" => GetMessage("REGISTER_SUCCESS_PAGE"), "TYPE" => "STRING", "DEFAULT" => "", "PARENT" => "ADDITIONAL_SETTINGS"), "SET_TITLE" => array(), "USER_PROPERTY" => array("PARENT" => "ADDITIONAL_SETTINGS", "NAME" => GetMessage("USER_PROPERTY"), "TYPE" => "LIST", "VALUES" => $userProp, "MULTIPLE" => "Y", "DEFAULT" => array())));
예제 #8
0
 private function GetRealParameterValue($objectName, $fieldName, &$result, array $modifiers = null)
 {
     $return = true;
     $property = null;
     if ($objectName == "Document") {
         $rootActivity = $this->GetRootActivity();
         $documentId = $rootActivity->GetDocumentId();
         /** @var CBPDocumentService $documentService */
         $documentService = $this->workflow->GetService("DocumentService");
         $document = $documentService->GetDocument($documentId);
         $result = '';
         if (isset($document[$fieldName])) {
             $result = $document[$fieldName];
             if (is_array($result) && strtoupper(substr($fieldName, -strlen('_PRINTABLE'))) == '_PRINTABLE') {
                 $result = implode(", ", $result);
             }
             if (!empty($modifiers)) {
                 $documentType = $this->GetDocumentType();
                 $fields = $documentService->GetDocumentFields($documentType);
                 $property = isset($fields[$fieldName]) ? $fields[$fieldName] : null;
             }
         }
     } elseif ($objectName == 'Template' || $objectName == 'Variable' || $objectName == 'Constant') {
         $rootActivity = $this->GetRootActivity();
         if (substr($fieldName, -strlen("_printable")) == "_printable") {
             $fieldName = substr($fieldName, 0, strlen($fieldName) - strlen("_printable"));
             $modifiers = array('printable');
         }
         switch ($objectName) {
             case 'Variable':
                 $result = $rootActivity->GetVariable($fieldName);
                 $property = $rootActivity->arVariablesTypes[$fieldName];
                 break;
             case 'Constant':
                 $result = $rootActivity->GetConstant($fieldName);
                 $property = $rootActivity->GetConstantType($fieldName);
                 break;
             default:
                 $result = $rootActivity->{$fieldName};
                 $property = $rootActivity->arPropertiesTypes[$fieldName];
         }
     } elseif ($objectName == "Workflow") {
         $result = $this->GetWorkflowInstanceId();
         $property = array('Type' => 'string');
     } elseif ($objectName == "User") {
         $result = 0;
         if (isset($GLOBALS["USER"]) && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->isAuthorized()) {
             $result = "user_" . $GLOBALS["USER"]->GetID();
         }
         $property = array('Type' => 'user');
     } elseif ($objectName == "System") {
         global $DB;
         $result = null;
         $property = array('Type' => 'datetime');
         if ($fieldName == "Now") {
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")));
         } elseif ($fieldName == "NowLocal") {
             $result = time();
             if (CTimeZone::Enabled()) {
                 $result += CTimeZone::GetOffset();
             }
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), $result);
         } elseif ($fieldName == "Date") {
             $result = date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")));
             $property = array('Type' => 'date');
         }
         if ($result === null) {
             $return = false;
         }
     } elseif ($objectName) {
         $activity = $this->workflow->GetActivityByName($objectName);
         if ($activity) {
             $result = $activity->{$fieldName};
             //if mapping is set, we can apply modifiers (type converting & formating like `printable`, `bool` etc.)
             if (isset($activity->arPropertiesTypes[$fieldName])) {
                 $property = $activity->arPropertiesTypes[$fieldName];
             }
         } else {
             $return = false;
         }
     } else {
         $return = false;
     }
     if ($return) {
         $result = $this->applyPropertyValueModifiers($fieldName, $property, $result, $modifiers);
     }
     return $return;
 }
예제 #9
0
파일: user.php 프로젝트: Satariall/izurit
 /**
  * Performs the user authorization:
  *    fills session parameters;
  *    remembers auth;
  *    spreads auth through sites
  */
 function Authorize($id, $bSave = false, $bUpdate = true, $applicationId = null)
 {
     /** @global CMain $APPLICATION */
     global $DB, $APPLICATION;
     unset($_SESSION["SESS_OPERATIONS"]);
     unset($_SESSION["MODULE_PERMISSIONS"]);
     $_SESSION["BX_LOGIN_NEED_CAPTCHA"] = false;
     $strSql = "SELECT U.* " . "FROM b_user U  " . "WHERE U.ID='" . intval($id) . "' ";
     $result = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
     if ($arUser = $result->Fetch()) {
         $this->justAuthorized = true;
         $_SESSION["SESS_AUTH"]["AUTHORIZED"] = "Y";
         $_SESSION["SESS_AUTH"]["USER_ID"] = $arUser["ID"];
         $_SESSION["SESS_AUTH"]["LOGIN"] = $arUser["LOGIN"];
         $_SESSION["SESS_AUTH"]["LOGIN_COOKIES"] = $arUser["LOGIN"];
         $_SESSION["SESS_AUTH"]["EMAIL"] = $arUser["EMAIL"];
         $_SESSION["SESS_AUTH"]["PASSWORD_HASH"] = $arUser["PASSWORD"];
         $_SESSION["SESS_AUTH"]["TITLE"] = $arUser["TITLE"];
         $_SESSION["SESS_AUTH"]["NAME"] = $arUser["NAME"] . ($arUser["NAME"] == '' || $arUser["LAST_NAME"] == '' ? "" : " ") . $arUser["LAST_NAME"];
         $_SESSION["SESS_AUTH"]["FIRST_NAME"] = $arUser["NAME"];
         $_SESSION["SESS_AUTH"]["SECOND_NAME"] = $arUser["SECOND_NAME"];
         $_SESSION["SESS_AUTH"]["LAST_NAME"] = $arUser["LAST_NAME"];
         $_SESSION["SESS_AUTH"]["PERSONAL_PHOTO"] = $arUser["PERSONAL_PHOTO"];
         $_SESSION["SESS_AUTH"]["PERSONAL_GENDER"] = $arUser["PERSONAL_GENDER"];
         $_SESSION["SESS_AUTH"]["ADMIN"] = false;
         $_SESSION["SESS_AUTH"]["CONTROLLER_ADMIN"] = false;
         $_SESSION["SESS_AUTH"]["POLICY"] = CUser::GetGroupPolicy($arUser["ID"]);
         $_SESSION["SESS_AUTH"]["AUTO_TIME_ZONE"] = trim($arUser["AUTO_TIME_ZONE"]);
         $_SESSION["SESS_AUTH"]["TIME_ZONE"] = $arUser["TIME_ZONE"];
         $_SESSION["SESS_AUTH"]["APPLICATION_ID"] = $applicationId;
         $_SESSION["SESS_AUTH"]["BX_USER_ID"] = $arUser["BX_USER_ID"];
         // groups
         $_SESSION["SESS_AUTH"]["GROUPS"] = Main\UserTable::getUserGroupIds($arUser["ID"]);
         foreach ($_SESSION["SESS_AUTH"]["GROUPS"] as $groupId) {
             if ($groupId == 1) {
                 $_SESSION["SESS_AUTH"]["ADMIN"] = true;
                 break;
             }
         }
         //sometimes we don't need to update db (REST)
         if ($bUpdate) {
             $tz = '';
             if (CTimeZone::Enabled()) {
                 if (!CTimeZone::IsAutoTimeZone(trim($arUser["AUTO_TIME_ZONE"])) || CTimeZone::GetCookieValue() !== null) {
                     $tz = ', TIME_ZONE_OFFSET = ' . CTimeZone::GetOffset();
                 }
             }
             $bxUid = '';
             if (!empty($_COOKIE['BX_USER_ID']) && preg_match('/^[0-9a-f]{32}$/', $_COOKIE['BX_USER_ID'])) {
                 if ($_COOKIE['BX_USER_ID'] != $arUser['BX_USER_ID']) {
                     // save new bxuid value
                     $bxUid = ", BX_USER_ID = '" . $_COOKIE['BX_USER_ID'] . "'";
                     $arUser['BX_USER_ID'] = $_COOKIE['BX_USER_ID'];
                     $_SESSION["SESS_AUTH"]["BX_USER_ID"] = $_COOKIE['BX_USER_ID'];
                 }
             }
             $DB->Query("\n\t\t\t\t\tUPDATE b_user SET\n\t\t\t\t\t\tSTORED_HASH = NULL,\n\t\t\t\t\t\tLAST_LOGIN = "******",\n\t\t\t\t\t\tTIMESTAMP_X = TIMESTAMP_X,\n\t\t\t\t\t\tLOGIN_ATTEMPTS = 0\n\t\t\t\t\t\t" . $tz . "\n\t\t\t\t\t\t" . $bxUid . "\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tID=" . $arUser["ID"]);
             if ($applicationId === null && ($bSave || COption::GetOptionString("main", "auth_multisite", "N") == "Y")) {
                 $hash = $this->GetSessionHash();
                 $secure = COption::GetOptionString("main", "use_secure_password_cookies", "N") == "Y" && CMain::IsHTTPS();
                 if ($bSave) {
                     $period = time() + 60 * 60 * 24 * 30 * 60;
                     $spread = BX_SPREAD_SITES | BX_SPREAD_DOMAIN;
                 } else {
                     $period = 0;
                     $spread = BX_SPREAD_SITES;
                 }
                 $APPLICATION->set_cookie("UIDH", $hash, $period, '/', false, $secure, $spread, false, true);
                 $APPLICATION->set_cookie("UIDL", $arUser["LOGIN"], $period, '/', false, $secure, $spread, false, true);
                 $stored_id = CUser::CheckStoredHash($arUser["ID"], $hash);
                 if ($stored_id) {
                     $DB->Query("UPDATE b_user_stored_auth SET\n\t\t\t\t\t\t\t\tLAST_AUTH=" . $DB->CurrentTimeFunction() . ",\n\t\t\t\t\t\t\t\t" . ($this->bLoginByHash ? "" : "TEMP_HASH='" . ($bSave ? "N" : "Y") . "', ") . "\n\t\t\t\t\t\t\t\tIP_ADDR='" . sprintf("%u", ip2long($_SERVER["REMOTE_ADDR"])) . "'\n\t\t\t\t\t\t\tWHERE ID=" . $stored_id);
                 } else {
                     $arFields = array('USER_ID' => $arUser["ID"], '~DATE_REG' => $DB->CurrentTimeFunction(), '~LAST_AUTH' => $DB->CurrentTimeFunction(), 'TEMP_HASH' => $bSave ? "N" : "Y", '~IP_ADDR' => sprintf("%u", ip2long($_SERVER["REMOTE_ADDR"])), 'STORED_HASH' => $hash);
                     $stored_id = CDatabase::Add("b_user_stored_auth", $arFields);
                 }
                 $_SESSION["SESS_AUTH"]["STORED_AUTH_ID"] = $stored_id;
             }
         }
         $this->admin = null;
         $arParams = array("user_fields" => $arUser, "save" => $bSave, "update" => $bUpdate, "applicationId" => $applicationId);
         foreach (GetModuleEvents("main", "OnAfterUserAuthorize", true) as $arEvent) {
             ExecuteModuleEventEx($arEvent, array($arParams));
         }
         foreach (GetModuleEvents("main", "OnUserLogin", true) as $arEvent) {
             ExecuteModuleEventEx($arEvent, array($_SESSION["SESS_AUTH"]["USER_ID"]));
         }
         if (COption::GetOptionString("main", "event_log_login_success", "N") === "Y") {
             CEventLog::Log("SECURITY", "USER_AUTHORIZE", "main", $arUser["ID"], $applicationId);
         }
         CHTMLPagesCache::OnUserLogin();
         return true;
     }
     return false;
 }
예제 #10
0
echo CSite::SelectBox("LID", $str_LID, "", "", "style=\"width:220px\"" . $dis);
?>
</td>
	</tr>
<?
	$tabControl->EndCustomField("LID", '<input type="hidden" name="LID" value="'.$str_LID.'">');

	$params = array('id="bx_user_info_event"');
	if(!$canSelfEdit || $str_EXTERNAL_AUTH_ID <> '')
	{
		$params[] = "disabled";
	}
	$tabControl->AddCheckBoxField("user_info_event", GetMessage('INFO_FOR_USER'), false, "Y", ($_REQUEST["user_info_event"]=="Y"), $params);
endif;

if(CTimeZone::Enabled())
{
	$tabControl->AddSection("USER_TIME_ZONE", GetMessage("user_edit_time_zones"));
	$tabControl->AddDropDownField("AUTO_TIME_ZONE", GetMessage("user_edit_time_zones_auto"), false, array(""=>GetMessage("user_edit_time_zones_auto_def"), "Y"=>GetMessage("user_edit_time_zones_auto_yes"), "N"=>GetMessage("user_edit_time_zones_auto_no")), $str_AUTO_TIME_ZONE, array('onchange="this.form.TIME_ZONE.disabled=(this.value != \'N\')"'));
	$tabControl->AddDropDownField("TIME_ZONE", GetMessage("user_edit_time_zones_zones"), false, CTimeZone::GetZones(), $str_TIME_ZONE, ($str_AUTO_TIME_ZONE<>"N"? array('disabled') : array()));
}
?>
<?
if($showGroupTabs):
	$tabControl->BeginNextFormTab();
	$tabControl->BeginCustomField("GROUP_ID", GetMessage("user_edit_form_groups"));
?>
	<tr>
		<td colspan="2" align="center">
			<table border="0" cellpadding="0" cellspacing="0" class="internal" style="width:80%;">
			<tr class="heading">
예제 #11
0
 public static function PrologActions()
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION, $USER;
     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(function () {
             // define("BX_BUFFER_SHUTDOWN", true);
             for ($i = 0, $n = ob_get_level(); $i < $n; $i++) {
                 ob_end_flush();
             }
         });
     }
     //session expander
     if (COption::GetOptionString("main", "session_expand", "Y") != "N" && (!defined("BX_SKIP_SESSION_EXPAND") || BX_SKIP_SESSION_EXPAND === false)) {
         //only for authorized
         if (COption::GetOptionString("main", "session_auth_only", "Y") != "Y" || $USER->IsAuthorized()) {
             $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'] . "|" . $USER->GetID() . "|" . $_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);
     }
 }
예제 #12
0
 private static function disableTimeZone()
 {
     static::$timeZoneEnabled = \CTimeZone::Enabled();
     \CTimeZone::Disable();
 }
예제 #13
0
 public static function ConvertFromDB($arProperty, $value, $format = '')
 {
     static $offsetEnabled = null;
     static $timeOffset = false;
     if (!isset($offsetEnabled) || $offsetEnabled !== CTimeZone::Enabled()) {
         $offsetEnabled = CTimeZone::Enabled();
         $timeOffset = CTimeZone::GetOffset();
     }
     if (strlen($value["VALUE"]) > 0) {
         $timestamp = MakeTimeStamp($value["VALUE"], 'YYYY-MM-DD HH:MI:SS');
         $timestamp += $timeOffset;
         $value["VALUE"] = ConvertTimeStamp($timestamp, $format ? $format : "FULL");
         $value["VALUE"] = str_replace(" 00:00:00", "", $value["VALUE"]);
     }
     return $value;
 }
예제 #14
0
 public static function GetUserOffset($params)
 {
     $userOffset = 0;
     $localOffset = 0;
     if (!CTimeZone::Enabled()) {
         return 0;
     }
     try {
         $localTime = new DateTime();
         $localOffset = $localTime->getOffset();
         $autoTimeZone = trim($params["AUTO_TIME_ZONE"]);
         $userZone = $params["TIME_ZONE"];
         $factOffset = $params["TIME_ZONE_OFFSET"];
         if ($autoTimeZone == "N") {
             $userTime = $userZone != "" ? new DateTime(null, new DateTimeZone($userZone)) : $localTime;
             $userOffset = $userTime->getOffset();
         } else {
             if (CTimeZone::IsAutoTimeZone($autoTimeZone)) {
                 return intval($factOffset);
             } else {
                 $serverZone = COption::GetOptionString("main", "default_time_zone", "");
                 $serverTime = $serverZone != "" ? new DateTime(null, new DateTimeZone($serverZone)) : $localTime;
                 $userOffset = $serverTime->getOffset();
             }
         }
     } catch (Exception $e) {
         return 0;
     }
     return intval($userOffset) - intval($localOffset);
 }
예제 #15
0
 function CharToDateFunction($strValue, $strType = "FULL", $lang = false)
 {
     $sFieldExpr = "'" . CDatabase::FormatDate($strValue, CLang::GetDateFormat($strType, $lang), $strType == "SHORT" ? "Y-M-D" : "Y-M-D H:I:S") . "'";
     //time zone
     if ($strType == "FULL" && CTimeZone::Enabled()) {
         static $diff = false;
         if ($diff === false) {
             $diff = CTimeZone::GetOffset();
         }
         if ($diff != 0) {
             $sFieldExpr = "DATE_ADD(" . $sFieldExpr . ", INTERVAL -(" . $diff . ") SECOND)";
         }
     }
     return $sFieldExpr;
 }
예제 #16
0
파일: user.php 프로젝트: nProfessor/Mytb
 /**
  * Performs the user authorization:
  *    fills session parameters;
  *    remembers auth;
  *    spreads auth through sites
  */
 function Authorize($id, $bSave = false)
 {
     /** @global CMain $APPLICATION */
     global $DB, $APPLICATION;
     unset($_SESSION["SESS_OPERATIONS"]);
     $_SESSION["BX_LOGIN_NEED_CAPTCHA"] = false;
     $strSql = "SELECT U.* " . "FROM b_user U  " . "WHERE U.ID='" . intval($id) . "' ";
     $result = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
     if ($arUser = $result->Fetch()) {
         $_SESSION["SESS_AUTH"]["AUTHORIZED"] = "Y";
         $_SESSION["SESS_AUTH"]["USER_ID"] = $arUser["ID"];
         $_SESSION["SESS_AUTH"]["LOGIN"] = $arUser["LOGIN"];
         $_SESSION["SESS_AUTH"]["LOGIN_COOKIES"] = $arUser["LOGIN"];
         $_SESSION["SESS_AUTH"]["EMAIL"] = $arUser["EMAIL"];
         $_SESSION["SESS_AUTH"]["PASSWORD_HASH"] = $arUser["PASSWORD"];
         $_SESSION["SESS_AUTH"]["NAME"] = $arUser["NAME"] . ($arUser["NAME"] == '' || $arUser["LAST_NAME"] == '' ? "" : " ") . $arUser["LAST_NAME"];
         $_SESSION["SESS_AUTH"]["FIRST_NAME"] = $arUser["NAME"];
         $_SESSION["SESS_AUTH"]["SECOND_NAME"] = $arUser["SECOND_NAME"];
         $_SESSION["SESS_AUTH"]["LAST_NAME"] = $arUser["LAST_NAME"];
         $_SESSION["SESS_AUTH"]["ADMIN"] = false;
         $_SESSION["SESS_AUTH"]["CONTROLLER_ADMIN"] = false;
         $_SESSION["SESS_AUTH"]["POLICY"] = CUser::GetGroupPolicy($arUser["ID"]);
         $_SESSION["SESS_AUTH"]["AUTO_TIME_ZONE"] = trim($arUser["AUTO_TIME_ZONE"]);
         $_SESSION["SESS_AUTH"]["TIME_ZONE"] = $arUser["TIME_ZONE"];
         $arGroups = array();
         $strSql = "SELECT G.ID " . "FROM b_group G  " . "WHERE G.ANONYMOUS='Y' " . "\tAND G.ACTIVE='Y' ";
         $result = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         while ($ar = $result->Fetch()) {
             $arGroups[] = $ar["ID"];
         }
         if (!in_array(2, $arGroups)) {
             $arGroups[] = 2;
         }
         $strSql = "SELECT G.ID " . "FROM b_user_group UG, b_group G  " . "WHERE UG.USER_ID = " . $arUser["ID"] . " " . "\tAND G.ID=UG.GROUP_ID  " . "\tAND G.ACTIVE='Y' " . "\tAND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= " . $DB->CurrentTimeFunction() . ")) " . "\tAND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= " . $DB->CurrentTimeFunction() . ")) " . "\tAND (G.ANONYMOUS<>'Y' OR G.ANONYMOUS IS NULL) ";
         $result = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         while ($ar = $result->Fetch()) {
             $arGroups[] = $ar["ID"];
             if ($ar["ID"] == 1) {
                 $_SESSION["SESS_AUTH"]["ADMIN"] = true;
             }
         }
         sort($arGroups);
         $_SESSION["SESS_AUTH"]["GROUPS"] = $arGroups;
         $tz = '';
         if (CTimeZone::Enabled()) {
             if (!CTimeZone::IsAutoTimeZone(trim($arUser["AUTO_TIME_ZONE"])) || CTimeZone::GetCookieValue() !== null) {
                 $tz = ', TIME_ZONE_OFFSET = ' . CTimeZone::GetOffset();
             }
         }
         $DB->Query("\n\t\t\t\tUPDATE b_user SET\n\t\t\t\t\tSTORED_HASH = NULL,\n\t\t\t\t\tLAST_LOGIN = "******",\n\t\t\t\t\tTIMESTAMP_X = TIMESTAMP_X,\n\t\t\t\t\tLOGIN_ATTEMPTS = 0\n\t\t\t\t\t" . $tz . "\n\t\t\t\tWHERE\n\t\t\t\t\tID=" . $arUser["ID"]);
         $APPLICATION->set_cookie("LOGIN", $_SESSION["SESS_AUTH"]["LOGIN_COOKIES"], time() + 60 * 60 * 24 * 30 * 60, '/', false, false, COption::GetOptionString("main", "auth_multisite", "N") == "Y");
         if ($bSave || COption::GetOptionString("main", "auth_multisite", "N") == "Y") {
             $hash = $this->GetSessionHash();
             $secure = COption::GetOptionString("main", "use_secure_password_cookies", "N") == "Y" && CMain::IsHTTPS();
             if ($bSave) {
                 $APPLICATION->set_cookie("UIDH", $hash, time() + 60 * 60 * 24 * 30 * 60, '/', false, $secure, BX_SPREAD_SITES | BX_SPREAD_DOMAIN);
             } else {
                 $APPLICATION->set_cookie("UIDH", $hash, 0, '/', false, $secure, BX_SPREAD_SITES);
             }
             $stored_id = CUser::CheckStoredHash($arUser["ID"], $hash);
             if ($stored_id) {
                 $DB->Query("UPDATE b_user_stored_auth SET\n\t\t\t\t\t\t\tLAST_AUTH=" . $DB->CurrentTimeFunction() . ",\n\t\t\t\t\t\t\t" . ($this->bLoginByHash ? "" : "TEMP_HASH='" . ($bSave ? "N" : "Y") . "', ") . "\n\t\t\t\t\t\t\tIP_ADDR='" . sprintf("%u", ip2long($_SERVER["REMOTE_ADDR"])) . "'\n\t\t\t\t\t\tWHERE ID=" . $stored_id);
             } else {
                 $arFields = array('USER_ID' => $arUser["ID"], '~DATE_REG' => $DB->CurrentTimeFunction(), '~LAST_AUTH' => $DB->CurrentTimeFunction(), 'TEMP_HASH' => $bSave ? "N" : "Y", '~IP_ADDR' => sprintf("%u", ip2long($_SERVER["REMOTE_ADDR"])), 'STORED_HASH' => $hash);
                 $stored_id = CDatabase::Add("b_user_stored_auth", $arFields);
             }
             $_SESSION["SESS_AUTH"]["STORED_AUTH_ID"] = $stored_id;
         }
         $this->admin = null;
         $arParams = array("user_fields" => $arUser, "save" => $bSave);
         foreach (GetModuleEvents("main", "OnAfterUserAuthorize", true) as $arEvent) {
             ExecuteModuleEventEx($arEvent, array(&$arParams));
         }
         foreach (GetModuleEvents("main", "OnUserLogin", true) as $arEvent) {
             ExecuteModuleEventEx($arEvent, array($_SESSION["SESS_AUTH"]["USER_ID"]));
         }
         if (COption::GetOptionString("main", "event_log_login_success", "N") === "Y") {
             CEventLog::Log("SECURITY", "USER_AUTHORIZE", "main", $arUser["ID"]);
         }
         return true;
     }
     return false;
 }
예제 #17
0
 public static function DatetimeToTimestampFunction($fieldName)
 {
     $timeZone = "";
     if (CTimeZone::Enabled()) {
         static $diff = false;
         if ($diff === false) {
             $diff = CTimeZone::GetOffset();
         }
         if ($diff != 0) {
             $timeZone = $diff > 0 ? "+" . $diff : $diff;
         }
     }
     return "UNIX_TIMESTAMP(" . $fieldName . ")" . $timeZone;
 }
예제 #18
0
 }
 IntOptionSet("dump_auto_interval", $i);
 COption::SetOptionInt('main', 'last_backup_start_time', 0);
 COption::SetOptionInt('main', 'last_backup_end_time', 0);
 $start_time = time();
 $min_left = $t - date('H') * 60 - date('i');
 if ($min_left < -60) {
     $start_time += 86400;
     $day = 'TOMORROW';
     $w = date('w', time() + 86400);
 } else {
     $day = 'TODAY';
     $w = date('w');
 }
 // converting time to UTC
 $diff = (CTimeZone::Enabled() ? CTimeZone::GetOffset() : 0) + date('Z');
 $sec -= $diff;
 if ($sec < 0) {
     $sec += 86400;
     $w = ($w - 1) % 7;
 } elseif ($sec >= 86400) {
     $sec -= 86400;
     $w = ($w + 1) % 7;
 }
 switch ($dump_auto_interval) {
     case 1:
         $arWeekDays = array(0, 1, 2, 3, 4, 5, 6);
         break;
     case 2:
         if ($w % 2) {
             $arWeekDays = array(1, 3, 5);
예제 #19
0
 function GetMessagesForChat($currentUserID, $userID, $date = false, $arNavStartParams = false, $replyMessId = false)
 {
     global $DB;
     $currentUserID = IntVal($currentUserID);
     if ($currentUserID <= 0) {
         return false;
     }
     $userID = IntVal($userID);
     if ($date !== false) {
         $date = Trim($date);
         if (StrLen($date) <= 0) {
             return false;
         }
         if (!preg_match("#\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d#i", $date)) {
             return false;
         }
     }
     $replyMessId = intval($replyMessId);
     //time zone
     $diff = false;
     if (CTimeZone::Enabled()) {
         $diff = CTimeZone::GetOffset();
     }
     if ($diff !== false && $diff != 0) {
         $sDateFmt = "DATE_FORMAT(DATE_ADD(DATE_CREATE, INTERVAL " . $diff . " SECOND), '%Y-%m-%d %H:%i:%s') as DATE_CREATE_FMT, ";
     } else {
         $sDateFmt = "DATE_FORMAT(DATE_CREATE, '%Y-%m-%d %H:%i:%s') as DATE_CREATE_FMT, ";
     }
     $strSql = "SELECT 'IN' as WHO, ID, FROM_USER_ID as USER_ID, TITLE, MESSAGE, DATE_VIEW as DATE_VIEW, DATE_CREATE, " . "\t" . $sDateFmt . "\t" . $DB->DateToCharFunction("DATE_CREATE", "FULL") . " as DATE_CREATE_FORMAT " . "FROM b_sonet_messages " . "WHERE TO_USER_ID = " . $currentUserID . " " . ($userID > 0 ? "\tAND FROM_USER_ID = " . $userID . " " : "") . "\tAND TO_DELETED = 'N' " . "\tAND (IS_LOG IS NULL OR NOT IS_LOG = 'Y') " . ($date !== false && $replyMessId <= 0 ? " AND MESSAGE_TYPE = 'P' AND DATE_CREATE > '" . $DB->ForSql($date) . "' " : "") . ($replyMessId > 0 ? " AND MESSAGE_TYPE = 'P' AND ID >= '" . $replyMessId . "' " : "") . "UNION ALL " . "SELECT 'OUT' as WHO, ID, TO_USER_ID as USER_ID, TITLE, MESSAGE, DATE_CREATE as DATE_VIEW, DATE_CREATE, " . "\t" . $sDateFmt . "\t" . $DB->DateToCharFunction("DATE_CREATE", "FULL") . " as DATE_CREATE_FORMAT " . "FROM b_sonet_messages " . "WHERE FROM_USER_ID = " . $currentUserID . " " . ($userID > 0 ? "\tAND TO_USER_ID = " . $userID . " " : "") . "\tAND FROM_DELETED = 'N' " . "\tAND (IS_LOG IS NULL OR NOT IS_LOG = 'Y') " . ($date !== false && $replyMessId <= 0 ? " AND MESSAGE_TYPE = 'P' AND DATE_CREATE > '" . $DB->ForSql($date) . "' " : "") . ($replyMessId > 0 ? " AND MESSAGE_TYPE = 'P' AND ID >= '" . $replyMessId . "' " : "") . "ORDER BY DATE_CREATE " . ($date !== false ? "ASC" : "DESC") . " ";
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT(M.ID) as CNT " . "FROM b_sonet_messages M " . "WHERE (M.TO_USER_ID = " . $currentUserID . " " . ($userID > 0 ? "\tAND M.FROM_USER_ID = " . $userID . " " : "") . "\tAND M.TO_DELETED = 'N' " . "\tOR " . "\tM.FROM_USER_ID = " . $currentUserID . " " . ($userID > 0 ? "\tAND M.TO_USER_ID = " . $userID . " " : "") . "\tAND M.FROM_DELETED = 'N') " . "\tAND (IS_LOG IS NULL OR NOT IS_LOG = 'Y') " . ($date !== false || $replyMessId > 0 ? " AND M.MESSAGE_TYPE = 'P' " : "");
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if ($arRes = $dbRes->Fetch()) {
             $cnt = $arRes["CNT"];
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
예제 #20
0
 public static function GetOffset($userId = false)
 {
     if (!$userId) {
         if (!isset(self::$offset)) {
             if (!CTimeZone::Enabled()) {
                 CTimeZone::Enable();
                 self::$offset = CTimeZone::GetOffset();
                 CTimeZone::Disable();
             } else {
                 self::$offset = CTimeZone::GetOffset();
             }
         }
         return self::$offset;
     }
     // Fetch recipient timezone
     if (!isset(self::$arTimezoneOffsets[$userId])) {
         self::$arTimezoneOffsets[$userId] = CTimeZone::GetOffset($userId);
     }
     return self::$arTimezoneOffsets[$userId];
 }