Пример #1
0
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);
}
Пример #2
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;
}