mbox; $email = new Webmails($MailBox->mbox, $_REQUEST["mailid"]); $subject = imap_utf8($email->subject); $date = $email->date; $array_tab = Array(); $email->loadMail($array_tab); $msgData = str_replace('',"",$email->body); $content['attachtab'] = $email->attachtab; while ($tmp = array_pop($content['attachtab'])){ if ((!preg_match('/ATTACHMENT/i', $tmp['disposition'])) && $conf->display_text_attach && (preg_match('/text\/plain/i', $tmp['mime']))) $msgData .= '
'.view_part_detail($mail, $mailid, $tmp['number'], $tmp['transfer'], $tmp['charset'], $charset); } $focus->column_fields['subject']=$subject; $focus->column_fields["activitytype"]="Emails"; $ddate = date("Y-m-d",strtotime($date)); $dtime = date("h:m"); $focus->column_fields["assigned_user_id"] = $current_user->id; $focus->column_fields["date_start"] = $ddate; $focus->column_fields["time_start"] = $dtime; //Set the flag as 'Webmails' to show up the sent date $focus->column_fields["email_flag"] = "WEBMAIL"; //Save the To field information in vtiger_emaildetails $all_to_ids = $email->to; $focus->column_fields["saved_toid"] = implode(',',$all_to_ids); //store the sent date in 'yyyy-mm-dd' format $user_old_date_format = $current_user->date_format; $current_user->date_format = 'yyyy-mm-dd'; $focus->column_fields["description"]=$msgData; //to save the email details in vtiger_emaildetails vtiger_tables $fieldid = $adb->query_result($adb->pquery('select fieldid from vtiger_field where tablename="vtiger_contactdetails" and fieldname="email" and columnname="email" and vtiger_field.presence in (0,2)', array()),0,'fieldid'); if(count($email->relationship) != 0) { $focus->column_fields['parent_id']=$email->relationship["id"].'@'.$fieldid.'|'; $focus->save("Emails"); if($email->relationship["type"] == "Contacts") add_attachment_to_contact($email->relationship["id"],$email,$focus->id); }else { //if relationship is not available create a contact and relate the email to the contact require_once('modules/Contacts/Contacts.php'); $contact_focus = new Contacts(); //Populate the lastname as emailid if email doesn't have from name if($email->fromname){ $contact_focus->column_fields['lastname'] =$email->fromname; }else{ $contact_focus->column_fields['lastname'] =$email->from; } $contact_focus->column_fields['email'] = $email->from; $contact_focus->column_fields["assigned_user_id"]=$current_user->id; $contact_focus->save("Contacts"); $focus->column_fields['parent_id']=$contact_focus->id.'@'.$fieldid.'|'; $focus->save("Emails"); add_attachment_to_contact($contact_focus->id,$email,$focus->id); } function add_attachment_to_contact($cid,$email,$emailid) { // add vtiger_attachments to contact global $adb,$current_user,$default_charset; for($j=0;$j<2;$j++) { if($j==0) $attachments=$email->downloadAttachments(); else $attachments=$email->downloadInlineAttachments(); $upload_filepath = decideFilePath(); for($i=0,$num_files=count($attachments);$i<$num_files;$i++) { $current_id = $adb->getUniqueID("vtiger_crmentity"); $date_var = $adb->formatDate(date('Y-m-d H:i:s'), true); $filename = preg_replace("/[ ()-]+/", "_",$attachments[$i]["filename"]); preg_match_all('/=\?([^\?]+)\?([^\?]+)\?([^\?]+)\?=/', $filename, $matches); $totalmatches = count($matches[0]); for($index = 0; $index < $totalmatches; ++$index) { $charset = $matches[1][$index]; $encoding= strtoupper($matches[2][$index]); $data = $matches[3][$index]; if($encoding == 'B') { $filename = base64_decode($data); } else if($encoding == 'Q') { $filename = quoted_printable_decode($data); } $filename = iconv(str_replace('_','-',$charset),$default_charset,$filename); } $saveasfile = $upload_filepath.'/'.$current_id.'_'.$filename; $filetype = MailAttachmentMIME::detect($saveasfile); $filesize = $attachments[$i]["filesize"]; $query = "insert into vtiger_crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values(?,?,?,?,?,?,?)"; $qparams = array($current_id, $current_user->id, $current_user->id, 'Contacts Attachment', 'Uploaded from webmail during qualification', $date_var, $date_var); $result = $adb->pquery($query, $qparams); $sql = "insert into vtiger_attachments (attachmentsid,name,description,type,path) values(?,?,?,?,?)"; $params = array($current_id, $filename, 'Uploaded '.$filename.' from webmail', $filetype, $upload_filepath); $result = $adb->pquery($sql, $params); if(!empty($result)){ // Create document record $document = new Documents(); $document->column_fields['notes_title'] = $filename; $document->column_fields['filename'] = $filename; $document->column_fields['filesize'] = $filesize; $document->column_fields['filetype'] = $filetype; $document->column_fields['filestatus'] = 1; $document->column_fields['filelocationtype'] = 'I'; $document->column_fields['folderid'] = 1; // Default Folder $document->column_fields['assigned_user_id'] = $current_user->id; $document->save('Documents'); $sql1 = "insert into vtiger_senotesrel values(?,?)"; $params1 = array($cid, $document->id); $result = $adb->pquery($sql1, $params1); $sql1 = "insert into vtiger_seattachmentsrel values(?,?)"; $params1 = array($document->id, $current_id); $result = $adb->pquery($sql1, $params1); $sql1 = "insert into vtiger_seattachmentsrel values(?,?)"; $params1 = array($emailid, $current_id); $result = $adb->pquery($sql1, $params1); } //we have to add attachmentsid_ as prefix for the filename $move_filename = $upload_filepath.'/'.$current_id.'_'.$filename; $fp = fopen($move_filename, "w") or die("Can't open file"); fputs($fp, base64_decode($attachments[$i]["filedata"])); fclose($fp); } } } //Display the sent date in logged in user date format $current_user->date_format = $user_old_date_format; function view_part_detail($mail,$mailid,$part_no, &$transfer, &$msg_charset, &$charset) { $text = imap_fetchbody($mail,$mailid,$part_no); if ($transfer == 'BASE64') $str = nl2br(imap_base64($text)); elseif($transfer == 'QUOTED-PRINTABLE') $str = nl2br(quoted_printable_decode($text)); else $str = nl2br($text); return ($str); } $_REQUEST['parent_id'] = $focus->column_fields['parent_id']; $return_id = vtlib_purify($_REQUEST["mailid"]); $return_module='Webmails'; $return_action='ListView'; if($_POST["ajax"] != "true") header("Location: index.php?action=$return_action&module=$return_module&record=$return_id"); return; ?>