function _5_bind_HelpDesk($user_id, $mail_detail, $folder, $return) { $ModuleName = 'HelpDesk'; $table_name = 'vtiger_troubletickets'; $table_col = 'ticket_no'; $ossmailviewTab = 'vtiger_ossmailview_tickets'; $answered_status = 'Answered'; require_once "modules/OSSMailScanner/template_actions/prefix.php"; $ids = bind_prefix($user_id, $mail_detail, $folder, $ModuleName, $table_name, $table_col, $ossmailviewTab); if ($ids) { $conf = OSSMailScanner_Record_Model::getConfig('emailsearch'); $type = OSSMailScanner_Record_Model::getTypeEmail($mail_detail); if ($conf['change_ticket_status'] == 'true' && $type == 1) { foreach ($ids as $id) { $ModelInstance = Vtiger_Record_Model::getInstanceById($id, $ModuleName); $ticketstatus = $ModelInstance->get('ticketstatus'); if ($ticketstatus == 'Wait For Response') { $record = new $ModuleName(); $record->retrieve_entity_info($id, $ModuleName); $record->mode = 'edit'; $record->column_fields['ticketstatus'] = $answered_status; $record->save($ModuleName, $id); } } } } return array('bind_HelpDesk' => $ids); }
function bind_email($user_id, $mail_detail, $folder, $moduleName, $ossmailviewTab) { $adb = PearDatabase::getInstance(); if ($mail_detail['ossmailviewid'] == '') { $result_ossmailview = $adb->pquery('SELECT ossmailviewid FROM vtiger_ossmailview WHERE uid = ? AND rc_user = ?', [$mail_detail['message_id'], $user_id]); if ($adb->num_rows($result_ossmailview) == 0) { return FALSE; } $ossmailviewid = $adb->query_result($result_ossmailview, 0, 'ossmailviewid'); } else { $ossmailviewid = $mail_detail['ossmailviewid']; } $crmids_fromaddress = OSSMailScanner_Record_Model::findEmail($mail_detail['fromaddress'], $moduleName, TRUE); $crmids_toaddress = OSSMailScanner_Record_Model::findEmail($mail_detail['toaddress'], $moduleName, TRUE); $crmids_ccaddress = OSSMailScanner_Record_Model::findEmail($mail_detail['ccaddress'], $moduleName, TRUE); $crmids_bccaddress = OSSMailScanner_Record_Model::findEmail($mail_detail['bccaddress'], $moduleName, TRUE); $crmids_to = OSSMailScanner_Record_Model::_merge_array($crmids_toaddress, $crmids_ccaddress); $crmids_to = OSSMailScanner_Record_Model::_merge_array($crmids_to, $crmids_bccaddress); $return_ids = []; if (count($crmids_fromaddress) != 0) { foreach ($crmids_fromaddress as $crmidsRow) { $adb->pquery('INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?;', [$ossmailviewid, $crmidsRow[0], $mail_detail['udate_formated']]); $return_ids[] = $crmidsRow[0]; } } if (count($crmids_to) != 0) { foreach ($crmids_to as $crmidsRow) { $adb->pquery('INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?;', [$ossmailviewid, $crmidsRow[0], $mail_detail['udate_formated']]); $return_ids[] = $crmidsRow[0]; } } return $return_ids; }
/** * Mail Scanner bind email action * @package YetiForce.MailScanner * @license licenses/License.html * @author Mariusz Krzaczkowski <*****@*****.**> */ function bind_email($user_id, $mailDetail, $folder, $moduleName) { $adb = PearDatabase::getInstance(); if ($mailDetail['ossmailviewid'] == '') { $result_ossmailview = $adb->pquery('SELECT ossmailviewid FROM vtiger_ossmailview WHERE uid = ? AND rc_user = ?', [$mailDetail['message_id'], $user_id]); if ($adb->num_rows($result_ossmailview) == 0) { return FALSE; } $mailViewId = $adb->query_result($result_ossmailview, 0, 'ossmailviewid'); } else { $mailViewId = $mailDetail['ossmailviewid']; } $crmIds = OSSMailScanner_Record_Model::findEmail($mailDetail['fromaddress'], $moduleName, TRUE); $crmidsToaddress = OSSMailScanner_Record_Model::findEmail($mailDetail['toaddress'], $moduleName, TRUE); $crmidsCcaddress = OSSMailScanner_Record_Model::findEmail($mailDetail['ccaddress'], $moduleName, TRUE); $crmidsBccaddress = OSSMailScanner_Record_Model::findEmail($mailDetail['bccaddress'], $moduleName, TRUE); $crmidsReplyToaddress = OSSMailScanner_Record_Model::findEmail($mailDetail['reply_toaddress'], $moduleName, TRUE); $crmIds = OSSMailScanner_Record_Model::_merge_array($crmIds, $crmidsToaddress); $crmIds = OSSMailScanner_Record_Model::_merge_array($crmIds, $crmidsCcaddress); $crmIds = OSSMailScanner_Record_Model::_merge_array($crmIds, $crmidsBccaddress); $crmIds = OSSMailScanner_Record_Model::_merge_array($crmIds, $crmidsReplyToaddress); $returnIds = []; if (count($crmIds) != 0) { foreach ($crmIds as $crmRow) { $resultRelation = $adb->pquery('SELECT * FROM vtiger_ossmailview_relation WHERE ossmailviewid=? AND crmid=?', [$mailViewId, $crmRow]); if ($resultRelation->rowCount() > 0) { continue; } $adb->pquery('INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?;', [$mailViewId, $crmRow, $mailDetail['udate_formated']]); $returnIds[] = $crmRow; } } return $returnIds; }
function _0_created_Email($user_id, $mail_detail, $folder, $return) { $folder_group = OSSMailScanner_Record_Model::getConfigFolderList($folder); $adb = PearDatabase::getInstance(); $result_user_id = $adb->pquery("SELECT crm_user_id FROM roundcube_users where user_id = ? ", [$user_id]); $assigned_user_id = $adb->query_result($result_user_id, 0, 'crm_user_id'); $result = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ", [$mail_detail['message_id'], $user_id]); if ($adb->num_rows($result) == 0 && $mail_detail['message_id'] != '') { $OSSMailViewInstance = CRMEntity::getInstance('OSSMailView'); $OSSMailViewInstance->column_fields['assigned_user_id'] = $assigned_user_id; $OSSMailViewInstance->column_fields['subject'] = $mail_detail['subject']; $OSSMailViewInstance->column_fields['to_email'] = $mail_detail['toaddress']; $OSSMailViewInstance->column_fields['from_email'] = $mail_detail['fromaddress']; $OSSMailViewInstance->column_fields['reply_to_email'] = $mail_detail['reply_toaddress']; $OSSMailViewInstance->column_fields['ossmailview_sendtype'] = OSSMailScanner_Record_Model::getTypeEmail($mail_detail, true); $OSSMailViewInstance->column_fields['content'] = $mail_detail['body']; $OSSMailViewInstance->column_fields['orginal_mail'] = $mail_detail['clean']; $OSSMailViewInstance->column_fields['cc_email'] = $mail_detail['ccaddress']; $OSSMailViewInstance->column_fields['bcc_email'] = $mail_detail['bccaddress']; $OSSMailViewInstance->column_fields['fromaddress'] = $mail_detail['from']; $OSSMailViewInstance->column_fields['uid'] = $mail_detail['message_id']; $OSSMailViewInstance->column_fields['id'] = $mail_detail['id']; $OSSMailViewInstance->column_fields['mbox'] = $folder; $OSSMailViewInstance->column_fields['type'] = OSSMailScanner_Record_Model::getTypeEmail($mail_detail); $OSSMailViewInstance->column_fields['rc_user'] = $user_id; $OSSMailViewInstance->column_fields['from_id'] = OSSMailScanner_Record_Model::findEmail($mail_detail['fromaddress'], false, false); if ($mail_detail['toaddress']) { $adress = $mail_detail['toaddress']; } if ($mail_detail['ccaddress']) { if ($adress != '') { $adress .= ','; } $adress .= $mail_detail['ccaddress']; } if ($mail_detail['bccaddress']) { if ($adress != '') { $adress .= ','; } $adress .= $mail_detail['bccaddress']; } $OSSMailViewInstance->column_fields['to_id'] = OSSMailScanner_Record_Model::findEmail($adress, false, false); if (count($mail_detail['attachments']) > 0) { $OSSMailViewInstance->column_fields['attachments_exist'] = 1; } $OSSMailViewInstance->save('OSSMailView'); $id = $OSSMailViewInstance->id; $DocumentsIDs = OSSMail_Record_Model::_SaveAttachements($mail_detail['attachments'], $assigned_user_id, $mail_detail['udate_formated'], $id); $adb->pquery('UPDATE vtiger_crmentity SET smcreatorid = ?,modifiedby = ? WHERE crmid = ? ', array($assigned_user_id, $assigned_user_id, $id)); $adb->pquery('UPDATE vtiger_ossmailview SET date = ? WHERE ossmailviewid = ?;', array($mail_detail['udate_formated'], $id)); } return ['created_Email' => $id]; }
function _1_created_HelpDesk($user_id, $mailDetail, $folder, $return) { $adb = PearDatabase::getInstance(); $result_user_id = $adb->pquery("SELECT crm_user_id FROM roundcube_users where user_id = ? ", array($user_id), true); $assigned_user_id = $adb->query_result($result_user_id, 0, 'crm_user_id'); $EmailNumPrefix = OSSMailScanner_Record_Model::findEmailNumPrefix('HelpDesk', $mailDetail['subject']); $result = $adb->pquery("SELECT ticketid FROM vtiger_troubletickets where ticket_no = ? ", array($EmailNumPrefix), true); $exceptionsAll = OSSMailScanner_Record_Model::getConfig('exceptions'); if (!empty($exceptionsAll['crating_tickets'])) { $exceptions = explode(',', $exceptionsAll['crating_tickets']); foreach ($exceptions as $exception) { if (strpos($mailDetail['fromaddress'], $exception) !== FALSE) { return ['created_HelpDesk' => '']; } } } if ($adb->num_rows($result) == 0) { $contact_id = OSSMailScanner_Record_Model::findEmail($mailDetail['fromaddress'], 'Contacts', false); $parent_id = OSSMailScanner_Record_Model::findEmail($mailDetail['fromaddress'], 'Accounts', false); $HelpDeskInstance = CRMEntity::getInstance('HelpDesk'); $HelpDeskInstance->column_fields['assigned_user_id'] = $assigned_user_id; $HelpDeskInstance->column_fields['ticket_title'] = $mailDetail['subject']; if ($contact_id && $contact_id != '' && $contact_id != '0') { $HelpDeskInstance->column_fields['contact_id'] = $contact_id; } if ($parent_id && $parent_id != '' && $parent_id != '0') { $HelpDeskInstance->column_fields['parent_id'] = $parent_id; $servicecontracts = $adb->pquery("SELECT servicecontractsid, priority FROM vtiger_servicecontracts where sc_related_to = ? ", array($parent_id)); if ($adb->num_rows($servicecontracts) == 1) { $HelpDeskInstance->column_fields['servicecontractsid'] = $adb->query_result($servicecontracts, 0, 'servicecontractsid'); $HelpDeskInstance->column_fields['ticketpriorities'] = $adb->query_result($servicecontracts, 0, 'priority'); } } $HelpDeskInstance->column_fields['description'] = strip_tags($mailDetail['body']); $HelpDeskInstance->column_fields['ticketstatus'] = 'Open'; $HelpDeskInstance->save('HelpDesk'); $id = $HelpDeskInstance->id; $result_ossmailview = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? ", array($mailDetail['message_id']), true); if ($adb->num_rows($result_ossmailview) > 0) { $ossmailviewid = $adb->query_result($result_ossmailview, 0, 'ossmailviewid'); $adb->pquery("INSERT INTO vtiger_crmentityrel SET crmid=?, module=?, relcrmid=?, relmodule=?", array($ossmailviewid, 'OSSMailView', $id, 'HelpDesk')); } $adb->pquery("UPDATE vtiger_crmentity SET createdtime = ?,smcreatorid = ?,modifiedby = ? WHERE crmid = ? ", array($mailDetail['udate_formated'], $assigned_user_id, $assigned_user_id, $id)); } return array('created_HelpDesk' => $id); }
public function process(Vtiger_Request $request) { $ids = $request->get('ids'); $mod = $request->get('mod'); $emailFields = []; $EmailSearchList = OSSMailScanner_Record_Model::getEmailSearch($mod); $recordModel = Vtiger_Record_Model::getInstanceById($ids, $mod); $name = $recordModel->getName(); foreach ($EmailSearchList as $emailField) { $email = $recordModel->get($emailField[5]); if ($email != '') { $fieldlabel = vtranslate($emailField[0], $emailField[3]); $emailFields[] = array('name' => $name, 'fieldlabel' => $fieldlabel, 'email' => $email); } } $response = new Vtiger_Response(); $response->setResult($emailFields); $response->emit(); }
function bind_prefix($user_id, $mail_detail, $folder, $moduleName, $table_name, $table_col) { $adb = PearDatabase::getInstance(); if ($mail_detail['ossmailviewid'] == '') { $result_ossmailview = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ", [$mail_detail['message_id'], $user_id]); if ($adb->num_rows($result_ossmailview) == 0) { return FALSE; } $mailViewId = $adb->query_result($result_ossmailview, 0, 'ossmailviewid'); } else { $mailViewId = $mail_detail['ossmailviewid']; } $relationExist = false; $relationExistResult = $adb->pquery("SELECT crmid FROM vtiger_ossmailview_relation WHERE ossmailviewid = ?;", [$mailViewId]); for ($i = 0; $i < $adb->num_rows($relationExistResult); $i++) { $crmid = $adb->query_result_raw($relationExistResult, $i, 'crmid'); $type = Vtiger_Functions::getCRMRecordType($crmid); if ($type == $moduleName) { $relationExist = TRUE; } } if ($relationExist) { return false; } $emailNumPrefix = OSSMailScanner_Record_Model::findEmailNumPrefix($moduleName, $mail_detail['subject']); if (!$emailNumPrefix) { return false; } require_once "modules/{$moduleName}/{$moduleName}.php"; $moduleObject = new $moduleName(); $tableIndex = $moduleObject->table_index; $return_id = []; $result = $adb->pquery("SELECT {$tableIndex} FROM " . $table_name . " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = " . $table_name . "." . $tableIndex . " WHERE vtiger_crmentity.deleted = 0 AND " . $table_col . " = ? ", [$emailNumPrefix]); if ($adb->num_rows($result) > 0) { $crmid = $adb->getSingleValue($result); $resultRelation = $adb->pquery('SELECT * FROM vtiger_ossmailview_relation WHERE ossmailviewid=? AND crmid=?', [$mailViewId, $crmid]); if ($resultRelation->rowCount() == 0) { $adb->pquery('INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?', [$mailViewId, $crmid, $mail_detail['udate_formated']]); $return_id[] = $crmid; } } return $return_id; }
function _0_created_Email($user_id, $mailDetail, $folder, $return) { $type = OSSMailScanner_Record_Model::getTypeEmail($mailDetail); $folder_group = OSSMailScanner_Record_Model::getConfigFolderList($folder); $exceptionsAll = OSSMailScanner_Record_Model::getConfig('exceptions'); $adb = PearDatabase::getInstance(); $result_user_id = $adb->pquery('SELECT crm_user_id FROM roundcube_users where user_id = ? ', [$user_id]); $assigned_user_id = $adb->query_result($result_user_id, 0, 'crm_user_id'); $result = $adb->pquery('SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ', [$mailDetail['message_id'], $user_id]); if ($type == 0) { $mailForExceptions = $mailDetail['toaddress']; } else { $mailForExceptions = $mailDetail['fromaddress']; } if (!empty($exceptionsAll['crating_mails'])) { $exceptions = explode(',', $exceptionsAll['crating_mails']); foreach ($exceptions as $exception) { if (strpos($mailForExceptions, $exception) !== FALSE) { return ['created_Email' => '']; } } } if ($adb->num_rows($result) == 0 && $mailDetail['message_id'] != '') { $OSSMailViewInstance = CRMEntity::getInstance('OSSMailView'); $OSSMailViewInstance->column_fields['assigned_user_id'] = $assigned_user_id; $OSSMailViewInstance->column_fields['subject'] = $mailDetail['subject']; $OSSMailViewInstance->column_fields['to_email'] = $mailDetail['toaddress']; $OSSMailViewInstance->column_fields['from_email'] = $mailDetail['fromaddress']; $OSSMailViewInstance->column_fields['reply_to_email'] = $mailDetail['reply_toaddress']; $OSSMailViewInstance->column_fields['ossmailview_sendtype'] = OSSMailScanner_Record_Model::getTypeEmail($mailDetail, true); $OSSMailViewInstance->column_fields['content'] = $mailDetail['body']; $OSSMailViewInstance->column_fields['orginal_mail'] = $mailDetail['clean']; $OSSMailViewInstance->column_fields['cc_email'] = $mailDetail['ccaddress']; $OSSMailViewInstance->column_fields['bcc_email'] = $mailDetail['bccaddress']; $OSSMailViewInstance->column_fields['fromaddress'] = $mailDetail['from']; $OSSMailViewInstance->column_fields['uid'] = $mailDetail['message_id']; $OSSMailViewInstance->column_fields['id'] = $mailDetail['id']; $OSSMailViewInstance->column_fields['mbox'] = $folder; $OSSMailViewInstance->column_fields['type'] = $type; $OSSMailViewInstance->column_fields['rc_user'] = $user_id; $adress = []; if ($mailDetail['fromaddress']) { $adress[] = $mailDetail['fromaddress']; } if ($mailDetail['reply_toaddress']) { $adress[] = $mailDetail['reply_toaddress']; } $OSSMailViewInstance->column_fields['from_id'] = OSSMailScanner_Record_Model::findEmail(implode(',', $adress), false, false); $adress = []; if ($mailDetail['toaddress']) { $adress[] = $mailDetail['toaddress']; } if ($mailDetail['ccaddress']) { $adress[] = $mailDetail['ccaddress']; } if ($mailDetail['bccaddress']) { $adress[] = $mailDetail['bccaddress']; } $OSSMailViewInstance->column_fields['to_id'] = OSSMailScanner_Record_Model::findEmail(implode(',', $adress), false, false); if (count($mailDetail['attachments']) > 0) { $OSSMailViewInstance->column_fields['attachments_exist'] = 1; } $OSSMailViewInstance->save('OSSMailView'); $id = $OSSMailViewInstance->id; $DocumentsIDs = OSSMail_Record_Model::_SaveAttachements($mailDetail['attachments'], $assigned_user_id, $mailDetail['udate_formated'], $id); $adb->pquery('UPDATE vtiger_crmentity SET smcreatorid = ?,modifiedby = ? WHERE crmid = ? ', [$assigned_user_id, $assigned_user_id, $id]); $adb->pquery('UPDATE vtiger_ossmailview SET date = ? WHERE ossmailviewid = ?;', [$mailDetail['udate_formated'], $id]); } return ['created_Email' => $id]; }
public function findEmail($id, $module) { if (!isRecordExists($id)) { return false; } $returnEmail = ''; if (strcmp($module, 'HelpDesk') != 0 && strcmp($module, 'Potentials') != 0 && strcmp($module, 'Project') != 0) { $polaEmail = OSSMailScanner_Record_Model::getEmailSearch($module); if (count($polaEmail) > 0) { $recordModel = Vtiger_Record_Model::getInstanceById($id, $module); foreach ($polaEmail as $em) { $email = $recordModel->get($em[2]); if (!empty($email)) { $returnEmail = $email; } } } } else { $kontrahentId = ''; $kontaktId = ''; if (strcmp($module, 'HelpDesk') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('parent_id'); $kontaktId = $helpdeskRecord->get('contact_id'); } else { if (strcmp($module, 'Potentials') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('related_to'); } else { if (strcmp($module, 'Project') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('linktoaccountscontacts'); } } } // czy kontrahent istnieje if (isRecordExists($kontrahentId)) { $nazwaModulu = Vtiger_Functions::getCRMRecordType($kontrahentId); $returnEmail = $this->findEmail($kontrahentId, $nazwaModulu); } if (isRecordExists($kontaktId)) { $nazwaModulu = Vtiger_Functions::getCRMRecordType($kontaktId); $returnEmail = $this->findEmail($kontaktId, $nazwaModulu); } } return $returnEmail; }