| Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/modules/main/classes/general/ |
| Current File : /var/www/element/data/www/revenuestory.ru/bitrix/modules/main/classes/general/site.php |
<?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(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
{
}