Example #1
0
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);
}
Example #2
0
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;
}
Example #3
0
/**
 * 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);
}
Example #6
0
 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();
 }
Example #7
0
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];
}
Example #9
0
 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;
 }