altfolder_update.html from AlphaMail at Krugle
Show altfolder_update.html syntax highlighted
% # vim:set syntax=mason:
<%args>
$alt_folders
$cancel => 0
</%args>
<%init>
my $user = Apache::SiteControl->getCurrentUser($r);
my $c;
my $p;
my $message = "";
if($cancel) {
$m->redirect('/mail/index.html');
}
eval {
$c = new AlphaMail::Middleware($user->getAttribute('imap'),
$user->getUsername(),
$user->getAttribute('password'), $config);
$p = new AlphaMail::Preferences($user->getUsername(),
$user->getAttribute('imap'), $config);
# Get the old set of alt folders, and see if any of them were special (i.e.
# trash, sent, drafts.
my $trash = $p->get('trash_folder', $config->get("default_trash", 'none'));
my $sent = $p->get('sent_folder', $config->get("default_sent", 'none'));
my $drafts = $p->get('drafts_folder', $config->get("default_drafts", 'none'));
my @old_altfolders = $p->getList('alt_folders');
my @keepers;
push(@keepers, $sent) if(grep /^\Q$sent\E$/, @old_altfolders);
push(@keepers, $trash) if(grep /^\Q$trash\E$/, @old_altfolders);
push(@keepers, $drafts) if(grep /^\Q$drafts\E$/, @old_altfolders);
# Check to make sure these are real folders
my @folders = split /,/, $alt_folders;
$alt_folders = "";
for my $folder (@folders) {
$folder =~ s/^ *//;
$folder =~ s/ *$//;
if($folder =~ m/^\//) {
$message .= "Folder $folder was not saved. Names must not begin with /<br>";
next;
}
if($folder =~ m/^\~[^\/]/) {
$message .= "Folder $folder was not saved. ~ must be followed by /<br>";
next;
}
if($folder =~ m/\.\./) {
$message .= "Folder $folder was not saved. Names must not contain '..'<br>";
next;
}
eval {
$c->getMessageCount($folder);
};
if($@) {
$message .= "$folder was not saved. It was not a selectable folder on the server.<br>";
} else {
$alt_folders .= "$folder,";
}
}
# Check the keepers
for my $f (@keepers) {
$logger->debug("Looking for $f in $alt_folders");
if($alt_folders !~ m/^\Q$f\E,/ && $alt_folders !~ m/,\Q$f\E,/) {
$message .= "$f kept. It is in use.<br>";
$alt_folders .= "$f,";
}
}
$alt_folders =~ s/,$//;
$p->set('alt_folders', $alt_folders);
# Force an update of the session folderlist
$user->setAttribute($r, 'folderlist', '');
$user->setAttribute($r, 'subfolderlist', '');
$message .= "Alternate folders set.<br>";
$c->close();
};
if($@) {
$logger->error("$@");
$message = "Error saving changes: $@<br>";
}
$m->redirect(build_url('/mail/settings/index.html', { selected => 'Folders',
message => $message }));
</%init>
<%once>
use AlphaMail::HTMLHelper qw(build_url);
our $logger = Log::Log4perl->get_logger('alphamail');
</%once>
See more files for this project here