- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/config/option.php
- Класс: BitrixMainConfigOption
- Вызов: Option::set
static function set($moduleId, $name, $value = "", $siteId = "")
{
if ($moduleId == '')
{
throw new MainArgumentNullException("moduleId");
}
if ($name == '')
{
throw new MainArgumentNullException("name");
}
if (mb_strlen($name) > 100)
{
trigger_error("Option name {$name} will be truncated on saving.", E_USER_WARNING);
}
if ($siteId === false)
{
$siteId = static::getDefaultSite();
}
$con = MainApplication::getConnection();
$sqlHelper = $con->getSqlHelper();
$updateFields = [
"VALUE" => $value,
];
if($siteId == "")
{
$insertFields = [
"MODULE_ID" => $moduleId,
"NAME" => $name,
"VALUE" => $value,
];
$keyFields = ["MODULE_ID", "NAME"];
$sql = $sqlHelper->prepareMerge("b_option", $keyFields, $insertFields, $updateFields);
}
else
{
$insertFields = [
"MODULE_ID" => $moduleId,
"NAME" => $name,
"SITE_ID" => $siteId,
"VALUE" => $value,
];
$keyFields = ["MODULE_ID", "NAME", "SITE_ID"];
$sql = $sqlHelper->prepareMerge("b_option_site", $keyFields, $insertFields, $updateFields);
}
$con->queryExecute(current($sql));
static::clearCache($moduleId);
static::loadTriggers($moduleId);
$event = new MainEvent(
"main",
"OnAfterSetOption_".$name,
array("value" => $value)
);
$event->send();
$event = new MainEvent(
"main",
"OnAfterSetOption",
array(
"moduleId" => $moduleId,
"name" => $name,
"value" => $value,
"siteId" => $siteId,
)
);
$event->send();
}