2017-09-25 118 views
0

今天問題解決了前面。在第二行代碼global $db,$tags;覆蓋了if($this->has_lead_type_selected($person['ID'],$tags)),導致全局$標籤覆蓋代碼下部的$標籤。所以全局變量是空的,因爲它是在實際的$ tags var被賦予一個函數之前。準備好了mysql語句和數組

當HTML表單提交給我們的REST API發送數據稱爲「lead_type」,這是簡單的標籤,以確定發送的領先優勢。

用戶選擇一個標籤雲,這些標籤。如果表單使用其中一個標籤(lead_type)提交給API,並且我們的任何用戶配置文件都與這些標籤(它們在標籤雲中選擇的)匹配。用戶被髮送短信通知他們。

一切職位對數據庫表中,API作品,但用戶的每個人仍然得到一個短信,即使他們沒有匹配的標籤。如果我註釋掉該行(我將顯示下面的其他代碼),則會向每個人發送短信。如果我將其取消註釋,則不會向任何人發送短信。

if($this->has_lead_type_selected($person['ID'],$tags)) 

下面是代碼流程。

} 
private function has_lead_type_selected($user_id,$tags){ 
    global $db,$tags; 
    $lead_types = explode(',',$tags); 
    $user_lead_types = $db 
        ->where('user_id',$user_id) 
        ->where('lead_type_id', $lead_types, 'IN') 
        ->get('user_lead_types'); 

    return sizeof($user_lead_types) > 0; 

} 


//Get lead types from API post and create $tags 
      $lead_types = $this->request['leadData']['lead_types']; 
      $strTags = array(); 
      if(!empty($lead_types)) 
       $strTags = explode(',',$lead_types); 

      $tags = ''; 

      $lead_types_objects = $db->where('lead_type', $strTags,'IN')->get('lead_types'); 

      foreach($lead_types_objects as $l) 
      { 
       if($tags=='') 
        $tags = $l['id']; 
       else 
        $tags.=',' .$l['id']; 
      } 

然後,如果表單標籤與用戶雲標籤匹配,我們會向他們發送短信。

global $sid,$token; 
      $client = new Twilio\Rest\Client($sid, $token); 

     $content_data = [   
      "leadname" => $posted_name, 
      "leadzipcode" => $posted_zipcode, 
      "leadphone" => $posted_phone, 
      "leademail" => $posted_email, 
      "leadtags" => $lead_types   
      ]; 

     //Replace Content 
     foreach($content_data as $index => $value){ 
      $lead_sms_template = str_replace("|".$index."|", $value, $lead_sms_template); 
     } 

     // Step 5: Loop over all our friends. $number is a phone number above, and 
     // $name is the name next to it 
     foreach ($people as $person) { 
      try{ 
       //commented temporarily -- uncommented below to try to solve issue of texting everyone still 
       if($this->has_lead_type_selected($person['ID'],$tags)) 
       { 
        $number = $person['phone_no']; 
        $name = $person['first_name']. ' '. $person['last_name']; 

謝謝你的幫助。

+0

has_lead_type_selected應該檢查用戶是否有一個選定的標籤或全部選定的標籤? – Svetoslav

+0

今天早些時候解決了這個問題。在第二行代碼全局$ db,$ tags;如果($ this-> has_lead_type_selected($ person ['ID'],$ tags))覆蓋,導致全局$標記覆蓋代碼下部的$標記。所以全局變量是空的,因爲它是在實際的$ tags var被賦予一個函數之前。 –

回答

2

在代碼全球$db$tags的第二線;覆蓋了if($this->has_lead_type_selected($person['ID'],$tags)),導致全局$tags在代碼的較低部分覆蓋$tags。所以全局變量是空的,因爲它在實際的$tags變量被賦予一個函數之前。

+0

感謝您修復我的評論,我如何在未來對自己的問題做出回答? –

+0

嘿科迪,你可以簡單地把它放在答案領域,就像你在任何其他問題上一樣。 –