Example #1
0
/**
 * 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
 }