2017-11-17 166 views
1

software fork之前的old SugarCRM one相比,developer guide for SuiteCRM有點不完整(至少在2017年第4季度)。因此,通過下載WordPress Plugin for SugarCRM,我能夠找出REST API和JSON,並通過以下代碼將銷售線索添加到SuiteCRM中。如何在將導線添加到SuiteCRM時防止出現重複?

現在我該如何防止家中電話,移動電話或電子郵件地址的重複?

<?php 

error_reporting(E_ALL); 
ini_set('display_errors','On'); 

header('Content-Type: text/plain'); 

CRM::loginCRM('admin','xxxxPASSWORDxxxxxx'); 

$aResult = CRM::addLead(array(
    'name' => 'John Doe', 
    'description' => 'sample description', 
    'salutation' => 'Mr.', 
    'first_name' => 'John', 
    'last_name' => 'Doe', 
    'do_not_call' => 'No', 
    'phone_home' => '202-111-2222', 
    'phone_mobile' => '202-111-2222', 
    'email1' => '[email protected]', 
    'primary_address_street' => '123 Main Street', 
    'primary_address_street2' => '', 
    'primary_address_street3' => '', 
    'primary_address_city' => 'New York', 
    'primary_address_state' => 'NY' 
)); 

print_r($aResult); 
CRM::logoutCRM(); 


die('OK'); 
///////////////////////// 

class CRM { 

private static $SessionID = ''; 

private static $URL = 'https://mycrmserver-example.com/service/v4_1/rest.php'; 

private static $User = ''; 
private static $Shadow = ''; 

public static function sendJSON($a) { 
    $s = file_get_contents(
    self::$URL, 
    false, 
    stream_context_create(
     array(
     'http' => array (
      'method' => 'POST', 
      'header' => 'Content-Type: application/x-www-form-urlencoded', 
      'content' => http_build_query($a) 
     ) 
    ) 
    ) 
); 
    $a2 = json_decode($s); 
    return $a2; 
} 

public static function loginCRM($sUser,$sPass) { 
    $sShadow = md5($sPass); 
    self::$User = $sUser; 
    self::$Shadow = $sShadow; 
    $asLogin = array (
    'method' => 'login', 
    'input_type' => 'JSON', 
    'response_type' => 'JSON', 
    'rest_data' => json_encode(array(
     'user_auth' => array(
     'user_name' => $sUser, 
     'password' => $sShadow, 
     'version' => 1 
    ), 
     'application_name' => 'RestTest', 
     'name_value_list' => array() 
    )) 
); 
    $a = self::sendJSON($asLogin); 
    self::$SessionID = $a->id; 
} 

public static function logoutCRM() { 
    $asLogin = array (
    'method' => 'logout', 
    'input_type' => 'JSON', 
    'response_type' => 'JSON', 
    'rest_data' => json_encode(array(
     'user_auth' => array(
     'user_name' => self::$User, 
     'password' => self::$Shadow, 
     'version' => 1 
    ), 
     'application_name' => 'RestTest', 
     'name_value_list' => array() 
    )) 
); 
    self::sendJSON($asLogin); 
} 

public static function addLead($a) { 
    $asNameValueList = array(); 
    foreach($a as $sKey => $sVal) { 
    $asNameValueList[] = array('name'=>$sKey,'value'=>$sVal); 
    } 
    $asAddEntry = array (
    'method' => 'set_entry', 
    'input_type' => 'JSON', 
    'response_type' => 'JSON', 
    'rest_data' => json_encode(array(
     'session' => self::$SessionID, 
     'module_name' => 'Leads', 
     'name_value_list' => $asNameValueList 
    )) 
); 
    $a = self::sendJSON($asAddEntry); 
    return $a; 
} 

} // end CRM 

回答

2

將這些函數添加到您的CRM類中並在添加潛在客戶之前檢查它們。我從this answer得到了一些幫助,順便給了我一些見解。此外,我建議您採取措施來降低安全性,例如添加.htaccess或NGINX規則,該規則僅允許某些IP地址或需要某些標頭才能通過HTTP或/和/ service/*子文件夾到達/ service文件夾中的任何內容HTTPS。

public static function leadExistsByPhone($sHomePhone,$sMobilePhone) { 
    $sHomePhone = (empty($sHomePhone)) ? 'xxxxxinvalid' : $sHomePhone; 
    $sMobilePhone = (empty($sMobilePhone)) ? 'xxxxxinvalid' : $sMobilePhone; 
    $asCheck = array (
    'method' => 'get_entry_list', 
    'input_type' => 'JSON', 
    'response_type' => 'JSON', 
    'rest_data' => json_encode(array(
     'session' => self::$SessionID, 
     'module_name' => 'Leads', 
     'query' => " 
     leads.phone_home = '$sHomePhone' 
     OR leads.phone_mobile = '$sMobilePhone' 
     ", 
     'order_by' => 'leads.date_entered DESC', 
     'offset' => '0', 
     'select_fields' => array(), 
     'link_name_to_fields_array' => array(), 
     'max_results' => 999999, 
     'deleted' => false 
    )) 
); 
    $a = self::sendJSON($asCheck); 
    $nCount = @ $a->result_count; 
    $nCount = intval($nCount); 
    return ($nCount > 0); 
} 

public static function leadExistsByEmail($sEmail) { 
    if (!filter_var($sEmail, FILTER_VALIDATE_EMAIL)) { 
    die('DENIED: invalid email address format'); 
    } 
    $asCheck = array (
    'method' => 'get_entry_list', 
    'input_type' => 'JSON', 
    'response_type' => 'JSON', 
    'rest_data' => json_encode(array(
     'session' => self::$SessionID, 
     'module_name' => 'Leads', 
     'query' => " 
     leads.id IN 
     (
      SELECT email_addr_bean_rel.bean_id 
      FROM email_addr_bean_rel 
      JOIN email_addresses 
      ON  email_addr_bean_rel.email_address_id = email_addresses.id 
      WHERE 
      email_addresses.email_address = '$sEmail' 
     ) 
     ", 
     'order_by' => 'leads.date_entered DESC', 
     'offset' => '0', 
     'select_fields' => array(), 
     'link_name_to_fields_array' => array(), 
     'max_results' => 999999, 
     'deleted' => false 
    )) 
); 
    $a = self::sendJSON($asCheck); 
    $nCount = @ $a->result_count; 
    $nCount = intval($nCount); 
    return ($nCount > 0); 
} 
+0

如果您想更新現有的鉛,只需修改'leadExists *()'函數一點,讓你得到的ID,然後通過'id'的'$ asNameValueList'陣列中'set_entry'方法。 – Volomike

相關問題