今天問題解決了前面。在第二行代碼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'];
謝謝你的幫助。
has_lead_type_selected應該檢查用戶是否有一個選定的標籤或全部選定的標籤? – Svetoslav
今天早些時候解決了這個問題。在第二行代碼全局$ db,$ tags;如果($ this-> has_lead_type_selected($ person ['ID'],$ tags))覆蓋,導致全局$標記覆蓋代碼下部的$標記。所以全局變量是空的,因爲它是在實際的$ tags var被賦予一個函數之前。 –