package users::UserProfile;
use base "Contenido::Document";
use Digest::MD5;
use Contenido::Globals;
sub extra_properties
{
return (
{ 'attr' => 'status', 'type' => 'status', 'rusname' => 'Статус пользователя',
'cases' => [
[0, 'Блокированный'],
[1, 'Активный'],
[2, 'Платный'],
[3, 'Свой/сотрудник'],
[4, 'VIP'],
[5, 'Временная активация'],
],
},
{ 'attr' => 'visibility', 'type' => 'status', 'rusname' => 'Область видимости',
'cases' => [
[0, 'Данные моего аккаунта видны только мне'],
[1, 'Данные моего аккаунта видны всем'],
[2, 'Данные моего аккаунта видны друзьям'],
[3, 'Данные моего аккаунта видны друзьям и членам клубов'],
],
},
{ 'attr' => 'country', 'type' => 'string', 'rusname' => 'Страна' },
{ 'attr' => 'passwd', 'type' => 'password', 'rusname' => 'Пароль', 'rem' => '(<font color="red">Не отображается. Указывать при создании и для изменения</font>)' },
{ 'attr' => 'confirm', 'type' => 'string', 'rusname' => 'Код подтверждения', hidden => 1 },
{ 'attr' => 'secmail', 'type' => 'string', 'rusname' => 'E-mail (secondary)' },
{ 'attr' => 'q1', 'type' => 'string', 'rusname' => 'Контрольный вопрос 1' },
{ 'attr' => 'a1', 'type' => 'string', 'rusname' => 'Контрольный ответ 1' },
{ 'attr' => 'q2', 'type' => 'string', 'rusname' => 'Контрольный вопрос 2' },
{ 'attr' => 'a2', 'type' => 'string', 'rusname' => 'Контрольный ответ 2' },
{ 'attr' => 'account', 'type' => 'string', 'rusname' => 'Сумма на счете' },
{ 'attr' => 'interests', 'type' => 'text', 'rusname' => 'Жизненные интересы', rows => 10 },
{ 'attr' => 'origin', 'type' => 'text', 'rusname' => 'Ориджин', rows => 4 },
{ 'attr' => 'avatar', 'type' => 'image', 'rusname' => 'Аватар', preview => ['32x32','100x100','120x120','160x160'] },
)
}
sub class_name
{
return 'Профиль пользователя';
}
sub class_description
{
return 'Профиль пользователя';
}
sub search_fields
{
return ('email', 'name', 'login');
}
sub class_table
{
return 'users::SQL::UserProfile';
}
sub contenido_status_style
{
my $self = shift;
if ( $self->status == 2 ) {
return 'color:green;';
} elsif ( $self->status == 3 ) {
return 'color:olive;';
} elsif ( $self->status == 4 ) {
return 'color:green;';
} elsif ( $self->status == 5 ) {
return 'color:red;';
}
}
sub pre_store
{
my $self = shift;
my $up = $self->{keeper}->get_document_by_id ( $self->id,
class => $self->class,
);
if ( (ref $up && $self->passwd && $self->passwd ne $up->passwd) || (!ref $up && $self->passwd) ) {
warn "Pass = ".$self->passwd."\n" if $DEBUG;
my $pass = Digest::MD5::md5_hex($self->passwd);
warn "Pass_hex = $pass\n" if $DEBUG;
$self->passwd($pass);
} elsif ( ref $up && (!$self->passwd || $self->passwd eq $up->passwd ) ) {
$self->passwd($up->passwd);
}
$self->email(lc($self->email));
$self->login(lc($self->login));
my $default_section = $project->s_alias->{users} if ref $project->s_alias eq 'HASH' && exists $project->s_alias->{users};
if ( $default_section ) {
my $sections = $self->{sections};
if ( ref $sections eq 'ARRAY' && scalar @$sections ) {
my @new_sects = grep { $_ != $default_section } @$sections;
push @new_sects, $default_section;
$self->sections(@new_sects);
} elsif ( $sections && !ref $sections && $sections != $default_section ) {
my @new_sects = ($default_section, $sections);
$self->sections(@new_sects);
} else {
$self->sections($default_section);
}
}
return 1;
}
1;