Программирование

Материал из NoDeny Plus
Перейти к: навигация, поиск

Данный раздел не закончен и предназначен для версии NoDeny Next

Работа с данными пользователя

Пример 1

Require_web_mod('Data');
my $user_data = UserData->get(1);
my $field = $user_data->get_field('fio');
$field->new_value('Илья Крутой');
$fields->save({ logging=>1 });
UserData->get Получили данные юзера с id=1
$user_data->get_field получение поля с именем fio
$field->new_value установка нового значения поля fio
fields->save запись нового значения поля fio в базу данных

Пример 2

Require_web_mod('Data');
my $user_data = UserData->get(1);
foreach my $field( $user_data->only_enabled_fields() )
{
   Show( $field->{title}.' = '.$field->show().'<br>');
}
UserData->get Получили данные юзера с id=1
$user_data->only_enabled_fields получаем все поля юзера
Show выводим поочередно имя поля и значение

Детальнее

Получение данных пользователя

UserData->get(uid, [tables]);

Параметры:

uid обязательный id юзера
tables необязательный список таблиц, из которых брать данные: u - основные данные, d - дополнительные. Если не задан данные берутся из таблиц u и d.

Пример:

UserData->get(123, ['d']);

Получаем только допданные, т.е поля name, fio, balance будут недоступны.

Получение поля из данных пользователя

user_data->get_field(field_name);

а также

user_data->get_field_if_enabled(field_name);

Отличие get_field и get_field_if_enabled. Поле может существовать в одной группе и отсутствовать в другой -в допполях ставится галка в каких группах оно актуально. Также, в основных данных, например у оборудования не может быть ФИО. get_field_if_enabled проверяет есть ли данное поле у юзера и возвращает undef вместо поля если доступа нет.

Пример:

my $user_data = UserData->get(123);
my $phone_field = $user_data->get_field_if_enabled('_adr_phone') or Error('У данной учетной записи не может быть телефон');
Show $phone_field->show();