App-Office-Contacts

 view release on metacpan or  search on metacpan

lib/App/Office/Contacts/View/Person.pm  view on Meta::CPAN


} # End of build_update_html.

# -----------------------------------------------

sub format_search_result
{
	my($self, $name, $people) = @_;

	$self -> db -> logger -> log(debug => "View::Person.format_search_result($name, @{[scalar @$people]})");

	my(@row);

	if ($name && ($#$people >= 0) )
	{
		my($previous_surname) = '';
		my($sid)              = $self -> db -> session -> id;

		my($email, $email_address);
		my($i);
		my($person, $phone);

		for $person (@$people)
		{
			$name = $$person{name};

			for $i (0 .. $#{$$person{email_phone} })
			{
				$email         = $$person{email_phone}[$i]{email};
				$email_address = $$email{address} ? qq|<a href="mailto:$$email{address}">$$email{address}</a>| : '';
				$phone         = $$person{email_phone}[$i]{phone};

				push @row,
				{
					email       => $email_address,
					email_type  => $$email{type_name},
					given_names => $$person{given_names},
					id          => $$person{id},
					name        => $name ? qq|<a href="#" onClick="display_person($$person{id}, '$sid')">$name</a>| : '-',
					phone       => $$phone{number},
					phone_type  => $$phone{type_name},
					role        => $name ? $self -> db -> library -> get_role_via_id($$person{role_id}) : '-',
					surname     => $previous_surname eq $$person{surname} ? '' : $$person{surname},
					type        => 'Person', # Not $i == 0 ? 'Person' : '-', which sorts '-' first :-(.
				};

				# Blanking out the names means they are not repeated in the output (HTML) table.

				$name             = '';
				$previous_surname = $$person{surname};
			}
		}
	}

	return [@row];

} # End of format_search_result.

# -----------------------------------------------

sub update
{
	my($self, $user_id, $result) = @_;

	$self -> db -> logger -> log(debug => "View::Person.update($user_id, ...)");

	# Force the user_id into the person's record, so it is available elsewhere.
	# Note: This is the user_id of the person logged on.

	my($person)          = {};
	$$person{creator_id} = $user_id;
	$$person{id}         = $result -> get_value('person_id');

	for my $field_name ($result -> valids)
	{
		$$person{$field_name} = $result -> get_value($field_name) || '';
	}

	# Force the Name to match "Given name(s)<1 space>Surname".
	# There is no 'if' because there is no input field for 'name'.

	$$person{name} = "$$person{given_names} $$person{surname}";

	# Force an empty Preferred name to match the Given name(s).

	if (! $$person{preferred_name})
	{
		$$person{preferred_name} = $$person{given_names};
	}

	$self -> db -> logger -> log(debug => '-' x 50);
	$self -> db -> logger -> log(debug => "Updating person $$person{name}...");
	$self -> db -> logger -> log(debug => "$_ => $$person{$_}") for sort keys %$person;
	$self -> db -> logger -> log(debug => '-' x 50);

	$self -> db -> person -> update($person);

} # End of update.

# -----------------------------------------------

1;

=head1 NAME

App::Office::Contacts::View::Person - A web-based contacts manager

=head1 Synopsis

See L<App::Office::Contacts/Synopsis>.

=head1 Description

L<App::Office::Contacts> implements a utf8-aware, web-based, private and group contacts manager.

=head1 Distributions

See L<App::Office::Contacts/Distributions>.

=head1 Installation



( run in 0.762 second using v1.01-cache-2.11-cpan-99c4e6809bf )