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 )