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, '���������� ������������'],
[5, '��������� ���������'],
],
},
{ 'attr' => 'visibility', 'type' => 'status', 'rusname' => '������� ���������',
'cases' => [
[0, '������ ����� �������� ����� ������ ���'],
[1, '������ ����� �������� ����� ����'],
[2, '������ ����� �������� ����� �������'],
[3, '������ ����� �������� ����� ������� � ������ ������'],
],
},
{ 'attr' => 'country', 'type' => 'string', 'rusname' => '������' },
{ 'attr' => 'region', '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 name_full
{
my $self = shift;
my $name = $self->name;
if ( $name =~ /^(.*?),[\ \t]+(.*)$/ ) {
$name = $2.' '.$1;
}
return $name;
}
sub name_part
{
my $self = shift;
my $name = $self->name;
if ( $name =~ /^(.*?),[\ \t]+(.*)$/ ) {
$name = $2;
} else {
my @parts = split /\s+/, $name;
if ( @parts > 1 ) {
pop @parts;
}
$name = join ' ', @parts;
}
return $name;
}
sub name_family
{
my $self = shift;
my $name = $self->name;
if ( $name =~ /^(.*?),[\ \t]+(.*)$/ ) {
$name = $1;
} else {
my @parts = split /\s+/, $name;
if ( @parts > 1 ) {
$name = pop @parts;
}
}
return $name;
}
sub name_first
{
my $self = shift;
my @name = split /\s+/, $self->name_part;
return $name[0];
}
sub name_middle
{
my $self = shift;
my @name = split /\s+/, $self->name_part;
shift @name if @name;
my $name = @name ? join (' ', @name) : '';
return $name;
}
sub class_name
{
return '������� ������������';
}
sub class_description
{
return '������� ������������';
}
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 = $keeper->get_document_by_id ( $self->id,
class => 'users::UserProfile'
);
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;