• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_type.php
  • Класс: CCalendarType
  • Вызов: CCalendarType::Edit
static function Edit($params)
{
	global $DB;
	$arFields = $params['arFields'];
	$XML_ID = preg_replace("/[^a-zA-Z0-9_]/i", "", $arFields['XML_ID']);
	$arFields['XML_ID'] = $XML_ID;
	if (!isset($arFields['XML_ID']) || $XML_ID == "")
	{
		return false;
	}

	//return $APPLICATION->ThrowException(GetMessage("EC_ACCESS_DENIED"));

	$access = $arFields['ACCESS'];
	unset($arFields['ACCESS']);

	if (count($arFields) > 1) // We have not only XML_ID
	{
		if ($params['NEW']) // Add
		{
			$strSql = "SELECT * FROM b_calendar_type WHERE XML_ID='".$DB->ForSql($XML_ID)."'";
			$res = $DB->Query($strSql, false, __LINE__);
			if (!($arRes = $res->Fetch()))
			{
				$arInsert = $DB->PrepareInsert("b_calendar_type", $arFields);
				$strSql ="INSERT INTO b_calendar_type(".$arInsert[0].") VALUES(".$arInsert[1].")";
				$DB->Query($strSql);
			}
			else
			{
				false;
			}
		}
		else // Update
		{
			unset($arFields['XML_ID']);
			if (!empty($arFields))
			{
				$strUpdate = $DB->PrepareUpdate("b_calendar_type", $arFields);
				$strSql =
					"UPDATE b_calendar_type SET ".
					$strUpdate.
					" WHERE XML_ID='".$DB->ForSql($XML_ID)."'";
				$DB->QueryBind($strSql, array('DESCRIPTION' => $arFields['DESCRIPTION']));
			}
		}
	}

	//SaveAccess
	$accessController = new TypeAccessController(CCalendar::GetUserId());
	$typeModel = TypeModel::createFromXmlId($arFields['XML_ID']);

	if (is_array($access) && $accessController->check(ActionDictionary::ACTION_TYPE_ACCESS, $typeModel))
	{
		self::SavePermissions($XML_ID, $access);
	}

	CCalendar::ClearCache('type_list');
	return $XML_ID;
}