今天问题解决了前面。在第二行代码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被赋予一个函数之前。 –