- if (count($metas) != count($msgs)) {
- logger("for " . $mailconf['user'] . " there are ". count($msgs) . " messages but received " . count($metas) . " metas", LOGGER_DEBUG);
- } else {
- $msgs = array_combine($msgs, $metas);
-
- foreach ($msgs as $msg_uid => $meta) {
- logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
-
- $datarray = [];
- $datarray['verb'] = ACTIVITY_POST;
- $datarray['object-type'] = ACTIVITY_OBJ_NOTE;
- $datarray['network'] = Protocol::MAIL;
- // $meta = Email::messageMeta($mbox, $msg_uid);
-
- $datarray['uri'] = Email::msgid2iri(trim($meta->message_id, '<>'));
-
- // Have we seen it before?
- $fields = ['deleted', 'id'];
- $condition = ['uid' => $importer_uid, 'uri' => $datarray['uri']];
- $item = Item::selectFirst($fields, $condition);
- if (DBA::isResult($item)) {
- logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user']." UID: ".$importer_uid." URI: ".$datarray['uri'],LOGGER_DEBUG);
-
- // Only delete when mails aren't automatically moved or deleted
- if (($mailconf['action'] != 1) && ($mailconf['action'] != 3))
- if ($meta->deleted && ! $item['deleted']) {
- $fields = ['deleted' => true, 'changed' => DateTimeFormat::utcNow()];
- Item::update($fields, ['id' => $item['id']]);
- }
-
- switch ($mailconf['action']) {
- case 0:
- logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", LOGGER_DEBUG);
- break;
- case 1:
- logger("Mail: Deleting ".$msg_uid." for ".$mailconf['user']);
- imap_delete($mbox, $msg_uid, FT_UID);
- break;
- case 2:
- logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf['user']);
- imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
- break;
- case 3:
- logger("Mail: Moving ".$msg_uid." to ".$mailconf['movetofolder']." for ".$mailconf['user']);
- imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
- if ($mailconf['movetofolder'] != "") {
- imap_mail_move($mbox, $msg_uid, $mailconf['movetofolder'], FT_UID);
- }
- break;
- }
- continue;
- }