/** * @param $emails_ids array * @param $action (default 0) * @param $entity (default 0) **/ function deleteOrImportSeveralEmails($emails_ids = array(), $action = 0, $entity = 0) { global $DB; $mailbox_id = 0; $query = "SELECT *\n FROM `glpi_notimportedemails`\n WHERE `id` IN (" . implode(',', $emails_ids) . ")\n ORDER BY `mailcollectors_id`"; $todelete = array(); foreach ($DB->request($query) as $data) { $todelete[$data['mailcollectors_id']][$data['messageid']] = $data; } $ticket = new Ticket(); foreach ($todelete as $mailcollector_id => $rejected) { if ($this->getFromDB($mailcollector_id)) { $this->mid = -1; $this->fetch_emails = 0; //Connect to the Mail Box $this->connect(); // Get Total Number of Unread Email in mail box $tot = $this->getTotalMails(); //Total Mails in Inbox Return integer value for ($i = 1; $i <= $tot; $i++) { $head = $this->getHeaders($i); if (isset($rejected[$head['message_id']])) { if ($action == 1) { $tkt = array(); $tkt = $this->buildTicket($i, array('mailgates_id' => $mailcollector_id, 'play_rules' => false)); $tkt['_users_id_requester'] = $rejected[$head['message_id']]['users_id']; $tkt['entities_id'] = $entity; $ticket->add($tkt); $folder = self::ACCEPTED_FOLDER; } else { $folder = self::REFUSED_FOLDER; } //Delete email if ($this->deleteMails($i, $folder)) { $rejectedmail = new NotImportedEmail(); $rejectedmail->delete(array('id' => $rejected[$head['message_id']]['id'])); } // Unset managed unset($rejected[$head['message_id']]); } } // Email not present in mailbox if (count($rejected)) { $clean = array('<' => '', '>' => ''); foreach ($rejected as $id => $data) { if ($action == 1) { Session::addMessageAfterRedirect(sprintf(__('Email %s not found. Impossible import.'), strtr($id, $clean)), false, ERROR); } else { // Delete data in notimportedemail table $rejectedmail = new NotImportedEmail(); $rejectedmail->delete(array('id' => $data['id'])); } } } imap_expunge($this->marubox); $this->close_mailbox(); } } }