Revision 466 (by ahitrov, 2014/12/18 10:27:31) username methods
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;