Revision 195 (by ahitrov, 2012/03/15 18:26:13) Users plugin
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 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;