• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/smile.php
  • Класс: CSmile
  • Вызов: CSmile::update
static function update($id, $arFields)
{
	// TODO
	global $DB, $CACHE_MANAGER;

	$id = intval($id);
	if (!self::checkFields($arFields, self::CHECK_TYPE_UPDATE))
		return false;

	$arUpdate = Array();

	if (isset($arFields['TYPE']))
		$arUpdate['TYPE'] = "'".$arFields['TYPE']."'";

	if (isset($arFields['SET_ID']))
		$arUpdate['SET_ID'] = intval($arFields['SET_ID']);

	if (isset($arFields['SORT']))
		$arUpdate['SORT'] = intval($arFields['SORT']);

	if (isset($arFields['IMAGE']))
	{
		$arUpdate['IMAGE'] = "'".$DB->ForSql($arFields['IMAGE'])."'";
		$arUpdate['IMAGE_WIDTH'] = intval($arFields['IMAGE_WIDTH']);
		$arUpdate['IMAGE_HEIGHT'] = intval($arFields['IMAGE_HEIGHT']);

		if (isset($arFields['IMAGE_DEFINITION']))
		{
			$arUpdate['IMAGE_DEFINITION'] = "'".$DB->ForSql($arFields['IMAGE_DEFINITION'])."'";
			if ($arFields['IMAGE_DEFINITION'] == self::IMAGE_UHD)
			{
				$arUpdate['IMAGE_WIDTH'] = $arUpdate['IMAGE_WIDTH']/4;
				$arUpdate['IMAGE_HEIGHT'] = $arUpdate['IMAGE_HEIGHT']/4;
			}
			else if ($arFields['IMAGE_DEFINITION'] == self::IMAGE_HD)
			{
				$arUpdate['IMAGE_WIDTH'] = $arUpdate['IMAGE_WIDTH']/2;
				$arUpdate['IMAGE_HEIGHT'] = $arUpdate['IMAGE_HEIGHT']/2;
			}
		}
	}

	if (isset($arFields['TYPING']))
		$arUpdate['TYPING'] = "'".$DB->ForSql($arFields['TYPING'])."'";

	if (isset($arFields['CLICKABLE']))
		$arUpdate['CLICKABLE'] = "'".$arFields['CLICKABLE']."'";

	if (isset($arFields['HIDDEN']))
		$arUpdate['HIDDEN'] = "'".$arFields['HIDDEN']."'";

	if (!empty($arUpdate))
		$DB->Update("b_smile", $arUpdate, "WHERE ID = ".intval($id));

	if (isset($arFields['LANG']))
	{
		$arLang = Array();
		if (is_array($arFields['LANG']))
			$arLang = $arFields['LANG'];
		else
			$arLang[LANG] = $arFields['LANG'];

		foreach ($arLang as $lang => $name)
		{
			if (trim($name) <> '')
			{
				$DB->Query("DELETE FROM b_smile_lang WHERE TYPE = '".self::TYPE_SMILE."' AND SID = ".$id." AND LID = '".$DB->ForSql(htmlspecialcharsbx($lang))."'", true);
				$arInsert = array(
					'TYPE' => self::TYPE_SMILE,
					'SID' => $id,
					'LID' => htmlspecialcharsbx($lang),
					'NAME' => trim($name),
				);
				$DB->Add("b_smile_lang", $arInsert);
			}
		}
	}

	self::setLastUpdate();
	$CACHE_MANAGER->CleanDir("b_smile");

	return true;
}