Vault completed. Not enough data sanitization for my liking, but all sanitizing breaks the look of email which is important to Con. Perhaps not saving the body in the DB and just viewing it on the fly is a safer solution - but for now its stored in the DB
This commit is contained in:
parent
5aaf066506
commit
0286ab30e4
83
vendors/shells/vault.php
vendored
83
vendors/shells/vault.php
vendored
|
|
@ -7,7 +7,7 @@ class VaultShell extends Shell {
|
|||
*/
|
||||
|
||||
|
||||
var $uses = array('Enquiry', 'Email', 'EmailAttachments');
|
||||
var $uses = array('Enquiry', 'Email', 'EmailAttachment');
|
||||
|
||||
|
||||
function main() {
|
||||
|
|
@ -47,6 +47,7 @@ class VaultShell extends Shell {
|
|||
$this->data['Email']['from'] = $message['from'];
|
||||
$this->data['Email']['date'] = $message['date'];
|
||||
$this->data['Email']['subject'] = $message['subject'];
|
||||
$this->data['Email']['body'] = $message['body'];
|
||||
|
||||
//Sanitize::clean($this->data);
|
||||
|
||||
|
|
@ -70,7 +71,8 @@ class VaultShell extends Shell {
|
|||
|
||||
}
|
||||
echo "Email stored in the DB under enquiry ".$enquiry['Enquiry']['title']." Will be moved to the stored folder\n";
|
||||
$this->clearEmailAttachmentDirs($email_dir, $temp_filename, $attachment_dir, $attachments);
|
||||
imap_mail_move($mbox, $i, 'INBOX/Stored'); //Move it to the stored folder.
|
||||
$this->clearEmailAttachmentDirs($email_dir, $temp_filename, $attachment_dir, $attachment_files);
|
||||
}
|
||||
else {
|
||||
echo 'Unable to save the Email\n';
|
||||
|
|
@ -155,60 +157,91 @@ function getMessage($mbox, $msgnumber, $headers) {
|
|||
$subject = $headers->subject;
|
||||
$date = $headers->date;
|
||||
$recipients = $this->getRecipients($headers);
|
||||
$message['subject'] = $subject;
|
||||
$message['subject'] = Sanitize::paranoid($subject, array(' ', '@'));
|
||||
$message['date'] = $date;
|
||||
$message['to'] = $recipients['to'];
|
||||
$message['from'] = $recipients['from'];
|
||||
$message['cc'] = $recipients['cc'];
|
||||
$message['body'] = imap_fetchbody($mbox, $msgnumber, '1');
|
||||
|
||||
|
||||
$message['body'] = $this->getBody($mbox, $msgnumber);
|
||||
return $message;
|
||||
|
||||
}
|
||||
/* get Recipients from the headers of an email */
|
||||
function getRecipients($headers) {
|
||||
|
||||
$to = $headers->to;
|
||||
$cc = $headers->cc;
|
||||
$from = $headers->from;
|
||||
$recipients = array();
|
||||
if(count($to) > 0) {
|
||||
$recipients = array();
|
||||
$recipients['to'] = "";
|
||||
$recipients['from'] = "";
|
||||
$recipients['cc'] = "";
|
||||
|
||||
if(isset($headers->to)) {
|
||||
$to = $headers->to;
|
||||
if(count($to) > 0) {
|
||||
foreach ($to as $id => $object) {
|
||||
if(isset($object->personal)) {
|
||||
$recipients['to'] .= "$object->personal $object->mailbox@$object->host ";
|
||||
}
|
||||
else {
|
||||
$recipients['to'] .= "$object->mailbox@$object->host ";
|
||||
$recipients['to'] .= "$object->mailbox@$object->host ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($cc) > 0) {
|
||||
if(isset($headers->cc)) {
|
||||
$cc = $headers->cc;
|
||||
if(count($cc) > 0) {
|
||||
foreach ($cc as $id => $object) {
|
||||
if(isset($object->personal)) {
|
||||
$recipients['cc'] .= "$object->personal $object->mailbox@$object->host ";
|
||||
}
|
||||
else {
|
||||
$recipients['cc'] .= "$object->mailbox@$object->host ";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(count($from) > 0) {
|
||||
if(isset($headers->from)) {
|
||||
$from = $headers->from;
|
||||
if(count($from) > 0) {
|
||||
foreach ($from as $id => $object) {
|
||||
if(isset($object->personal)) {
|
||||
$recipients['from'] .= "$object->personal $object->mailbox@$object->host";
|
||||
}
|
||||
else {
|
||||
$recipients['from'] .= "$object->mailbox@$object->host";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return $recipients;
|
||||
}
|
||||
|
||||
|
||||
function getBody($mbox, $msgnumber) {
|
||||
$structure = imap_fetchstructure($mbox, $msgnumber);
|
||||
if (!empty($structure->parts)) {
|
||||
$body = $this->getParts($structure->parts, $mbox, $msgnumber);
|
||||
}
|
||||
else {
|
||||
$body = imap_body($mbox, $msgnumber); /* Or get the plaintext */
|
||||
}
|
||||
return $body;
|
||||
}
|
||||
|
||||
|
||||
function getParts($parts, $mbox, $msgnumber) {
|
||||
for ($i = 0, $j = count($parts); $i < $j; $i++) {
|
||||
$part = $parts[$i];
|
||||
|
||||
|
||||
if ($part->subtype == 'HTML') { /* Find the HTML component of the body */
|
||||
$body = imap_fetchbody($mbox, $msgnumber, $i+1);
|
||||
return $body;
|
||||
}
|
||||
elseif($part->subtype == 'PLAIN') {
|
||||
$body = imap_fetchbody($mbox, $msgnumber, $i+1);
|
||||
return $body;
|
||||
}
|
||||
elseif(isset($part->parts)) {
|
||||
$body = $this->getParts($part->parts, $mbox, $msgnumber); /* Handle these goddamn Outlook messages */
|
||||
return $body;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue