diff options
Diffstat (limited to 'load_emails.php')
| -rw-r--r-- | load_emails.php | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/load_emails.php b/load_emails.php new file mode 100644 index 0000000..bf2b6c6 --- /dev/null +++ b/load_emails.php @@ -0,0 +1,204 @@ +<?php +/** + * $Header: /cvsroot/bitweaver/_bit_contact/edit.php,v 1.6 2010/02/08 21:27:22 wjames5 Exp $ + * + * Copyright (c) 2006 bitweaver.org + * All Rights Reserved. See below for details and a complete list of authors. + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details + * + * @package contact + * @subpackage functions + */ + +/** + * required setup + */ +require_once( '../kernel/setup_inc.php' ); +require_once( LIBERTY_PKG_PATH.'LibertyComment.php' ); + +global $commentsLib, $gBitSmarty, $gBitSystem; + +$gBitSystem->verifyPackage( 'contact' ); +$gBitSystem->verifyPermission( 'p_contact_update' ); + +include_once( CONTACT_PKG_PATH.'lookup_contact_inc.php' ); + +if ( !$gContent->mContentId ) { + header ("location: ".CONTACT_PKG_URL."list.php"); + die; +} + +require_once 'import/Mbox.php'; +require_once 'import/mimeDecode.php'; + +//reads a mbox file +$file = '/srv/website/bitweaver/contact/data/Shipped'; +//echo 'Using file ' . $file . "<br>"; + +$mbox = new Mail_Mbox($file); +$mbox->open(); + +for ($n = 0; $n < $mbox->size(); $n++) { + $message = $mbox->get($n); + + preg_match('/Subject: (.*)$/m', $message, $matches); + if ( isset( $matches[1] ) ) { + $subject = $matches[1]; + } else { + $subject = 'Not Set'; + } +// echo 'Mail #' . $n . ': ' . $subject . "<br>"; + $Decoder = new Mail_mimeDecode( $message ); + $params = array( + 'include_bodies' => TRUE, + 'decode_bodies' => TRUE, + 'decode_headers' => TRUE + ); + $Decoded = $Decoder->decode($params); + if ( strtolower($Decoded->ctype_primary) == "multipart" ) { +// vd($Decoded->parts[0]->ctype_primary); + $ctype_secondary = $Decoded->parts[0]->ctype_secondary; + if ( strtolower($Decoded->parts[0]->ctype_primary) == "multipart" ) { + if ( !empty($Decoded->parts[0]->parts[0]->body) ) { + $body = $Decoded->parts[0]->parts[0]->body; + } else { + vd( $Decoded ); + } + } else { + $body = $Decoded->parts[0]->body; + } + } else if ( strtolower($Decoded->ctype_primary) == "text" ) { +// vd($Decoded->ctype_primary); + $ctype_secondary = $Decoded->ctype_secondary; + if ( !empty($Decoded->body) ) { + $body = $Decoded->body; + } else { + vd( $Decoded ); + } + } else { + vd( $message ); + vd($Decoded); + break; + } + $em_date = str_replace( '(GMT Daylight Time)', 'BST', $Decoded->headers['date'] ); + $em_date = str_replace( '(West-Europa (standaardtijd))', '', $em_date ); + $dateTime = new DateTime( $em_date ); + + $email = Array(); + $email['comments_parent_id'] = $gContent->mContentId; + $email['comment_title'] = $subject; + $email['comment_data'] = $body; + $email['created'] = strtotime( $dateTime->format(DATE_ATOM) ); + $email['last_modified'] = strtotime( $dateTime->format(DATE_ATOM) ); + $email['summary'] = $message; + if ( $ctype_secondary == 'html' ) { + $email['format_guid'] = 'bithtml'; + } else { + $email['format_guid'] = 'simpletext'; + } + + $storeComment = new LibertyComment(); +/* + * Process email addresses from the file + // define our search pattern to extract any email addresses +// $pattern = '#(?<=s/)[^\s@]+@[^\s@_]#'; +// $pattern = '/([A-Za-z0-9\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+)\@([A-Za-z0-9.-_]+)(\.[A-Za-z]{2,5})/'; + $pattern = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i'; + // preg match all in the string + preg_match_all( $pattern, $Decoded->headers['from'], $emails ); + if ( !empty($emails[0]) ) { + if ( $emails[0][0] == 'lester@lsces.co.uk' ) { + preg_match_all( $pattern, $Decoded->headers['to'], $to_emails ); + } + + if ( !empty($to_emails[0]) ) { + $from_emails = array_unique($to_emails[0]); + } else { + $from_emails = array_unique($emails[0]); + } + + $sql = "SELECT e.* FROM `".BIT_DB_PREFIX."contact_email` e WHERE e.`email` = ?"; + $result = $storeComment->mDb->getRow( $sql, $from_emails ); + if( $result ) { + $table = BIT_DB_PREFIX."contact_email"; + $email['email_store']['end_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + + $result = $storeComment->mDb->associateUpdate( $table, $email['email_store'], array( "email" => $from_emails[0] ) ); + } else { + $table = BIT_DB_PREFIX."contact_email"; + $email['email_store']['email'] = $from_emails[0]; + $email['email_store']['start_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + $email['email_store']['end_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + + $result = $storeComment->mDb->associateInsert( $table, $email['email_store'] ); + } + } else { + vd( $Decoded->headers ); + } + */ + // define our search pattern to extract any email addresses +// $pattern = '#(?<=s/)[^\s@]+@[^\s@_]#'; +// $pattern = '/([A-Za-z0-9\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+)\@([A-Za-z0-9.-_]+)(\.[A-Za-z]{2,5})/'; + $pattern = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i'; + // preg match all in the string + preg_match_all( $pattern, $Decoded->headers['from'], $emails ); + if ( !empty($emails[0]) ) { + if ( $emails[0][0] == 'lester@lsces.co.uk' ) { + preg_match_all( $pattern, $Decoded->headers['to'], $to_emails ); + } + + if ( !empty($to_emails[0]) ) { + $from_emails = array_unique($to_emails[0]); + } else { + $from_emails = array_unique($emails[0]); + } + + $sql = "SELECT e.content_id FROM `".BIT_DB_PREFIX."contact_xref` e WHERE e.`xkey_ext` = ?"; + $result = $storeComment->mDb->getRow( $sql, $from_emails ); + + if( $result ) { + $email['comments_parent_id'] = $result['content_id']; + + } else { + $sql = "SELECT e.* FROM `".BIT_DB_PREFIX."contact_email` e WHERE e.`email` = ?"; + $result = $storeComment->mDb->getRow( $sql, $from_emails ); + if( $result ) { + $table = BIT_DB_PREFIX."contact_email"; + $email['email_store']['end_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + + $result = $storeComment->mDb->associateUpdate( $table, $email['email_store'], array( "email" => $from_emails[0] ) ); + } else { + $table = BIT_DB_PREFIX."contact_email"; + $email['email_store']['email'] = $from_emails[0]; + $email['email_store']['start_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + $email['email_store']['end_date'] = strtotime( $dateTime->format(DATE_ATOM) ); + + $result = $storeComment->mDb->associateInsert( $table, $email['email_store'] ); + } + } + } else { + vd( $Decoded->headers ); + } +/* + if( $storeComment->storeComment( &$email )) { + // store successful + } +*/ +} + +$mbox->close(); + +if( $gContent->isCommentable() ) { + $commentsParentId = $gContent->mContentId; + $comments_vars = Array('contact'); + $comments_prefix_var='contact:'; + $comments_object_var='contact'; + $comments_return_url = $_SERVER['PHP_SELF']."?content_id=".$gContent->mContentId; + include_once( LIBERTY_PKG_PATH.'comments_inc.php' ); +} + +$gContent->mInfo['type'] = $gContent->getContactGroupList(); + +$gBitSystem->setBrowserTitle("Contact Information"); +$gBitSystem->display( 'bitpackage:contact/show_contact.tpl'); +?> |
