Your IP : 18.222.173.230
<?php
use Bitrix\Main\Localization\CultureTable;
use Bitrix\Main\Localization;
IncludeModuleLangFile(__FILE__);
/**
* @deprecated
*/
class CAllLanguage
{
var $LAST_ERROR;
public static function GetList($by = "sort", $order = "asc", $arFilter=array())
{
global $DB;
$arSqlSearch = array();
if (is_array($arFilter))
{
foreach ($arFilter as $key => $val)
{
if ((string)$val <> '')
{
switch(strtoupper($key))
{
case "ACTIVE":
if($val == "Y" || $val == "N")
{
$arSqlSearch[] = "L.ACTIVE='".$DB->ForSql($val)."'";
}
break;
case "NAME":
$arSqlSearch[] = "UPPER(L.NAME) LIKE UPPER('".$DB->ForSql($val)."')";
break;
case "ID":
case "LID":
$arSqlSearch[] = "L.LID='".$DB->ForSql($val)."'";
break;
case "CODE":
$arSqlSearch[] = "L.CODE='".$DB->ForSql($val)."'";
break;
}
}
}
}
$strSqlSearch = "";
foreach($arSqlSearch as $condition)
{
$strSqlSearch .= " AND (".$condition.") ";
}
$strSql =
"SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, ".
" C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION ".
"FROM b_language L, b_culture C ".
"WHERE C.ID = L.CULTURE_ID ".
$strSqlSearch;
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 == "code") $strSqlOrder = " ORDER BY L.CODE ";
elseif($by == "def") $strSqlOrder = " ORDER BY L.DEF ";
else
{
$strSqlOrder = " ORDER BY L.SORT ";
}
if($order == "desc")
{
$strSqlOrder .= " desc ";
}
$strSql .= $strSqlOrder;
$res = $DB->Query($strSql);
return $res;
}
public static function GetByID($ID)
{
return CLanguage::GetList('', '', array("LID"=>$ID));
}
public function CheckFields($arFields, $ID = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION, $DB;
$this->LAST_ERROR = "";
$arMsg = array();
if(($ID === false || isset($arFields["LID"])) && mb_strlen($arFields["LID"]) <> 2)
{
$this->LAST_ERROR .= GetMessage("BAD_LANG_LID")." ";
$arMsg[] = array("id"=>"LID", "text"=> GetMessage("BAD_LANG_LID"));
}
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["NAME"]) && mb_strlen($arFields["NAME"]) < 2)
{
$this->LAST_ERROR .= GetMessage("BAD_LANG_NAME")." ";
$arMsg[] = array("id"=>"NAME", "text"=> GetMessage("BAD_LANG_NAME"));
}
if(isset($arFields["SORT"]) && intval($arFields["SORT"]) <= 0)
{
$this->LAST_ERROR .= GetMessage("BAD_LANG_SORT")." ";
$arMsg[] = array("id"=>"SORT", "text"=> GetMessage("BAD_LANG_SORT"));
}
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_language WHERE LID='".$DB->ForSQL($arFields["LID"], 2)."'");
if($r->Fetch())
{
$this->LAST_ERROR .= GetMessage("BAD_LANG_DUP")." ";
$e = new CAdminException(array(array("id"=>"LID", "text" =>GetMessage("BAD_LANG_DUP"))));
$APPLICATION->ThrowException($e);
return false;
}
}
return true;
}
public function Add($arFields)
{
global $DB;
if(!$this->CheckFields($arFields))
return false;
if(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"]!="Y")
$arFields["ACTIVE"]="N";
$arInsert = $DB->PrepareInsert("b_language", $arFields);
if(is_set($arFields, "DEF"))
{
if($arFields["DEF"]=="Y")
$DB->Query("UPDATE b_language SET DEF='N' WHERE DEF='Y'");
else
$arFields["DEF"]="N";
}
$strSql =
"INSERT INTO b_language(".$arInsert[0].") ".
"VALUES(".$arInsert[1].")";
$DB->Query($strSql);
Localization\LanguageTable::cleanCache();
return $arFields["LID"];
}
public function Update($ID, $arFields)
{
global $DB;
unset(CSite::$MAIN_LANGS_CACHE[$ID]);
unset(CSite::$MAIN_LANGS_ADMIN_CACHE[$ID]);
if(!$this->CheckFields($arFields, $ID))
return false;
if(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"]!="Y")
$arFields["ACTIVE"]="N";
if(is_set($arFields, "DEF"))
{
if($arFields["DEF"]=="Y")
$DB->Query("UPDATE b_language SET DEF='N' WHERE DEF='Y'");
else
$arFields["DEF"]="N";
}
$strUpdate = $DB->PrepareUpdate("b_language", $arFields);
$strSql = "UPDATE b_language SET ".$strUpdate." WHERE LID='".$DB->ForSql($ID, 2)."'";
$DB->Query($strSql);
Localization\LanguageTable::cleanCache();
return true;
}
public static function Delete($ID)
{
/** @global CMain $APPLICATION */
global $APPLICATION, $DB;
$db_res = CLang::GetList('', '', array("LANGUAGE_ID" => $ID));
if($db_res->Fetch())
return false;
foreach(GetModuleEvents("main", "OnBeforeLanguageDelete", 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", "OnLanguageDelete", true) as $arEvent)
ExecuteModuleEventEx($arEvent, array($ID));
$res = $DB->Query("DELETE FROM b_language WHERE LID='".$DB->ForSQL($ID, 2)."'", true);
Localization\LanguageTable::cleanCache();
return $res;
}
public static function SelectBox($sFieldName, $sValue, $sDefaultValue="", $sFuncName="", $field="class=\"typeselect\"")
{
$l = CLanguage::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='' ".($found ? "" : "selected").">".htmlspecialcharsex($sDefaultValue)."</option>";
return $s.$s1.'</select>';
}
public static function GetLangSwitcherArray()
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$result = array();
$db_res = Localization\LanguageTable::getList([
'filter' => ['=ACTIVE'=>'Y'],
'order' => ['SORT'=>'ASC'],
'cache' => ['ttl' => 86400],
]);
while($ar = $db_res->fetch())
{
$ar["NAME"] = htmlspecialcharsbx($ar["NAME"]);
$ar["SELECTED"] = ($ar["LID"]==LANG);
global $QUERY_STRING;
$p = rtrim(str_replace("&#", "#", preg_replace("/lang=[^&#]*&*/", "", $QUERY_STRING)), "&");
$ar["PATH"] = $APPLICATION->GetCurPage()."?lang=".$ar["LID"].($p <> ''? '&'.htmlspecialcharsbx($p) : '');
$result[] = $ar;
}
return $result;
}
}
class CLanguage extends CAllLanguage
{
}
class CLangAdmin extends CLanguage
{
}