Классы и события
81 / 177
Чтение настройки 

Для того, чтобы просто получить значение настройки в своем коде, достаточно вызвать обычную функцию для получения опции. Модуль askaron.settings подключать не надо. 

<?echo COption::GetOptionString( "askaron.settings", "UF_PHONE" );?>

Значение настройки будет извлечено не из таблицы опций, а из таблицы дополнительных пользовательских полей. 

Значения настроек кешируются. При повторном обращении к настройкам они будут извлекаться из кеша гораздо быстрее. 



Ограничения 

Длина пользовательского поля ограничена колонкой таблицы базы данных, в которой это значение хранится. Для текстовых полей MySQL это тип TEXT на 64 килобайта. Ничто не мешает в случае чего сделать тип колонки LONG_TEXT на 4 гигабайта. 

Если у вас множественное поле, то общая его длина ограничена размером колонки типа TEXT (можно сделать LONG_TEXT). Но длина одного значения множественного поля всего 2000 символов. Обязательно учитывайте это обстоятельство при проектировании. Это ограничение системы Битрикс для множественных пользовательских полей. 


Класс CAskaronSettings

Функция
array CAskaronSettings::GetFields() 


Функция возвращает массив значений всех пользовательских настроек 

<?
if(CModule::IncludeModule("askaron.settings"))
{
    $arFields = CAskaronSettings::GetFields();
}
?>



Функция
void CAskaronSettings::ClearCache() 


Функция очищает кеш значений всех пользовательских настроек 

<?
if(CModule::IncludeModule("askaron.settings"))
{
    CAskaronSettings::ClearCache();
}
?>


Функция
boolean CAskaronSettings::Update( array $arFields ) 


Функция записывает значения пользовательских настроек.

Возвращает значение true, если всё хорошо, и false, если произошла ошибка.

<?
if ( CModule::IncludeModule("askaron.settings") )
{
    $arUpdateFields = array(
        "UF_PHONE" => "+7 (863) 292-41-62",
    );

    $obSettings = new CAskaronSettings;
    $res = $obSettings->Update( $arUpdateFields );
    if ( $res )
    {
        echo "Поля записаны успешно";
    }
    else
    {
        echo $obSettings->LAST_ERROR;
    }
}
?>



События OnBeforeSettingsUpdate и OnAfterSettingsUpdate 

События OnBeforeSettingsUpdate и OnAfterSettingsUpdate вызываются в методе CAskaronSettings::Update()

Функция-обработчик имеет параметр &$arFields.

Если функция-обработчик для события OnBeforeSettingsUpdate вернет false, то запись значений не произойдет.

Пример: 

<?
// в /bitrix/php_interface/dbconn.php
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_65456.txt");

// в /bitrix/php_interface/init.php
AddEventHandler("askaron.settings", "OnBeforeSettingsUpdate", array( "CMyClass", "OnBeforeSettingsUpdateHandler" ) );
AddEventHandler("askaron.settings", "OnAfterSettingsUpdate", array( "CMyClass", "OnAfterSettingsUpdateHandler" ) );


class CMyClass
{
    public static function OnBeforeSettingsUpdateHandler( &$arFields )
    {
        if ( isset( $arFields["UF_PHONE"] ) && strlen( $arFields["UF_PHONE"] ) == 0 )
        {
            global $APPLICATION;
            $APPLICATION->throwException("Телефон не может быть пустым");
            return false;
        }
    }

    public static function OnAfterSettingsUpdateHandler( &$arFields )
    {
        // получить массив всех новых значений, которые записались
        $arFields = CAskaronSettings::GetFields();

        // записать массив значений в лог-файл
        AddMessage2Log( print_r($arFields, true) );
    }
}
?>  

0  


 Описание модуля | Описание курса | Дополнительные пользовательские поля. Аскарон