Show import_imho.html syntax highlighted
% # vim:set syntax=mason:
<%args>
$cancel => 0
</%args>
<%init>
if($cancel) {
$m->redirect("$base/mail/index.html");
}
my $user = Apache2::SiteControl->getCurrentUser($r);
my $dir = $config->get("message_tmpdir", '/tmp');
my ($c, $headers, $message, $folder, $entity, $ab);
my $parser = new MIME::Parser;
my $book = new AlphaMail::AddressBook($user->getUsername(), $user->getAttribute('mx'), $config);
eval {
local $" = ",";
$c = new AlphaMail::Middleware($user->getAttribute('imap'),
$user->getUsername(),
$user->getAttribute('password'),
$config);
$headers = $c->getMessageHeaders('mail/.imhoprefs', 1, 1, 'date');
$message = $c->getMessage('mail/.imhoprefs', $headers->[0]{uid}, $headers->[0]{uidvalidity}, $config->getScratchDir($user));
$parser->output_dir($dir);
$parser->output_prefix($user->getUsername());
$parser->decode_headers(0);
$parser->ignore_errors(0);
$entity = $parser->parse_open("<$message");
$ab = get_addresses($entity);
for my $k (sort keys %$ab) {
for my $a (@{$ab->{$k}}) {
my $nm = "";
$nm = $k if(@{$ab->{$k}} == 1);
$book->add_address($nm, $a);
}
$book->add_list($k, "@{$ab->{$k}}") if(@{$ab->{$k}} > 1);
}
$book->save;
$c->close;
$message = "Your address book was successfully imported.";
};
if($@) {
$logger->error("failed: $@");
$message = "Error. Could not import old address book: $@";
}
$m->redirect(build_url("$base/mail/addressbook/index.html", { selected => 'Contacts',
message => $message }));
</%init>
<%once>
use AlphaMail::HTMLHelper qw(build_url);
use AlphaMail::AddressBook;
our $logger = Log::Log4perl->get_logger('alphamail');
our $base = $config->get('base_uri');
sub get_addresses
{
my $entity = shift;
my $result = {};
my $foundit = 0;
my $name;
my $addresses;
my @addrs;
my $path = $entity->bodyhandle->path;
open DATA, "<$path" or die "Could not open $path";
while(<DATA>) {
$logger->debug($_);
last if $foundit && m/^#/;
$foundit = 1 if m/^#addressbook/;
next if !$foundit;
next if !m/(?:#addressbook\s*=\s*)?([^:]*):(.*)$/i;
$name = $1;
$addresses = $2;
$logger->debug("name: $name, addrs: $addresses");
$addresses =~ s/\s*//g;
$addresses =~ s/\Q<br>\E$//;
@addrs = split /,/, $addresses;
$result->{$name} = [ @addrs ];
}
return $result;
}
</%once>
See more files for this project here