File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/main/classes/general/site.php
Back
<?php /** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2022 Bitrix */ use Bitrix\Main; use Bitrix\Main\Localization\CultureTable; use Bitrix\Main\SiteTable; IncludeModuleLangFile(__FILE__); /** * @deprecated */ class CAllSite { public static $MAIN_LANGS_CACHE = []; public static $MAIN_LANGS_ADMIN_CACHE = []; var $LAST_ERROR; public static function InDir($strDir) { /** @global CMain $APPLICATION */ global $APPLICATION; return (mb_substr($APPLICATION->GetCurPage(true), 0, mb_strlen($strDir)) == $strDir); } public static function InPeriod($iUnixTimestampFrom, $iUnixTimestampTo) { if($iUnixTimestampFrom>0 && time()<$iUnixTimestampFrom) return false; if($iUnixTimestampTo>0 && time()>$iUnixTimestampTo) return false; return true; } public static function InGroup($arGroups) { global $USER; $arUserGroups = $USER->GetUserGroupArray(); if (count(array_intersect($arUserGroups,$arGroups))>0) return true; return false; } /** * @deprecated Use Context culture. */ public static function GetWeekStart() { return Main\Context::getCurrent()->getCulture()->getWeekStart(); } public static function GetDateFormat($type="FULL", $lang=false, $bSearchInSitesOnly=false) { $bFullFormat = (strtoupper($type) == "FULL"); if($lang === false && defined("LANG")) $lang = LANG; if(defined("SITE_ID") && $lang == SITE_ID) { if($bFullFormat && defined("FORMAT_DATETIME")) return FORMAT_DATETIME; if(!$bFullFormat && defined("FORMAT_DATE")) return FORMAT_DATE; } if(!$bSearchInSitesOnly && defined("ADMIN_SECTION") && ADMIN_SECTION===true) { if(!is_set(static::$MAIN_LANGS_ADMIN_CACHE, $lang)) { $res = CLanguage::GetByID($lang); if($res = $res->Fetch()) static::$MAIN_LANGS_ADMIN_CACHE[$res["LID"]] = $res; } if(is_set(static::$MAIN_LANGS_ADMIN_CACHE, $lang)) { if($bFullFormat) return mb_strtoupper(static::$MAIN_LANGS_ADMIN_CACHE[$lang]["FORMAT_DATETIME"]); return mb_strtoupper(static::$MAIN_LANGS_ADMIN_CACHE[$lang]["FORMAT_DATE"]); } } // if LANG is not found in LangAdmin: if(!is_set(static::$MAIN_LANGS_CACHE, $lang)) { $res = CLang::GetByID($lang); $res = $res->Fetch(); static::$MAIN_LANGS_CACHE[$res["LID"]] = $res; if(defined("ADMIN_SECTION") && ADMIN_SECTION === true) static::$MAIN_LANGS_ADMIN_CACHE[$res["LID"]] = $res; } if($bFullFormat) { $format = mb_strtoupper(static::$MAIN_LANGS_CACHE[$lang]["FORMAT_DATETIME"]); if($format == '') $format = "DD.MM.YYYY HH:MI:SS"; } else { $format = mb_strtoupper(static::$MAIN_LANGS_CACHE[$lang]["FORMAT_DATE"]); if($format == '') $format = "DD.MM.YYYY"; } return $format; } public static function GetTimeFormat($lang=false, $bSearchInSitesOnly = false) { $dateTimeFormat = self::GetDateFormat('FULL', $lang, $bSearchInSitesOnly); preg_match('~[HG]~', $dateTimeFormat, $chars, PREG_OFFSET_CAPTURE); return trim(mb_substr($dateTimeFormat, $chars[0][1])); } public function CheckFields($arFields, $ID=false) { /** @global CMain $APPLICATION */ global $APPLICATION, $DB; $this->LAST_ERROR = ""; $arMsg = array(); if(isset($arFields["NAME"]) && mb_strlen($arFields["NAME"]) < 2) { $this->LAST_ERROR .= GetMessage("BAD_SITE_NAME")." "; $arMsg[] = array("id"=>"NAME", "text"=> GetMessage("BAD_SITE_NAME")); } if(($ID===false || isset($arFields["LID"])) && mb_strlen($arFields["LID"]) <> 2) { $this->LAST_ERROR .= GetMessage("BAD_SITE_LID")." "; $arMsg[] = array("id"=>"LID", "text"=> GetMessage("BAD_SITE_LID")); } if(isset($arFields["LID"]) && preg_match("/[^a-z0-9_]/i", $arFields["LID"])) { $this->LAST_ERROR .= GetMessage("MAIN_SITE_LATIN")." "; $arMsg[] = array("id"=>"LID", "text"=> GetMessage("MAIN_SITE_LATIN")); } if(isset($arFields["DIR"]) && $arFields["DIR"] == '') { $this->LAST_ERROR .= GetMessage("BAD_LANG_DIR")." "; $arMsg[] = array("id"=>"DIR", "text"=> GetMessage("BAD_LANG_DIR")); } if($ID===false && !isset($arFields["LANGUAGE_ID"])) { $this->LAST_ERROR .= GetMessage("MAIN_BAD_LANGUAGE_ID")." "; $arMsg[] = array("id"=>"LANGUAGE_ID", "text"=> GetMessage("MAIN_BAD_LANGUAGE_ID")); } if(isset($arFields["LANGUAGE_ID"])) { $dbl_check = CLanguage::GetByID($arFields["LANGUAGE_ID"]); if(!$dbl_check->Fetch()) { $this->LAST_ERROR .= GetMessage("MAIN_BAD_LANGUAGE_ID_BAD")." "; $arMsg[] = array("id"=>"LANGUAGE_ID", "text"=> GetMessage("MAIN_BAD_LANGUAGE_ID_BAD")); } } if($ID === false && !isset($arFields["CULTURE_ID"])) { $this->LAST_ERROR .= GetMessage("lang_check_culture_not_set")." "; $arMsg[] = array("id"=>"CULTURE_ID", "text"=> GetMessage("lang_check_culture_not_set")); } if(isset($arFields["CULTURE_ID"])) { if(CultureTable::getRowById($arFields["CULTURE_ID"]) === null) { $this->LAST_ERROR .= GetMessage("lang_check_culture_incorrect")." "; $arMsg[] = array("id"=>"CULTURE_ID", "text"=> GetMessage("lang_check_culture_incorrect")); } } if(isset($arFields["SORT"]) && $arFields["SORT"] == '') { $this->LAST_ERROR .= GetMessage("BAD_SORT")." "; $arMsg[] = array("id"=>"SORT", "text"=> GetMessage("BAD_SORT")); } if(isset($arFields["TEMPLATE"])) { $isOK = false; $check_templ = array(); $dupError = ""; foreach($arFields["TEMPLATE"] as $val) { if($val["TEMPLATE"] <> '' && getLocalPath("templates/".$val["TEMPLATE"], BX_PERSONAL_ROOT) !== false) { if(in_array($val["TEMPLATE"].", ".$val["CONDITION"], $check_templ)) { $dupError = " ".GetMessage("MAIN_BAD_TEMPLATE_DUP"); $isOK = false; break; } $check_templ[] = $val["TEMPLATE"].", ".$val["CONDITION"]; $isOK = true; } } if(!$isOK) { $this->LAST_ERROR .= GetMessage("MAIN_BAD_TEMPLATE").$dupError; $arMsg[] = array("id"=>"SITE_TEMPLATE", "text"=> GetMessage("MAIN_BAD_TEMPLATE").$dupError); } } if($ID===false) $events = GetModuleEvents("main", "OnBeforeSiteAdd", true); else $events = GetModuleEvents("main", "OnBeforeSiteUpdate", true); foreach($events as $arEvent) { $bEventRes = ExecuteModuleEventEx($arEvent, array(&$arFields)); if($bEventRes===false) { if($err = $APPLICATION->GetException()) { $this->LAST_ERROR .= $err->GetString()." "; $arMsg[] = array("id"=>"EVENT_ERROR", "text"=> $err->GetString()); } else { $this->LAST_ERROR .= "Unknown error. "; $arMsg[] = array("id"=>"EVENT_ERROR", "text"=> "Unknown error. "); } break; } } if(!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); } if($this->LAST_ERROR <> '') return false; if($ID===false) { $r = $DB->Query("SELECT 'x' FROM b_lang WHERE LID='".$DB->ForSQL($arFields["LID"], 2)."'"); if($r->Fetch()) { $this->LAST_ERROR .= GetMessage("BAD_SITE_DUP")." "; $e = new CAdminException(array(array("id" => "LID", "text" => GetMessage("BAD_SITE_DUP")))); $APPLICATION->ThrowException($e); return false; } } return true; } public static function SaveDomains($LID, $domains) { global $DB, $CACHE_MANAGER; if(CACHED_b_lang_domain !== false) $CACHE_MANAGER->CleanDir("b_lang_domain"); $DB->Query("DELETE FROM b_lang_domain WHERE LID='".$DB->ForSQL($LID)."'"); $domains = str_replace("\r", "\n", $domains); $arDomains = explode("\n", $domains); foreach($arDomains as $i => $domain) { $domain = preg_replace("#^(http://|https://)#", "", rtrim(trim(mb_strtolower($domain)), "/")); $arErrors = array(); if ($domainTmp = CBXPunycode::ToASCII($domain, $arErrors)) $domain = $domainTmp; $arDomains[$i] = $domain; } $arDomains = array_unique($arDomains); $bIsDomain = false; foreach($arDomains as $domain) { if($domain <> '') { $DB->Query("INSERT INTO b_lang_domain(LID, DOMAIN) VALUES('".$DB->ForSQL($LID, 2)."', '".$DB->ForSQL($domain, 255)."')"); $bIsDomain = true; } } $DB->Query("UPDATE b_lang SET DOMAIN_LIMITED='".($bIsDomain? "Y":"N")."' WHERE LID='".$DB->ForSql($LID)."'"); Main\SiteDomainTable::cleanCache(); } public function Add($arFields) { global $DB, $DOCUMENT_ROOT, $CACHE_MANAGER; if(!$this->CheckFields($arFields)) return false; if(isset($arFields["ACTIVE"]) && $arFields["ACTIVE"]!="Y") $arFields["ACTIVE"]="N"; if(isset($arFields["DEF"])) { if($arFields["DEF"]=="Y") $DB->Query("UPDATE b_lang SET DEF='N' WHERE DEF='Y'"); else $arFields["DEF"]="N"; } $arInsert = $DB->PrepareInsert("b_lang", $arFields); $strSql = "INSERT INTO b_lang(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); if(CACHED_b_lang!==false) $CACHE_MANAGER->CleanDir("b_lang"); if(isset($arFields["DIR"])) CheckDirPath($DOCUMENT_ROOT.$arFields["DIR"]); if(isset($arFields["DOMAINS"])) self::SaveDomains($arFields["LID"], $arFields["DOMAINS"]); if(isset($arFields["TEMPLATE"])) { foreach($arFields["TEMPLATE"] as $arTemplate) { if(trim($arTemplate["TEMPLATE"]) <> '') { $DB->Query( "INSERT INTO b_site_template(SITE_ID, `CONDITION`, SORT, TEMPLATE) ". "VALUES('".$DB->ForSQL($arFields["LID"])."', '".$DB->ForSQL(trim($arTemplate["CONDITION"]), 255)."', ".intval($arTemplate["SORT"]).", '".$DB->ForSQL(trim($arTemplate["TEMPLATE"]), 255)."')"); } } if(CACHED_b_site_template!==false) $CACHE_MANAGER->Clean("b_site_template"); } SiteTable::cleanCache(); return $arFields["LID"]; } public function Update($ID, $arFields) { global $DB, $CACHE_MANAGER; unset(static::$MAIN_LANGS_CACHE[$ID]); unset(static::$MAIN_LANGS_ADMIN_CACHE[$ID]); if(!$this->CheckFields($arFields, $ID)) return false; if(isset($arFields["ACTIVE"]) && $arFields["ACTIVE"]!="Y") $arFields["ACTIVE"]="N"; if(isset($arFields["DEF"])) { if($arFields["DEF"]=="Y") $DB->Query("UPDATE b_lang SET DEF='N' WHERE DEF='Y'"); else $arFields["DEF"]="N"; } $strUpdate = $DB->PrepareUpdate("b_lang", $arFields); if($strUpdate <> '') { $strSql = "UPDATE b_lang SET ".$strUpdate." WHERE LID='".$DB->ForSql($ID, 2)."'"; $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); } if(CACHED_b_lang!==false) $CACHE_MANAGER->CleanDir("b_lang"); if(isset($arFields["DIR"])) CheckDirPath($_SERVER["DOCUMENT_ROOT"].$arFields["DIR"]); if(isset($arFields["DOMAINS"])) self::SaveDomains($ID, $arFields["DOMAINS"]); if(isset($arFields["TEMPLATE"])) { $DB->Query("DELETE FROM b_site_template WHERE SITE_ID='".$DB->ForSQL($ID)."'"); foreach($arFields["TEMPLATE"] as $arTemplate) { if(trim($arTemplate["TEMPLATE"]) <> '') { $DB->Query( "INSERT INTO b_site_template(SITE_ID, `CONDITION`, SORT, TEMPLATE) ". "VALUES('".$DB->ForSQL($ID)."', '".$DB->ForSQL(trim($arTemplate["CONDITION"]), 255)."', ".intval($arTemplate["SORT"]).", '".$DB->ForSQL(trim($arTemplate["TEMPLATE"]), 255)."')"); } } if(CACHED_b_site_template!==false) $CACHE_MANAGER->Clean("b_site_template"); } SiteTable::cleanCache(); return true; } public static function Delete($ID) { /** @global CMain $APPLICATION */ global $DB, $APPLICATION, $CACHE_MANAGER; $APPLICATION->ResetException(); foreach(GetModuleEvents("main", "OnBeforeLangDelete", true) as $arEvent) { if(ExecuteModuleEventEx($arEvent, array($ID))===false) { $err = GetMessage("MAIN_BEFORE_DEL_ERR1").' '.$arEvent['TO_NAME']; if($ex = $APPLICATION->GetException()) $err .= ': '.$ex->GetString(); $APPLICATION->throwException($err); return false; } } foreach(GetModuleEvents("main", "OnBeforeSiteDelete", true) as $arEvent) { if(ExecuteModuleEventEx($arEvent, array($ID))===false) { $err = GetMessage("MAIN_BEFORE_DEL_ERR1").' '.$arEvent['TO_NAME']; if($ex = $APPLICATION->GetException()) $err .= ': '.$ex->GetString(); $APPLICATION->throwException($err); return false; } } foreach(GetModuleEvents("main", "OnLangDelete", true) as $arEvent) ExecuteModuleEventEx($arEvent, array($ID)); foreach(GetModuleEvents("main", "OnSiteDelete", true) as $arEvent) ExecuteModuleEventEx($arEvent, array($ID)); if(!$DB->Query("DELETE FROM b_event_message_site WHERE SITE_ID='".$DB->ForSQL($ID, 2)."'")) return false; if(!$DB->Query("DELETE FROM b_lang_domain WHERE LID='".$DB->ForSQL($ID, 2)."'")) return false; if(CACHED_b_lang_domain!==false) $CACHE_MANAGER->CleanDir("b_lang_domain"); if(!$DB->Query("UPDATE b_event_message SET LID=NULL WHERE LID='".$DB->ForSQL($ID, 2)."'")) return false; if(!$DB->Query("DELETE FROM b_site_template WHERE SITE_ID='".$DB->ForSQL($ID, 2)."'")) return false; if(CACHED_b_site_template!==false) $CACHE_MANAGER->Clean("b_site_template"); $result = $DB->Query("DELETE FROM b_lang WHERE LID='".$DB->ForSQL($ID, 2)."'", true); if(CACHED_b_lang!==false) $CACHE_MANAGER->CleanDir("b_lang"); SiteTable::cleanCache(); Main\SiteDomainTable::cleanCache(); return $result; } public static function GetTemplateList($site_id) { global $DB; $strSql = "SELECT * ". "FROM b_site_template ". "WHERE SITE_ID='".$DB->ForSQL($site_id, 2)."' ". "ORDER BY SORT"; $dbr = $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); return $dbr; } public static function GetDefList() { return static::GetList('def_list', 'asc', ['ACTIVE' => 'Y']); } /** * @deprecated Use SiteTable::getDocumentRoot() */ public static function GetSiteDocRoot($site) { return SiteTable::getDocumentRoot($site === false ? null : $site); } public static function GetSiteByFullPath($path, $bOneResult = true) { $res = array(); if(($p = realpath($path))) $path = $p; $path = str_replace("\\", "/", $path); $path = mb_strtolower($path)."/"; $db_res = CSite::GetList("lendir", "desc"); while($ar_res = $db_res->Fetch()) { $abspath = $ar_res["ABS_DOC_ROOT"].$ar_res["DIR"]; if(($p = realpath($abspath))) $abspath = $p; $abspath = str_replace("\\", "/", $abspath); $abspath = mb_strtolower($abspath); if(mb_substr($abspath, -1) <> "/") $abspath .= "/"; if(mb_strpos($path, $abspath) === 0) { if($bOneResult) return $ar_res["ID"]; $res[] = $ar_res["ID"]; } } if(!empty($res)) return $res; return false; } public static function GetList($by = "sort", $order = "asc", $arFilter=array()) { global $DB, $CACHE_MANAGER; if(CACHED_b_lang!==false) { $cacheId = "b_lang".md5($by.".".$order.".".serialize($arFilter)); if($CACHE_MANAGER->Read(CACHED_b_lang, $cacheId, "b_lang")) { $arResult = $CACHE_MANAGER->Get($cacheId); $res = new CDBResult; $res->InitFromArray($arResult); $res = new _CLangDBResult($res); return $res; } } $strSqlSearch = ""; $bIncDomain = false; if(is_array($arFilter)) { foreach($arFilter as $key=>$val) { if((string)$val == '') { continue; } $val = $DB->ForSql($val); switch(strtoupper($key)) { case "ACTIVE": if($val == "Y" || $val == "N") { $strSqlSearch .= " AND L.ACTIVE='".$val."'\n"; } break; case "DEFAULT": if($val == "Y" || $val == "N") { $strSqlSearch .= " AND L.DEF='".$val."'\n"; } break; case "NAME": $strSqlSearch .= " AND UPPER(L.NAME) LIKE UPPER('".$val."')\n"; break; case "DOMAIN": $bIncDomain = true; $strSqlSearch .= " AND UPPER(D.DOMAIN) LIKE UPPER('".$val."')\n"; break; case "IN_DIR": $strSqlSearch .= " AND UPPER('".$val."') LIKE ".$DB->Concat("UPPER(L.DIR)", "'%'")."\n"; break; case "ID": case "LID": $strSqlSearch .= " AND L.LID='".$val."'\n"; break; case "LANGUAGE_ID": $strSqlSearch .= " AND L.LANGUAGE_ID='".$val."'\n"; break; } } } $strSql = " SELECT ".($bIncDomain ? " DISTINCT " : "")." L.*, L.LID ID, L.LID SITE_ID, ".$DB->Length("L.DIR").", ".$DB->IsNull($DB->Length("L.DOC_ROOT"), "0").", C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_culture C, b_lang L ".($bIncDomain? "LEFT JOIN b_lang_domain D ON D.LID=L.LID " : "")." WHERE C.ID=L.CULTURE_ID ".$strSqlSearch." "; $by = strtolower($by); $order = strtolower($order); if($by == "lid" || $by=="id") { $strSqlOrder = " ORDER BY L.LID "; } elseif($by == "active") { $strSqlOrder = " ORDER BY L.ACTIVE "; } elseif($by == "name") { $strSqlOrder = " ORDER BY L.NAME "; } elseif($by == "dir") { $strSqlOrder = " ORDER BY L.DIR "; } elseif($by == "lendir") { $strSqlOrder = " ORDER BY ".$DB->IsNull($DB->Length("L.DOC_ROOT"), "0").($order=="desc"? " desc":"").", ".$DB->Length("L.DIR"); } elseif($by == "def") { $strSqlOrder = " ORDER BY L.DEF "; } elseif($by == "def_list") { $strSqlOrder = " ORDER BY L.DEF desc, L.SORT "; } else { $strSqlOrder = " ORDER BY L.SORT "; } if($order == "desc") { $strSqlOrder .= " desc "; } $strSql .= $strSqlOrder; if(CACHED_b_lang===false) { $res = $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); } else { $arResult = array(); $res = $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); while($ar = $res->Fetch()) $arResult[]=$ar; $CACHE_MANAGER->Set($cacheId, $arResult); $res = new CDBResult; $res->InitFromArray($arResult); } $res = new _CLangDBResult($res); return $res; } public static function GetByID($ID) { return CSite::GetList('', '', array("LID"=>$ID)); } public static function GetArrayByID($ID) { $res = self::GetByID($ID); return $res->Fetch(); } public static function GetDefSite($LID = false) { if($LID <> '') { $dbSite = CSite::GetByID($LID); if($dbSite->Fetch()) return $LID; } $dbDefSites = CSite::GetDefList(); if($arDefSite = $dbDefSites->Fetch()) return $arDefSite["LID"]; return false; } public static function IsDistinctDocRoots($arFilter=array()) { $s = false; $res = CSite::GetList('', '', $arFilter); while($ar = $res->Fetch()) { if($s!==false && $s!=$ar["ABS_DOC_ROOT"]) return true; $s = $ar["ABS_DOC_ROOT"]; } return false; } /////////////////////////////////////////////////////////////////// // Returns drop down list with langs /////////////////////////////////////////////////////////////////// public static function SelectBox($sFieldName, $sValue, $sDefaultValue="", $sFuncName="", $field="class=\"typeselect\"") { $l = CLang::GetList(); $s = '<select name="'.$sFieldName.'" '.$field; $s1 = ''; if($sFuncName <> '') $s .= ' OnChange="'.$sFuncName.'"'; $s .= '>'."\n"; $found = false; while(($l_arr = $l->Fetch())) { $found = ($l_arr["LID"] == $sValue); $s1 .= '<option value="'.$l_arr["LID"].'"'.($found ? ' selected':'').'>['.htmlspecialcharsex($l_arr["LID"]).'] '.htmlspecialcharsex($l_arr["NAME"]).'</option>'."\n"; } if($sDefaultValue <> '') $s .= "<option value='NOT_REF' ".($found ? "" : "selected").">".htmlspecialcharsex($sDefaultValue)."</option>"; return $s.$s1.'</select>'; } public static function SelectBoxMulti($sFieldName, $Value) { $l = CLang::GetList(); if(is_array($Value)) $arValue = $Value; else $arValue = array($Value); $s = '<div class="adm-list">'; while($l_arr = $l->Fetch()) { $s .= '<div class="adm-list-item">'. '<div class="adm-list-control"><input type="checkbox" name="'.$sFieldName.'[]" value="'.htmlspecialcharsex($l_arr["LID"]).'" id="'.htmlspecialcharsex($l_arr["LID"]).'" class="typecheckbox"'.(in_array($l_arr["LID"], $arValue)?' checked':'').'></div>'. '<div class="adm-list-label"><label for="'.htmlspecialcharsex($l_arr["LID"]).'">['.htmlspecialcharsex($l_arr["LID"]).'] '.htmlspecialcharsex($l_arr["NAME"]).'</label></div>'. '</div>'; } $s .= '</div>'; return $s; } public static function GetNameTemplates() { return array( '#NAME# #LAST_NAME#' => GetMessage('MAIN_NAME_JOHN_SMITH'), '#LAST_NAME# #NAME#' => GetMessage('MAIN_NAME_SMITH_JOHN'), '#TITLE# #LAST_NAME#' => GetMessage("MAIN_NAME_MR_SMITH"), '#NAME# #SECOND_NAME_SHORT# #LAST_NAME#' => GetMessage('MAIN_NAME_JOHN_L_SMITH'), '#LAST_NAME# #NAME# #SECOND_NAME#' => GetMessage('MAIN_NAME_SMITH_JOHN_LLOYD'), '#LAST_NAME#, #NAME# #SECOND_NAME#' => GetMessage('MAIN_NAME_SMITH_COMMA_JOHN_LLOYD'), '#NAME# #SECOND_NAME# #LAST_NAME#' => GetMessage('MAIN_NAME_JOHN_LLOYD_SMITH'), '#NAME_SHORT# #SECOND_NAME_SHORT# #LAST_NAME#' => GetMessage('MAIN_NAME_J_L_SMITH'), '#NAME_SHORT# #LAST_NAME#' => GetMessage('MAIN_NAME_J_SMITH'), '#LAST_NAME# #NAME_SHORT#' => GetMessage('MAIN_NAME_SMITH_J'), '#LAST_NAME# #NAME_SHORT# #SECOND_NAME_SHORT#' => GetMessage('MAIN_NAME_SMITH_J_L'), '#LAST_NAME#, #NAME_SHORT#' => GetMessage('MAIN_NAME_SMITH_COMMA_J'), '#LAST_NAME#, #NAME_SHORT# #SECOND_NAME_SHORT#' => GetMessage('MAIN_NAME_SMITH_COMMA_J_L') ); } /** * Returns current name template * * If site is not defined - will look for name template for current language. * If there is no value for language - returns pre-defined value @see CSite::GetDefaultNameFormat * FORMAT_NAME constant can be set in dbconn.php * * @param null $dummy Unused * @param string $site_id - use to get value for the specific site * @return string ex: #LAST_NAME# #NAME# */ public static function GetNameFormat($dummy = null, $site_id = "") { static $siteFormat = []; $format = ''; $context = Main\Context::getCurrent(); if ($site_id == "" || $context->getSite() == $site_id) { // from current site or language $format = $context->getCulture()->getFormatName(); } //site value if ($format == "") { if (!isset($siteFormat[$site_id])) { $db_res = CSite::GetByID($site_id); if ($res = $db_res->Fetch()) { $format = $res["FORMAT_NAME"]; $siteFormat[$site_id] = $format; } } else { $format = $siteFormat[$site_id]; } } //if not found - trying to get value for the language if ($format == "") { $format = $context->getCulture()->getFormatName(); } //if not found - trying to get default values if ($format == "") { $format = self::GetDefaultNameFormat(); } $format = str_replace(array("#NOBR#","#/NOBR#"), "", $format); return $format; } /** * Returns default name template * By default: Russian #LAST_NAME# #NAME#, English #NAME# #LAST_NAME# * * @return string - one of two possible default values */ public static function GetDefaultNameFormat() { return '#NAME# #LAST_NAME#'; } public static function GetCurTemplate() { /** @noinspection PhpUnusedLocalVariableInspection */ global $APPLICATION, $USER, $CACHE_MANAGER; $connection = Main\Application::getConnection(); $helper = $connection->getSqlHelper(); $conditionQuoted = $helper->quote("CONDITION"); $siteTemplate = ""; if(CACHED_b_site_template===false) { $strSql = " SELECT ".$conditionQuoted.", TEMPLATE FROM b_site_template WHERE SITE_ID='".SITE_ID."' ORDER BY CASE WHEN ".$helper->getIsNullFunction($helper->getLengthFunction($conditionQuoted), 0)."=0 THEN 2 ELSE 1 END, SORT "; $dbr = $connection->query($strSql); while($ar = $dbr->fetch()) { $strCondition = trim($ar["CONDITION"]); if($strCondition <> '' && (!@eval("return ".$strCondition.";"))) { continue; } if(($path = getLocalPath("templates/".$ar["TEMPLATE"], BX_PERSONAL_ROOT)) !== false && is_dir($_SERVER["DOCUMENT_ROOT"].$path)) { $siteTemplate = $ar["TEMPLATE"]; break; } } } else { if($CACHE_MANAGER->Read(CACHED_b_site_template, "b_site_template")) { $arSiteTemplateBySite = $CACHE_MANAGER->Get("b_site_template"); } else { $dbr = $connection->query(" SELECT ".$conditionQuoted.", TEMPLATE, SITE_ID FROM b_site_template ORDER BY SITE_ID, CASE WHEN ".$helper->getIsNullFunction($helper->getLengthFunction($conditionQuoted), 0)."=0 THEN 2 ELSE 1 END, SORT "); $arSiteTemplateBySite = array(); while($ar = $dbr->fetch()) { $arSiteTemplateBySite[$ar['SITE_ID']][] = $ar; } $CACHE_MANAGER->Set("b_site_template", $arSiteTemplateBySite); } if (isset($arSiteTemplateBySite[SITE_ID]) && is_array($arSiteTemplateBySite[SITE_ID])) { foreach($arSiteTemplateBySite[SITE_ID] as $ar) { $strCondition = trim($ar["CONDITION"]); if($strCondition <> '' && (!@eval("return ".$strCondition.";"))) { continue; } if(($path = getLocalPath("templates/".$ar["TEMPLATE"], BX_PERSONAL_ROOT)) !== false && is_dir($_SERVER["DOCUMENT_ROOT"].$path)) { $siteTemplate = $ar["TEMPLATE"]; break; } } } } if($siteTemplate == "") { $siteTemplate = ".default"; } $event = new Main\Event("main", "OnGetCurrentSiteTemplate", array("template" => $siteTemplate)); $event->send(); foreach($event->getResults() as $evenResult) { if(($result = $evenResult->getParameters()) <> '') { //only the first result matters $siteTemplate = $result; break; } } return $siteTemplate; } } class CAllLang extends CAllSite { } class CSite extends CAllSite { } class CLang extends CSite { }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings