use Bitrix\Main\Loader; IncludeModuleLangFile(__FILE__); $GLOBALS['YANDEX_MAP_PROPERTY'] = array(); abstract class CIBlockPropertyMapInterface { abstract public static function GetUserTypeDescription(); abstract public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName); public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName) { return $value['VALUE']; } abstract public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName); public static function ConvertFromDB($arProperty, $value) { $arResult = array('VALUE' => ''); if ($value['VALUE'] <> '') { $arCoords = explode(',', $value['VALUE'], 2); $lat = doubleval($arCoords[0]); $lng = doubleval($arCoords[1]); if ($lat && $lng) $arResult['VALUE'] = $lat.','.$lng; } return $arResult; } public static function ConvertToDB($arProperty, $value) { $arResult = array('VALUE' => ''); if ($value['VALUE'] <> '') { $arCoords = explode(',', $value['VALUE'], 2); $lat = doubleval($arCoords[0]); $lng = doubleval($arCoords[1]); if ($lat && $lng) $arResult['VALUE'] = $lat.','.$lng; } return $arResult; } public static function _GetMapKey($map_type, &$strDomain) { $MAP_KEY = ''; $strMapKeys = COPtion::GetOptionString('fileman', 'map_'.$map_type.'_keys'); $strDomain = $_SERVER['HTTP_HOST']; $wwwPos = mb_strpos($strDomain, 'www.'); if ($wwwPos === 0) $strDomain = mb_substr($strDomain, 4); if ($strMapKeys) { $arMapKeys = unserialize($strMapKeys, ['allowed_classes' => false]); if (array_key_exists($strDomain, $arMapKeys)) $MAP_KEY = $arMapKeys[$strDomain]; } return $MAP_KEY; } } class CIBlockPropertyMapGoogle extends CIBlockPropertyMapInterface { public static function GetUserTypeDescription() { return array( "PROPERTY_TYPE" => "S", "USER_TYPE" => "map_google", "DESCRIPTION" => GetMessage("IBLOCK_PROP_MAP_GOOGLE"), "GetPropertyFieldHtml" => array(__CLASS__,"GetPropertyFieldHtml"), "GetPublicViewHTML" => array(__CLASS__,"GetPublicViewHTML"), "ConvertToDB" => array(__CLASS__,"ConvertToDB"), "ConvertFromDB" => array(__CLASS__,"ConvertFromDB"), "GetSettingsHTML" => array(__CLASS__, "GetSettingsHTML"), "PrepareSettings" => array(__CLASS__, "PrepareSettings"), 'GetUIEntityEditorProperty' => array(__CLASS__, 'GetUIEntityEditorProperty'), 'GetUIEntityEditorPropertyEditHtml' => array(__CLASS__, 'GetUIEntityEditorPropertyEditHtml'), 'GetUIEntityEditorPropertyViewHtml' => array(__CLASS__, 'GetUIEntityEditorPropertyViewHtml'), ); } public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields) { $arPropertyFields = array( 'HIDE' => array('ROW_COUNT', 'COL_COUNT', 'SMART_FILTER', 'FILTRABLE', 'SEARCHABLE', 'WITH_DESCRIPTION'), 'SET' => array('SMART_FILTER' => 'N', 'FILTRABLE' => 'N', 'SEARCHABLE' => 'N') ); $settings = \CIBlockPropertyMapGoogle::PrepareSettings($arProperty); $settings = $settings['USER_TYPE_SETTINGS']; $apiKey = isset($settings['API_KEY']) ? htmlspecialcharsbx($settings['API_KEY']) : ''; return '