/**
  * Returns Mailbox which is associated with object
  *
  * @param void
  * @return IncomingMailbox
  */
 function getMailbox()
 {
     if ($this->mailbox === null) {
         $this->mailbox = IncomingMailboxes::findById($this->getMailboxId());
     }
     // if
     return $this->mailbox;
 }
Ejemplo n.º 2
0
/**
 * do frequently backup
 *
 * @param null
 * @return null
 */
function incoming_mail_handle_on_frequently()
{
    set_time_limit(0);
    require_once INCOMING_MAIL_MODULE_PATH . '/models/IncomingMailImporter.class.php';
    require_once ANGIE_PATH . '/classes/UTF8Converter/init.php';
    require_once ANGIE_PATH . '/classes/mailboxmanager/init.php';
    $mailboxes = IncomingMailboxes::findAllActive();
    IncomingMailImporter::importEmails($mailboxes, 20);
}
 /**
  * Find mailbox by from_email field
  *
  * @param string $email
  * @return IncomingMailbox
  */
 function findByFromEmail($email)
 {
     return IncomingMailboxes::find(array('conditions' => array('from_email = ?', $email), 'limit' => 1, 'one' => true));
 }
 /**
  * Main page in administration for Incoming Mail
  *
  */
 function index()
 {
     $config_admin_email = ConfigOptions::getValue('notifications_from_email');
     $notifications_email = $config_admin_email ? $config_admin_email : ADMIN_EMAIL;
     $default_mailbox = IncomingMailboxes::findByFromEmail($notifications_email);
     $add_default_mailbox_url = assemble_url('incoming_mail_admin_add_mailbox', array('default_email_address' => $notifications_email));
     if (!instance_of($default_mailbox, 'IncomingMailbox')) {
         $this->wireframe->addPageMessage(lang('System is not able to receive email messages sent as replies to notifications. If you would like your users to be able to reply to notifications and have their messages automatically submitted as comments please <a href=":add_default_mailbox_url">define an incoming mailbox</a> for <strong>:address</strong>.', array('address' => $notifications_email, 'add_default_mailbox_url' => $add_default_mailbox_url)), PAGE_MESSAGE_WARNING);
     } elseif (!$default_mailbox->getEnabled()) {
         $this->wireframe->addPageMessage(lang('System is not able to receive email messages sent as replies to notifications. If you would like your users to be able to reply to notifications and have their messages automatically submitted as comments please <a href=":edit_default_mailbox_url">enable default incoming mailbox</a>.', array('edit_default_mailbox_url' => $default_mailbox->getEditUrl())), PAGE_MESSAGE_WARNING);
     }
     // if
     if (!MM_CAN_DOWNLOAD_LARGE_ATTACHMENTS) {
         $limited_filesize = format_file_size(FAIL_SAFE_IMAP_ATTACHMENT_SIZE_MAX);
         if (!function_exists('imap_savebody')) {
             $this->wireframe->addPageMessage(lang("<b>Your PHP version is obsolete</b> - You won't be able to download attachments larger than <b>:file_size</b>. Please upgrade to latest stable version of PHP to solve this issue.", array('file_size' => $limited_filesize)), PAGE_MESSAGE_WARNING);
         } else {
             $this->wireframe->addPageMessage(lang("Importing attachments larger than <b>:file_size</b> is disabled. Module uses failsafe IMAP functions due to platform restrictions.", array('file_size' => $limited_filesize)), PAGE_MESSAGE_WARNING);
         }
         // if
     }
     // if
     use_model('incoming_mail_activity_logs', INCOMING_MAIL_MODULE);
     $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::paginateConflicts($page, $per_page);
     } else {
         list($activity_history, $pagination) = IncomingMailActivityLogs::paginate(array('order' => 'created_on DESC'), $page, $per_page);
     }
     // if
     $activity_history = group_by_date($activity_history);
     $this->smarty->assign(array('mailboxes' => IncomingMailboxes::find(), 'activity_history' => $activity_history, 'pagination' => $pagination, 'only_problematic' => $only_problematic));
 }
 /**
  * Use $incoming_mail as a base for creating ProjectObject
  *
  * @param IncomingMail $incoming_mail
  * @return integer
  */
 function importPendingEmail(&$incoming_mail, $skip_permission_checking = false, $is_report = false)
 {
     $mailbox = IncomingMailboxes::findById($incoming_mail->getIncomingMailboxId());
     if ($is_report) {
         $incoming_mail->setState(INCOMING_MAIL_STATUS_REPORT_EMAIL);
         $incoming_mail->save();
         return new Error(incoming_mail_module_get_status_description(INCOMING_MAIL_STATUS_REPORT_EMAIL));
     }
     // if
     $project = $incoming_mail->getProject();
     if (!instance_of($project, 'Project')) {
         // project does not exists
         $incoming_mail->setState(INCOMING_MAIL_STATUS_PROJECT_DOES_NOT_EXISTS);
         $incoming_mail_save = $incoming_mail->save();
         return new Error(incoming_mail_module_get_status_description(INCOMING_MAIL_STATUS_PROJECT_DOES_NOT_EXISTS));
     }
     // if
     $user = $incoming_mail->getCreatedBy();
     if (!$skip_permission_checking) {
         // check additional permissions
         if (instance_of($user, 'User')) {
             // if it's registered user
             // if object type is not comment and all users cannot create objects and current user cant create object
             if ($incoming_mail->getObjectType() != 'comment' && !$mailbox->getAcceptAllRegistered() && !ProjectObject::canAdd($user, $project, $incoming_mail->getObjectType())) {
                 $incoming_mail->setState(INCOMING_MAIL_STATUS_USER_CANNOT_CREATE_OBJECT);
                 $incoming_mail_save = $incoming_mail->save();
                 return new Error(incoming_mail_module_get_status_description(INCOMING_MAIL_STATUS_USER_CANNOT_CREATE_OBJECT));
             }
             // if
         } else {
             // if it's anonymous user
             // if mailbox does not accept anonymous users
             if (!$mailbox->getAcceptAnonymous()) {
                 $incoming_mail->setState(INCOMING_MAIL_STATUS_ANONYMOUS_NOT_ALLOWED);
                 $incoming_mail_save = $incoming_mail->save();
                 return new Error(incoming_mail_module_get_status_description(INCOMING_MAIL_STATUS_ANONYMOUS_NOT_ALLOWED));
             }
             // if
         }
         // if
     }
     // if
     // create new object instance dependable of object type
     switch ($incoming_mail->getObjectType()) {
         case 'discussion':
             $import =& IncomingMailImporter::importPendingEmailAsDiscussion($incoming_mail, $project, $user);
             break;
         case 'ticket':
             $import =& IncomingMailImporter::importPendingEmailAsTicket($incoming_mail, $project, $user);
             break;
         case 'comment':
             //$pos = strpos($incoming_mail->getSubject(), '{ID');
             //if ($pos!==false){
             $parent_id = $incoming_mail->getParentId();
             if (!empty($parent_id)) {
                 $import =& IncomingMailImporter::importPendingEmailAsComment($incoming_mail, $project, $user, $mailbox);
             } else {
                 $import =& IncomingMailImporter::importPendingEmailAsTicket($incoming_mail, $project, $user);
             }
             break;
             //BOF:mod 20120809
         //BOF:mod 20120809
         case 'task':
             //BOF:mod 20120820
             /*
             //EOF:mod 20120820
             $import = & IncomingMailImporter::importPendingEmailToTaskList($incoming_mail, $project, $user);
             //BOF:mod 20120820
             */
             $page_id = IncomingMailImporter::getPageId($incoming_mail, $project, $user);
             $attachments = $incoming_mail->getAttachments();
             $comment = null;
             if (strpos($incoming_mail->getSubject(), '}') !== false || strlen(strip_tags($incoming_mail->getBody())) > 150 || count($attachments)) {
                 $import =& IncomingMailImporter::importPendingEmailAsComment($incoming_mail, $project, $user, $mailbox, $page_id);
             } else {
                 $import =& IncomingMailImporter::importPendingEmailToTaskList($incoming_mail, $project, $user, $page_id, null);
             }
             //BOF:mod 20120820
             break;
             //EOF:mod 20120809
     }
     // switch
     return $import;
 }