/** * do daily cleanup script * * @param null * @return null */ function incoming_mail_handle_on_daily() { // remove activity log entries that are older than 30 days IncomingMailActivityLogs::delete(array('created_on < ?', new DateTimeValue('-30 days'))); }
/** * Page which displays mailbox activity history * * @param void * @return void */ function view_mailbox() { if ($this->active_mailbox->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if use_model('incoming_mail_activity_logs', INCOMING_MAIL_MODULE); $this->wireframe->addBreadCrumb(clean($this->active_mailbox->getDisplayName()), $this->active_mailbox->getViewUrl()); $per_page = 50; // mailbox activity per page $page = (int) $this->request->get('page'); if ($page < 1) { $page = 1; } // if $only_problematic = (bool) array_var($_GET, 'only_problematic', false); if ($only_problematic) { list($activity_history, $pagination) = IncomingMailActivityLogs::paginateConflictsByMailbox($this->active_mailbox, $page, $per_page); } else { list($activity_history, $pagination) = IncomingMailActivityLogs::paginateByMailbox($this->active_mailbox, $page, $per_page); } // if $activity_history = group_by_date($activity_history); $this->smarty->assign(array('activity_history' => $activity_history, 'pagination' => $pagination, 'only_problematic' => $only_problematic)); }
/** * Open's connection to mailboxes and download emails with limit of $max_emails * * @param array $mailboxes * @param integer $max_emails */ function importEmails(&$mailboxes, $max_emails = 20) { use_model('incoming_mail_activity_logs', INCOMING_MAIL_MODULE); $import_date = new DateTimeValue(); $imported_emails_count = 0; if (is_foreachable($mailboxes)) { foreach ($mailboxes as $mailbox) { $manager = $mailbox->getMailboxManager(); // open connection to mailbox $result = $manager->connect(); if (!$result || is_error($result)) { // we didn't connect, so we need to log it $error_message = ''; if (is_error($result)) { $error_message = ': ' . $result->getMessage(); } // if IncomingMailActivityLogs::log($mailbox->getId(), lang('Could Not Connect To Mailbox' . $error_message), null, INCOMING_MAIL_LOG_STATUS_ERROR, $import_date); $mailbox->setLastStatus(2); $mailbox->save(); continue; } // if $mailbox->setLastStatus(1); $mailbox->save(); $email_count = $manager->countMessages(); for ($mid = 1; $mid < $email_count + 1; $mid++) { if ($imported_emails_count >= $max_emails) { return true; } // if $current_message_id = 1; $email = $manager->getMessage($current_message_id, INCOMING_MAIL_ATTACHMENTS_FOLDER); if (!instance_of($email, 'MailboxManagerEmail')) { IncomingMailActivityLogs::log($mailbox->getId(), $email->getMessage(), null, INCOMING_MAIL_LOG_STATUS_ERROR, $import_date); continue; } // if $pending_email = IncomingMailImporter::createPendingEmail($email, $mailbox); if (!instance_of($pending_email, 'IncomingMail')) { IncomingMailActivityLogs::log($mailbox->getId(), $pending_email->getMessage(), $email, INCOMING_MAIL_LOG_STATUS_ERROR, $import_date); continue; } // if $manager->deleteMessage($current_message_id, true); $project_object = IncomingMailImporter::importPendingEmail($pending_email, false, $email->getIsReport()); if (!instance_of($project_object, 'ProjectObject')) { IncomingMailActivityLogs::log($mailbox->getId(), $project_object->getMessage(), $pending_email, INCOMING_MAIL_LOG_STATUS_ERROR, $import_date); continue; } // if IncomingMailActivityLogs::log($mailbox->getId(), lang('Imported Successfully'), $project_object, INCOMING_MAIL_LOG_STATUS_OK, $import_date); $user = $project_object->getCreatedBy(); if (instance_of($user, 'User')) { $user->setLastActivityOn(new DateTimeValue()); $user->save(); } // if $pending_email->delete(); $imported_emails_count++; } // for } // foreach } // if }