1 package SL::BackgroundJob::SyncEmailFolder;
6 use parent qw(SL::BackgroundJob::Base);
8 use Params::Validate qw(:all);
11 use SL::DB::Manager::EmailImport;
13 sub sync_email_folder {
15 my $folder = $self->{job_obj}->data_as_hash->{folder};
17 my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}});
19 my $email_import = $imap_client->update_emails_from_folder(
22 return unless $email_import;
24 return "Created email import: " . $email_import->id;
27 sub delete_email_imports {
29 my $job_obj = $self->{job_obj};
31 my $email_import_ids_to_delete =
32 $job_obj->data_as_hash->{email_import_ids_to_delete} || [];
34 my @deleted_email_imports_ids;
35 foreach my $email_import_id (@$email_import_ids_to_delete) {
36 my $email_import = SL::DB::Manager::EmailImport->find_by(id => $email_import_id);
37 next unless $email_import;
38 $email_import->delete(cascade => 1);
39 push @deleted_email_imports_ids, $email_import_id;
41 return unless @deleted_email_imports_ids;
43 return "Deleted email import(s): " . join(', ', @deleted_email_imports_ids);
47 my ($self, $job_obj) = @_;
48 $self->{job_obj} = $job_obj;
49 my @bj_data = $job_obj->data_as_hash;
57 email_import_ids_to_delete => {
62 called => "data filed in Background Job",
66 push @results, $self->delete_email_imports();
67 push @results, $self->sync_email_folder();
69 return join(". ", grep { $_ ne ''} @results);
80 SL::BackgroundJob::SyncEmailFolder - Background job for syncing emails from a folder
84 This background job is used to sync emails from a folder. It can be used to sync
85 emails from a folder on a regular basis for multiple folders. The folder to sync
86 is specified in the data field 'folder' of the background job, by default the
87 folder 'base_folder' from IMAP client is used. Sub folders are separated by a
88 forward slash, e.g. 'INBOX/Archive'. Subfolders are not synced.
96 Tamino Steinert E<lt>tamino.steinert@tamino.stE<gt>