/
bitrix-dev
/
Starter-kit
Обзор
Документация
Войти
/
bitrix-dev
/
Starter-kit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
local/php_interface/classes/SiteOption.php
207 строк
6 KB
Alexey Karizhenskiy
Первая сборка (из ранее используемого)
19 янв 2026, 21:00
19 янв 2026, 21:00
d843e36
Код
Авторство
О чём код?
<?php use \Bitrix\Main\Loader; use \Fi1a\UserSettings\Option; /** * Используется для работы модуль fi1a.usersettings * https://marketplace.1c-bitrix.ru/solutions/fi1a.usersettings/ * https://github.com/fi1a/usersettings * * По необходимости можно заменить на другой... */ class SiteOption { // Статичное свойство для хранения экземпляра класса private static $instance; /** * Массив для сопоставления кодов полей с их реальными именами * @var string[] */ public static array $arFields = [ 'EMAIL' => 'UF_EMAIL', 'PHONE' => 'UF_PHONE', 'LINK_TELEGRAM' => 'UF_LINK_TELEGRAM', 'LINK_VK' => 'UF_LINK_VK', 'SMARTCAPTCHA_PUBLIC_KEY' => 'UF_SMARTCAPTCHA_PKEY', 'SMARTCAPTCHA_SECRET_KEY' => 'UF_SMARTCAPTCHA_SKEY', 'MIN_ORDER_SUM' => 'UF_MIN_ORDER_SUM', ]; /** * @throws \Bitrix\Main\LoaderException */ private function __construct() { // Подключаем модуль fi1a.usersettings Loader::includeModule('fi1a.usersettings'); } /** * @return self */ public static function getInstance(): SiteOption { if (self::$instance === null) { // Создаем новый экземпляр, если он не существует self::$instance = new self(); } return self::$instance; } /** * Метод для предотвращения клонирования объекта * @return void */ private function __clone() { } /** * Метод для предотвращения десериализации объекта * @return void */ private function __wakeup() { } /** * Метод для получения значения опции по коду * @param string $code * @param string $default * @param bool $isOrigin * @return mixed */ public static function get(string $code, string $default = null, bool $isOrigin = false): mixed { if (!class_exists(Option::class)) return $default; $instance = self::getInstance(); if (!$isOrigin) { if (array_key_exists($code, $instance::$arFields)) { $code = $instance::$arFields[$code]; } } // Возвращаем значение опции return Option::getInstance()->get($code, $default); } /** * Метод для получения основных контактов (телефон, почта) * @return array */ public static function getContacts(): array { $instance = self::getInstance(); $arResult = []; $arFields = [ 'EMAIL' => 'Email', 'PHONE' => 'Телефон', ]; foreach ($arFields as $field => $title) { $value = $instance::get($field); if (!empty($value)) { $url = ''; if ('EMAIL' === $field) { $url = 'mailto:' . $value; } elseif ('PHONE' === $field) { $url = 'tel:' . (substr($value, 0, 1) === '7' ? '+' : '') . preg_replace('/[^0-9]/', '', $value); } $arResult[$field] = [ 'title' => $title, 'value' => $value, 'url' => $url, ]; } } return $arResult; } /** * Метод для получения социальных сетей * @return array */ public static function getSocials(): array { $instance = self::getInstance(); $arResult = []; $arFields = [ 'LINK_TELEGRAM' => 'Telegram', 'LINK_VK' => 'ВКонтакте', ]; foreach ($arFields as $field => $title) { $value = $instance::get($field); if (!empty($value)) { $arResult[$field] = [ 'title' => $title, 'value' => $value, ]; } } return $arResult; } /** * Метод для получения информации о мобильном приложении * @return array */ public static function getAppInfo(): array { $instance = self::getInstance(); $arResult = []; $imgId = $instance::get('UF_APP_IMG'); if (!empty($imgId)) { $arFile = \CFile::GetFileArray($imgId); if (!empty($arFile)) { $arResult['IMAGE'] = $arFile['SRC']; } } $mess = $instance::get('UF_APP_MESS'); if (!empty($mess)) { $arResult['MESSAGE'] = $mess; } $arFields = [ 'APP_APPLE_STORE' => 'Apple Store', 'APP_GOOGLE_PLAY' => 'Google Play', ]; foreach ($arFields as $field => $title) { $value = $instance::get($field); if (!empty($value)) { $arResult['LINKS'][$field] = [ 'title' => $title, 'value' => $value, ]; } } return $arResult; } /** * Метод для получения всех опций * @return array */ public static function getAll(): array { if (!class_exists(Option::class)) return []; $instance = self::getInstance(); // Возвращаем все опции return Option::getInstance()->getAll(); } }