verifyPackage( 'contact' );
$gBitSystem->verifyPermission( 'p_contact_update' );
include_once CONTACT_PKG_INCLUDE_PATH . 'lookup_contact_inc.php';
if (!$gContent->mContentId) {
header( "location: " . CONTACT_PKG_URL . "list_contacts.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 . "
";
$mbox = new Mail_Mbox( $file );
$mbox->open();
for ( $n = 0; $n < $mbox->size(); $n++ ) {
$message = $mbox->get( $n );
preg_match( '/Subject: (.*)$/m', $message, $matches );
$subject = $matches[1] ?? 'Not Set';$subject = 'Not Set';
// echo 'Mail #' . $n . ': ' . $subject . "
";
$Decoder = new Mail_mimeDecode( $message );
$params = [
'include_bodies' => true,
'decode_bodies' => true,
'decode_headers' => true,
];
$Decoded = $Decoder->decode( $params );
if (strtolower( $Decoded->ctype_primary ) == "multipart") {
// \Bitweaver\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 {
\Bitweaver\vd( $Decoded );
}
} else {
$body = $Decoded->parts[0]->body;
}
}
else if (strtolower( $Decoded->ctype_primary ) == "text") {
// \Bitweaver\vd($Decoded->ctype_primary);
$ctype_secondary = $Decoded->ctype_secondary;
if (!empty( $Decoded->body )) {
$body = $Decoded->body;
} else {
\Bitweaver\vd( $Decoded );
}
} else {
\Bitweaver\vd( $message );
\Bitweaver\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 = [];
$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;
$email['format_guid'] = ( $ctype_secondary == 'html' ) ? 'bithtml' : '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 {
\Bitweaver\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 );
}
$from_emails = ( !empty( $to_emails[0] ) ) ? array_unique( $to_emails[0] ) : array_unique( $emails[0] );
$sql = "SELECT e.content_id FROM `" . BIT_DB_PREFIX . "liberty_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'], [ "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 {
\Bitweaver\vd( $Decoded->headers );
}
/*
if( $storeComment->storeComment( &$email )) {
// store successful
}
*/
}
$mbox->close();
if ($gContent->isCommentable()) {
$commentsParentId = $gContent->mContentId;
$comments_vars = [ '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->getXrefGroupList();
$gBitSystem->setBrowserTitle("Contact Information");
$gBitSystem->display( 'bitpackage:contact/show_contact.tpl');