· 7 years ago · Oct 30, 2018, 04:32 PM
1<?php
2/*
3Addon Name: Bot Inboxer
4Unique Name: messenger_bot
5Module ID: 200
6Project ID: 3
7Addon URI: http://getfbinboxer.com
8Author: Xerone IT
9Author URI: http://xeroneit.net
10Version: 2.5.1
11Description: Facebook messenger chat bot.
12*/
13require_once("application/controllers/Home.php"); // loading home controller
14class Messenger_bot extends Home
15{
16 public $addon_data=array();
17 public function __construct()
18 {
19 parent::__construct();
20 $this->load->config('messenger_bot_config');// config
21 // getting addon information in array and storing to public variable
22 // addon_name,unique_name,module_id,addon_uri,author,author_uri,version,description,controller_name,installed
23 //------------------------------------------------------------------------------------------
24 $addon_path=APPPATH."modules/".strtolower($this->router->fetch_class())."/controllers/".ucfirst($this->router->fetch_class()).".php"; // path of addon controller
25 $addondata=$this->get_addon_data($addon_path);
26 $this->addon_data=$addondata;
27 $this->user_id=$this->session->userdata('user_id'); // user_id of logged in user, we may need it
28 $function_name=$this->uri->segment(2);
29 if($function_name!="webhook_callback" && $function_name!="send_reply_curl_call" && $function_name!="download_profile_pic")
30 {
31 // all addon must be login protected
32 //------------------------------------------------------------------------------------------
33 if ($this->session->userdata('logged_in')!= 1) redirect('home/login', 'location');
34 // if you want the addon to be accessed by admin and member who has permission to this addon
35 //-------------------------------------------------------------------------------------------
36 if(isset($addondata['module_id']) && is_numeric($addondata['module_id']) && $addondata['module_id']>0)
37 {
38 if($this->session->userdata('user_type') != 'Admin' && !in_array($addondata['module_id'],$this->module_access))
39 {
40 redirect('home/login_page', 'location');
41 exit();
42 }
43 }
44 }
45 }
46
47 public function create_subscriber($sender_id='', $page_id='')
48 {
49 $table = "messenger_bot_subscriber";
50 $where = array('messenger_bot_subscriber.subscribe_id' => $sender_id);
51 $is_exist = $this->basic->is_exist($table,$where);
52
53 $response=array();
54 $response['is_new']=FALSE;
55
56 if(!$is_exist){
57
58 $response['is_new']=TRUE;
59 $table = "messenger_bot_page_info";
60 $where['where'] = array('page_id' => $page_id,'bot_enabled'=>'1');
61 $page_access_token_array = $this->basic->get_data($table,$where,"page_access_token,user_id");
62 $page_access_token = $page_access_token_array[0]['page_access_token'];
63 $user_id = $page_access_token_array[0]['user_id'];
64 $user_data = $this->subscriber_info($page_access_token,$sender_id);
65 $data = array(
66 'user_id' => $user_id,
67 'page_id' => $page_id,
68 'subscribe_id' => $sender_id,
69 'first_name' => $user_data['first_name'],
70 'last_name' => $user_data['last_name'],
71 'profile_pic' => $user_data['profile_pic'],
72 // 'locale' => $user_data['locale'],
73 // 'timezone' => $user_data['timezone'],
74 // 'gender' => $user_data['gender'],
75 'subscribed_at' => date('Y-m-d H:i:s')
76 );
77 if($this->basic->insert_data('messenger_bot_subscriber',$data)){
78 return $response;
79 }else{
80 return $response;
81 }
82 }
83
84 return $response;
85 }
86
87 public function send_reply($access_token='',$reply='')
88 {
89 $url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token";
90 $ch = curl_init();
91 $headers = array("Content-type: application/json");
92 curl_setopt($ch, CURLOPT_URL, $url);
93 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
94
95 curl_setopt($ch,CURLOPT_POST,1);
96 curl_setopt($ch,CURLOPT_POSTFIELDS,$reply);
97
98 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
99 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
100 curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
101 curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');
102 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
103 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
104 $st=curl_exec($ch);
105
106 $result=json_decode($st,TRUE);
107 return $result;
108 }
109 public function send_reply_curl_call(){
110 ignore_user_abort(TRUE);
111 $access_token=$_POST['access_token'];
112 $reply=$_POST['reply'];
113
114 $url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token";
115 $ch = curl_init();
116 $headers = array("Content-type: application/json");
117 curl_setopt($ch, CURLOPT_URL, $url);
118 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
119
120 curl_setopt($ch,CURLOPT_POST,1);
121 curl_setopt($ch,CURLOPT_POSTFIELDS,$reply);
122
123 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
124 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
125 curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
126 curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');
127 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
128 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch);
129
130 $result=json_decode($st,TRUE);
131 return $result;
132 }
133
134 /**Sender action added 19.03.2018 by Konok**/
135
136 public function sender_action($sender_id,$action_type,$post_access_token='')
137 {
138
139 $url = "https://graph.facebook.com/v2.6/me/messages?access_token={$post_access_token}";
140
141 $post_data_array['recipient']['id']=$sender_id;
142 $post_data_array['sender_action']=$action_type;
143 $post_data=json_encode($post_data_array);
144 $ch = curl_init();
145 $headers = array("Content-type: application/json");
146 curl_setopt($ch, CURLOPT_URL, $url);
147 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
148 curl_setopt($ch,CURLOPT_POST,1);
149 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
150 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
151 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
152 curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
153 curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');
154 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
155 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
156 $st=curl_exec($ch);
157 $result=json_decode($st,TRUE);
158 return $result;
159 }
160 public function is_email($email)
161 {
162 $email=trim($email);
163 $is_valid=0;
164 /***Validation check***/
165 $pattern = '/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD';
166 if (preg_match($pattern, $email) === 1) {
167 $is_valid=1;
168 }
169 return $is_valid;
170 }
171 public function is_phone_number($phone)
172 {
173 $is_valid=0;
174 if(preg_match("#\+\d{7}#",$phone)===1)
175 $is_valid=1;
176
177 return $is_valid;
178
179 }
180
181 public function webhook_callback()
182 {
183 $challenge = $this->input->get_post('hub_challenge');
184 $verify_token =$this->input->get_post('hub_verify_token');
185 if($verify_token === $this->config->item("webhook_verify_token"))
186 {
187 echo $challenge;
188 die();
189 }
190 $currenTime=date("Y-m-d H:i:s");
191 $response_raw=file_get_contents("php://input");
192
193 /*file_put_contents("fb.txt",$response_raw, FILE_APPEND | LOCK_EX);
194 exit();*/
195
196 $response = json_decode($response_raw,TRUE);
197 if(isset($response['entry']['0']['messaging'][0]['delivery'])) exit();
198
199 // for package expired users bot will not work section
200 $page_id = $response['entry']['0']['messaging'][0]['recipient']['id'];
201 $table_name = "messenger_bot_page_info";
202 $where['where'] = array('messenger_bot_page_info.page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1');
203 $join = array('users'=>"users.id=messenger_bot_page_info.user_id,left");
204 $users_expiry_info = $this->basic->get_data($table_name,$where,array("users.id as user_id","users.expired_date","users.user_type","users.deleted","users.status","messenger_bot_page_info.id as page_auto_id"),$join);
205
206 $PAGE_AUTO_ID= isset($users_expiry_info[0]['page_auto_id']) ? $users_expiry_info[0]['page_auto_id'] : "0"; // Page's Database ID
207
208 if($PAGE_AUTO_ID=="0") exit();
209
210 if(isset($users_expiry_info[0]['user_type']) && $users_expiry_info[0]['user_type'] != 'Admin')
211 {
212 $user_status = $users_expiry_info[0]['status'];
213 $user_deleted = $users_expiry_info[0]['deleted'];
214 if($user_deleted == '1' || $user_status == '0') exit();
215
216 $expire_date = strtotime($users_expiry_info[0]['expired_date']);
217 $current_date = strtotime(date("Y-m-d"));
218 if ($expire_date < $current_date)
219 exit();
220 }
221 // end of for package expired users bot will not work section
222
223 if(isset($response['entry']['0']['messaging'][0]['read']))
224 {
225 $receipent_id_read=isset($response['entry']['0']['messaging'][0]['sender']['id'])?$response['entry']['0']['messaging'][0]['sender']['id']:"";
226 $where_array=array("subscribe_id"=>$receipent_id_read,"opened"=>"0","processed"=>'1',"error_message"=>"");
227 $campaign_info=$this->basic->get_data("messenger_bot_broadcast_serial_send",array("where"=>$where_array));
228 $campaign_id_read=array();
229 foreach($campaign_info as $read_info)
230 {
231 $campaign_id_read[]= $read_info['campaign_id'];
232 }
233 if(!empty($campaign_id_read))
234 {
235 $campaign_info_multiple=$this->basic->get_data("messenger_bot_broadcast_serial",array("where_in"=>array("id"=>$campaign_id_read)));
236 foreach ($campaign_info_multiple as $key => $value)
237 {
238 $cam_id=$value["id"];
239 $successfully_opened=$value["successfully_opened"];
240 $report_temp=json_decode($value["report"],true);
241 $report_temp[$receipent_id_read]["opened"]="1";
242 $report_temp[$receipent_id_read]["open_time"]=$currenTime;
243 $report_json=json_encode($report_temp);
244 $successfully_opened++;
245 $this->basic->update_data("messenger_bot_broadcast_serial",array("id"=>$cam_id),array("report"=>$report_json,"successfully_opened"=>$successfully_opened));
246 }
247 $update_data_read= array("opened"=>"1","open_time"=>$currenTime);
248 $this->basic->update_data('messenger_bot_broadcast_serial_send',$where_array,$update_data_read);
249 }
250
251
252 // drip message open update
253
254 if($this->db->table_exists('messenger_bot_drip_campaign'))
255 {
256 $drip_subscriber_data=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$receipent_id_read)));
257 if(!isset($drip_subscriber_data[0])) exit();
258 $driptime=date("Y-m-d H:i:s");
259 $drip_insert_data=array
260 (
261 "is_opened"=>"1",
262 "opened_at"=>$driptime,
263 "last_updated_at"=>$driptime
264 );
265 $this->basic->update_data("messenger_bot_drip_report",array("subscribe_id"=>$drip_subscriber_data[0]["subscribe_id"],"is_opened"=>"0"),$drip_insert_data);
266 }
267
268 exit();
269 }
270
271
272 //if it's optin from checkbox plugin, then tese action is not needed. As not information can be found for that.
273
274 $page_id = $response['entry']['0']['messaging'][0]['recipient']['id'];
275
276 if(!isset($response['entry'][0]['messaging'][0]['optin']['user_ref']))
277 {
278 $sender_id= $response['entry']['0']['messaging'][0]['sender']['id'];
279
280 //subscriber status
281 $subscriber_new_old_info= $this->create_subscriber($sender_id, $page_id);
282 $subscriber_where['where'] = array('subscribe_id' => $sender_id);
283 $subscriber_info = $this->basic->get_data("messenger_bot_subscriber",$subscriber_where,'',"","1");
284
285 }
286
287 /*** Check if it coming from after subscribing by checkbox plugin ***/
288
289 if($this->db->table_exists('messenger_bot_engagement_2way_chat_plugin'))
290 {
291 if(isset($response['entry'][0]['messaging'][0]['prior_message']['source']) && $response['entry'][0]['messaging'][0]['prior_message']['source']=="checkbox_plugin")
292 {
293
294 $user_identifier= isset($response['entry'][0]['messaging'][0]['prior_message']['identifier']) ? $response['entry'][0]['messaging'][0]['prior_message']['identifier']:"";
295
296 if($user_identifier!="")
297 {
298 //Get check_box plugin id searching with user_identifier.
299 $check_box_plugin_info= $this->basic->get_data("messenger_bot_engagement_checkbox_reply",array("where"=>array("user_ref"=>$user_identifier)));
300
301 $check_box_plugin_id=isset($check_box_plugin_info[0]['checkbox_plugin_id']) ? $check_box_plugin_info[0]['checkbox_plugin_id']:"";
302 $check_box_plugin_reference=isset($check_box_plugin_info[0]['reference']) ? $check_box_plugin_info[0]['reference']:"";
303
304 if($check_box_plugin_id!="")
305 {
306 // Update subscriber if new, then source is from checkbox plugin & also reffernce updated.
307 if($subscriber_new_old_info['is_new'])
308 {
309 $plugin_name=$response['entry'][0]['messaging'][0]['prior_message']['source'];
310 $subscriber_id_update=$subscriber_info[0]['id'];
311 $update_data=array("refferer_id"=>$check_box_plugin_reference,"refferer_source"=>$plugin_name,"refferer_uri"=>"N/A");
312 $this->basic->update_data("messenger_bot_subscriber",array("id"=>$subscriber_id_update),$update_data);
313 }
314
315 /****Assign Drip Messaging Campaing ID ***/
316 $drip_type="messenger_bot_engagement_checkbox";
317 $this->assign_drip_messaging_id($drip_type,$check_box_plugin_id,$PAGE_AUTO_ID,$subscriber_info[0]['id']);
318
319
320 $engagementer_info= $this->basic->get_data("messenger_bot_engagement_checkbox",array("where"=>array("id"=>$check_box_plugin_id)));
321
322 $label_ids=isset($engagementer_info[0]['label_ids']) ? $engagementer_info[0]['label_ids']:"";
323
324 if($label_ids!="" )
325 {
326 $post_data_label_assign=array("psid"=>$sender_id,"fb_page_id"=>$page_id,"label_auto_ids"=>$label_ids);
327 $url=base_url()."messenger_broadcaster/assign_label_webhook_call";
328 $ch = curl_init();
329 curl_setopt($ch, CURLOPT_URL, $url);
330 curl_setopt($ch,CURLOPT_POST,1);
331 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_label_assign);
332 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
333 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
334 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
335 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
336 $reply_response=curl_exec($ch);
337 }
338
339 }
340
341 }
342
343
344 }
345 }
346
347
348
349
350 if(isset($response['entry'][0]['messaging'][0]['message']['text'])
351 && !isset($response['entry'][0]['messaging'][0]['message']['quick_reply'])
352 && !isset($response['entry'][0]['messaging'][0]['postback'])
353 && !isset($response['entry'][0]['messaging'][0]['optin'])) //message for all
354 {
355 $messages = $response['entry']['0']['messaging'][0]['message']['text'];
356 $table_name = "messenger_bot";
357 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1');
358 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
359 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
360
361 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
362 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
363 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
364 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
365
366 if($enable_mark_seen)
367 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
368
369 /** Assign Drip Messaging Campaign ID ****/
370 $drip_type="default";
371 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
372
373 foreach ($messenger_bot_info as $key => $value) {
374 $cam_keywords_str = $value['keywords'];
375 $cam_keywords_array = explode(",", $cam_keywords_str);
376 foreach ($cam_keywords_array as $cam_keywords) {
377 if(function_exists('iconv') && function_exists('mb_detect_encoding')){
378 $encoded_word = mb_detect_encoding($cam_keywords);
379 if(isset($encoded_word)){
380 $cam_keywords = iconv( $encoded_word, "UTF-8//TRANSLIT", $cam_keywords );
381 }
382 }
383 $pos= stripos($messages,trim($cam_keywords));
384 if($pos!==FALSE){
385 $message_str = $value['message'];
386 $message_array = json_decode($message_str,true);
387 // if(!isset($message_array[1])) $message_array[1]=$message_array;
388 if(!isset($message_array[1])){
389 $message_array_org=$message_array;
390 $message_array=array();
391 $message_array[1]=$message_array_org;
392 }
393 foreach($message_array as $msg)
394 {
395 $template_type_file_track=$msg['message']['template_type'];
396 unset($msg['message']['template_type']);
397 $msg['messaging_type'] = "RESPONSE";
398 $reply = json_encode($msg);
399 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
400 if(isset($subscriber_info[0]['first_name']))
401 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
402 if(isset($subscriber_info[0]['last_name']))
403 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
404 $access_token = $value['page_access_token'];
405 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1")
406 {
407 if($enable_typing_on){
408 $this->sender_action($sender_id,"typing_on",$access_token);
409 sleep($typing_on_delay_time);
410 }
411
412 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio')
413 {
414 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
415 $url=base_url()."messenger_bot/send_reply_curl_call";
416 $ch = curl_init();
417 curl_setopt($ch, CURLOPT_URL, $url);
418 curl_setopt($ch,CURLOPT_POST,1);
419 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
420 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
421 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
422 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
423 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
424 $reply_response=curl_exec($ch);
425 }
426 else
427 $reply_response= $this->send_reply($access_token,$reply);
428
429 /*****Insert into database messenger_bot_reply_error_log if get error****/
430 if(isset($reply_response['error']['message'])){
431 $bot_settings_id= $value['id'];
432 $reply_error_message= $reply_response['error']['message'];
433 $error_time= date("Y-m-d H:i:s");
434 $page_table_id=$value['page_id'];
435 $user_id=$value['user_id'];
436
437 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
438 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
439 "error_time"=>$error_time);
440 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
441
442 }
443
444
445 }
446
447
448 }
449 die();
450 }
451 }
452 }
453 $table_name = "messenger_bot";
454 $where['where'] = array('messenger_bot.fb_page_id' => $page_id, 'messenger_bot.keyword_type' => 'no match','messenger_bot_page_info.bot_enabled' => '1');
455 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
456 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'1','','messenger_bot.id asc');
457
458 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
459 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
460 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
461 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
462
463 if(isset($messenger_bot_info[0]) && !empty($messenger_bot_info)){
464 $message_str = $messenger_bot_info[0]['message'];
465 $message_array = json_decode($message_str,true);
466 // if(!isset($message_array[1])) $message_array[1]=$message_array;
467 if(!isset($message_array[1])){
468 $message_array_org=$message_array;
469 $message_array=array();
470 $message_array[1]=$message_array_org;
471 }
472 foreach($message_array as $msg)
473 {
474 $template_type_file_track=$msg['message']['template_type'];
475 unset($msg['message']['template_type']);
476 $msg['messaging_type'] = "RESPONSE";
477 $reply = json_encode($msg);
478 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
479 if(isset($subscriber_info[0]['first_name']))
480 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
481 if(isset($subscriber_info[0]['last_name']))
482 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
483 $access_token = $messenger_bot_info[0]['page_access_token'];
484 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1")
485 {
486 if($enable_typing_on){
487 $this->sender_action($sender_id,"typing_on",$access_token);
488 sleep($typing_on_delay_time);
489 }
490
491 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio')
492 {
493 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
494 $url=base_url()."messenger_bot/send_reply_curl_call";
495 $ch = curl_init();
496 curl_setopt($ch, CURLOPT_URL, $url);
497 curl_setopt($ch,CURLOPT_POST,1);
498 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
499 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
500 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
501 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
502 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
503 $reply_response=curl_exec($ch);
504
505 }
506 else
507 $reply_response=$this->send_reply($access_token,$reply);
508 /*****Insert into database messenger_bot_reply_error_log if get error****/
509 if(isset($reply_response['error']['message'])){
510 $bot_settings_id= $value['id'];
511 $reply_error_message= $reply_response['error']['message'];
512 $error_time= date("Y-m-d H:i:s");
513 $page_table_id=$value['page_id'];
514 $user_id=$value['user_id'];
515
516 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
517 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
518 "error_time"=>$error_time);
519 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
520
521 }
522 }
523 }
524 die();
525 }
526 }
527
528 elseif(isset($response['entry'][0]['messaging'][0]['optin'])) //Optins from Send to messengers
529 {
530
531 if($this->db->table_exists('messenger_bot_engagement_2way_chat_plugin')){
532
533 $reference_id = isset($response['entry'][0]['messaging'][0]['optin']['ref'])?$response['entry'][0]['messaging'][0]['optin']['ref']:"";
534 $user_reference_id = isset($response['entry'][0]['messaging'][0]['optin']['user_ref'])?$response['entry'][0]['messaging'][0]['optin']['user_ref']:"";
535
536 if($user_reference_id!="")
537 $table_name="messenger_bot_engagement_checkbox";
538
539 else
540 {
541
542 $table_name="messenger_bot_engagement_send_to_msg";
543
544 if($subscriber_new_old_info['is_new'])
545 {
546
547 $plugin_name="SEND-TO-MESSENGER-PLUGIN";
548 $subscriber_id_update=$subscriber_info[0]['id'];
549
550 $update_data=array("refferer_id"=>$reference_id,"refferer_source"=>$plugin_name,"refferer_uri"=>"N/A");
551 $this->basic->update_data("messenger_bot_subscriber",array("id"=>$subscriber_id_update),$update_data);
552 }
553
554 }
555
556
557 $engagementer_info= $this->basic->get_data($table_name,array("where"=>array("reference"=>$reference_id)));
558
559 $label_ids=isset($engagementer_info[0]['label_ids']) ? $engagementer_info[0]['label_ids']:"";
560
561 $template_id=isset($engagementer_info[0]['template_id']) ? $engagementer_info[0]['template_id']:"";
562
563 $plugin_auto_id=isset($engagementer_info[0]['id']) ? $engagementer_info[0]['id']:"";
564
565 /*** Assign Drip Messaging Campaign ID *****/
566 if($user_reference_id==""){
567 $drip_type="messenger_bot_engagement_send_to_msg";
568 $this->assign_drip_messaging_id($drip_type,$plugin_auto_id,$PAGE_AUTO_ID,$subscriber_info[0]['id']);
569
570 }
571
572
573
574 /** Insert into messenger_bot_engagement_checkbox_reply if it comes from checkbox plugin ***/
575 if($user_reference_id!="")
576 {
577 $reference_data_checkbox['user_ref']=$user_reference_id;
578 $reference_data_checkbox['checkbox_plugin_id']=$plugin_auto_id;
579 $reference_data_checkbox['reference']=$reference_id;
580 $reference_data_checkbox['optin_time']=date("Y-m-d H:i:s");
581 $this->basic->insert_data("messenger_bot_engagement_checkbox_reply",$reference_data_checkbox);
582
583 }
584
585
586
587 if($label_ids!="" && $user_reference_id==""){ // Update Label if only send-to-messenger. Don't for checkbox for first time. As we can't infromation
588
589 $post_data_label_assign=array("psid"=>$sender_id,"fb_page_id"=>$page_id,"label_auto_ids"=>$label_ids);
590 $url=base_url()."messenger_broadcaster/assign_label_webhook_call";
591 $ch = curl_init();
592 curl_setopt($ch, CURLOPT_URL, $url);
593 curl_setopt($ch,CURLOPT_POST,1);
594 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_label_assign);
595 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
596 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
597 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
598 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
599 $reply_response=curl_exec($ch);
600
601 }
602
603 if($template_id!=""){
604
605 $postback_id_info= $this->basic->get_data("messenger_bot_postback",array("where"=>array("id"=>$template_id)));
606 $postback_id= isset($postback_id_info[0]['postback_id']) ? $postback_id_info[0]['postback_id'] :"";
607 }
608
609 $table_name = "messenger_bot";
610
611 if($template_id=="")
612
613 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'keyword_type'=>'get-started','messenger_bot_page_info.bot_enabled' => '1');
614
615 else
616
617 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1',"postback_id"=>$postback_id);
618
619 }
620
621 else{
622
623 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'keyword_type'=>'get-started','messenger_bot_page_info.bot_enabled' => '1');
624 /** Assign Drip Messaging Campaign ID ****/
625 $drip_type="default";
626 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
627 }
628
629
630 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
631 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
632
633 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
634 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
635 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
636 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
637
638
639 if($enable_mark_seen && $user_reference_id=="")
640 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
641
642
643 foreach ($messenger_bot_info as $key => $value) {
644 $message_str = $value['message'];
645 $message_array = json_decode($message_str,true);
646 // if(!isset($message_array[1])) $message_array[1]=$message_array;
647 if(!isset($message_array[1])){
648 $message_array_org=$message_array;
649 $message_array=array();
650 $message_array[1]=$message_array_org;
651 }
652 foreach($message_array as $msg)
653 {
654 $template_type_file_track=$msg['message']['template_type'];
655 unset($msg['message']['template_type']);
656 $msg['messaging_type'] = "RESPONSE";
657 $reply = json_encode($msg);
658
659 if($user_reference_id=="") // if comes from send-to-messenger rather than checkbox plugin
660 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
661
662 else // if comes from checkbox plugin, then it's different message structure.
663 $reply=str_replace('{"id":"replace_id"}', '{"user_ref":"'.$user_reference_id.'"}', $reply);
664
665 if(isset($subscriber_info[0]['first_name']))
666 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
667 if(isset($subscriber_info[0]['last_name']))
668 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
669 $access_token = $value['page_access_token'];
670
671 if((isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1") || $user_reference_id!=""){
672
673 if($enable_typing_on && $user_reference_id==""){
674 $this->sender_action($sender_id,"typing_on",$access_token);
675 sleep($typing_on_delay_time);
676 }
677
678 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
679 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
680 $url=base_url()."messenger_bot/send_reply_curl_call";
681 $ch = curl_init();
682 curl_setopt($ch, CURLOPT_URL, $url);
683 curl_setopt($ch,CURLOPT_POST,1);
684 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
685 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
686 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
687 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
688 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
689 $reply_response=curl_exec($ch);
690
691 }
692 else
693 $reply_response=$this->send_reply($access_token,$reply);
694
695 /*****Insert into database messenger_bot_reply_error_log if get error****/
696 if(isset($reply_response['error']['message'])){
697 $bot_settings_id= $value['id'];
698 $reply_error_message= $reply_response['error']['message'];
699 $error_time= date("Y-m-d H:i:s");
700 $page_table_id=$value['page_id'];
701 $user_id=$value['user_id'];
702
703 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
704 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
705 "error_time"=>$error_time);
706 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
707
708 }
709 }
710 }
711 die();
712 }
713 }
714
715
716 elseif((isset($response['entry'][0]['messaging'][0]['postback']['referral']['type']) && $response['entry'][0]['messaging'][0]['postback']['referral']['type']=="OPEN_THREAD") ||
717
718 (isset($response['entry'][0]['messaging'][0]['postback']['payload']) && $response['entry'][0]['messaging'][0]['postback']['payload']=="GET_STARTED_PAYLOAD" ) ||
719 (isset($response['entry'][0]['messaging'][0]['referral']['source']) && $response['entry'][0]['messaging'][0]['referral']['type']=="OPEN_THREAD"))
720
721 //When not any conversation and get started button is added
722 {
723
724 /**Check If the Engagement add-on is installed or not. Check a table of this addon is exist or not**/
725
726 if($this->db->table_exists('messenger_bot_engagement_2way_chat_plugin')){
727
728
729 /* If get started not set, then get the refferal means already have the conversation */
730 $reference_id = isset($response['entry'][0]['messaging'][0]['postback']['referral']['ref'])?$response['entry'][0]['messaging'][0]['postback']['referral']['ref']:$response['entry'][0]['messaging'][0]['referral']['ref'];
731
732 $reference_source=isset($response['entry'][0]['messaging'][0]['postback']['referral']['source'])?$response['entry'][0]['messaging'][0]['postback']['referral']['source']:$response['entry'][0]['messaging'][0]['referral']['source'];
733
734
735 if($reference_source=="CUSTOMER_CHAT_PLUGIN"){ // If from Custom CHat
736 $table_name="messenger_bot_engagement_2way_chat_plugin";
737 $plugin_name=$reference_source;
738 $refferer_uri=isset($response['entry'][0]['messaging'][0]['postback']['referral']['referer_uri'])?$response['entry'][0]['messaging'][0]['postback']['referral']['referer_uri']:"";
739 $drip_type="messenger_bot_engagement_2way_chat_plugin";
740 }
741
742 else if($reference_source=="SHORTLINK"){ // If from custom link
743
744 $table_name="messenger_bot_engagement_mme";
745 $plugin_name=$reference_source;
746 $refferer_uri="N/A";
747 $drip_type="messenger_bot_engagement_mme";
748
749 }
750 else if($reference_source=="MESSENGER_CODE"){ //if messenger codes
751
752 $table_name="messenger_bot_engagement_messenger_codes";
753 $plugin_name=$reference_source;
754 $refferer_uri="N/A";
755 $drip_type="messenger_bot_engagement_messenger_codes";
756
757 }
758 else{ // If come from page directly
759 $table_name="";
760 $plugin_name="FB PAGE";
761 $refferer_uri="N/A";
762 $drip_type="default";
763 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
764 }
765
766 if($subscriber_new_old_info['is_new']){
767 $subscriber_id_update=$subscriber_info[0]['id'];
768 $update_data=array("refferer_id"=>$reference_id,"refferer_source"=>$plugin_name,"refferer_uri"=>$refferer_uri);
769 $this->basic->update_data("messenger_bot_subscriber",array("id"=>$subscriber_id_update),$update_data);
770 }
771
772
773 $postback_id="";
774
775 if($table_name!=""){
776
777 $engagementer_info= $this->basic->get_data($table_name,array("where"=>array("reference"=>$reference_id)));
778
779 $plugin_auto_id=isset($engagementer_info[0]['id']) ? $engagementer_info[0]['id']:"";
780
781 /**** Update Drip Messaging Campaign ID ****/
782 $this->assign_drip_messaging_id($drip_type,$plugin_auto_id,$PAGE_AUTO_ID,$subscriber_info[0]['id']);
783
784
785
786 $label_ids=isset($engagementer_info[0]['label_ids']) ? $engagementer_info[0]['label_ids']:"";
787 $template_id=isset($engagementer_info[0]['template_id']) ? $engagementer_info[0]['template_id']:"";
788 if(!empty($label_ids)){
789
790 $post_data_label_assign=array("psid"=>$sender_id,"fb_page_id"=>$page_id,"label_auto_ids"=>$label_ids);
791 $url=base_url()."messenger_broadcaster/assign_label_webhook_call";
792 $ch = curl_init();
793 curl_setopt($ch, CURLOPT_URL, $url);
794 curl_setopt($ch,CURLOPT_POST,1);
795 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_label_assign);
796 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
797 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
798 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
799 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
800 $reply_response=curl_exec($ch);
801
802 }
803
804 if($template_id!=""){
805 $postback_id_info= $this->basic->get_data("messenger_bot_postback",array("where"=>array("id"=>$template_id)));
806 $postback_id= isset($postback_id_info[0]['postback_id']) ? $postback_id_info[0]['postback_id'] :"";
807
808 }
809
810 }
811
812
813 if($postback_id=="")
814
815 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'keyword_type'=>'get-started','messenger_bot_page_info.bot_enabled' => '1');
816
817 else
818 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1',"postback_id"=>$postback_id);
819
820 }
821
822 else{ // if engagement add-on not installed, then default query for get started.
823
824 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'keyword_type'=>'get-started','messenger_bot_page_info.bot_enabled' => '1');
825 /** Assign Drip Messaging Campaign ID ****/
826 $drip_type="default";
827 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
828 }
829
830
831
832 $messages = $response['entry'][0]['messaging'][0]['message']['text'];
833 $table_name = "messenger_bot";
834
835 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
836 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
837
838 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
839 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
840 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
841 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
842
843
844 if($enable_mark_seen) // mark ass seen action
845 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
846
847 foreach ($messenger_bot_info as $key => $value) {
848 $message_str = $value['message'];
849 $message_array = json_decode($message_str,true);
850 // if(!isset($message_array[1])) $message_array[1]=$message_array;
851 if(!isset($message_array[1])){
852 $message_array_org=$message_array;
853 $message_array=array();
854 $message_array[1]=$message_array_org;
855 }
856 foreach($message_array as $msg)
857 {
858 $template_type_file_track=$msg['message']['template_type'];
859 unset($msg['message']['template_type']);
860 $msg['messaging_type'] = "RESPONSE";
861 $reply = json_encode($msg);
862 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
863 if(isset($subscriber_info[0]['first_name']))
864 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
865 if(isset($subscriber_info[0]['last_name']))
866 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
867 $access_token = $value['page_access_token'];
868 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1"){
869
870 if($enable_typing_on){
871 $this->sender_action($sender_id,"typing_on",$access_token);
872 sleep($typing_on_delay_time);
873 }
874 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
875 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
876 $url=base_url()."messenger_bot/send_reply_curl_call";
877 $ch = curl_init();
878 curl_setopt($ch, CURLOPT_URL, $url);
879 curl_setopt($ch,CURLOPT_POST,1);
880 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
881 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
882 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
883 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
884 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
885 $reply_response=curl_exec($ch);
886
887 }
888 else
889 $reply_response=$this->send_reply($access_token,$reply);
890 /*****Insert into database messenger_bot_reply_error_log if get error****/
891 if(isset($reply_response['error']['message'])){
892 $bot_settings_id= $value['id'];
893 $reply_error_message= $reply_response['error']['message'];
894 $error_time= date("Y-m-d H:i:s");
895 $page_table_id=$value['page_id'];
896 $user_id=$value['user_id'];
897
898 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
899 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
900 "error_time"=>$error_time);
901 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
902
903 }
904 }
905 }
906
907 die();
908 }
909 }
910 elseif (isset($response['entry'][0]['messaging'][0]['message']['quick_reply'])) //quick_reply
911 {
912 //catch payload_id from response
913 $payload_id = $response['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];
914 $messages = $response['entry'][0]['messaging'][0]['message']['text'];
915 $table_name = "messenger_bot";
916 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1');
917 $this->db->where("FIND_IN_SET('$payload_id',messenger_bot.postback_id) !=", 0);
918 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
919 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
920
921 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
922 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
923 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
924 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
925
926 /*** Insert email into database if it's email from quick reply ***/
927
928 if($this->is_email($payload_id)){
929
930 $fb_page_id=$subscriber_info[0]['page_id'];
931 $user_id=$subscriber_info[0]['user_id'];
932 $fb_user_id=$subscriber_info[0]['subscribe_id'];
933 $fb_user_first_name=$subscriber_info[0]['first_name'];
934 $fb_user_last_name=$subscriber_info[0]['last_name'];
935 $profile_pic=$subscriber_info[0]['profile_pic'];
936 $update_time=date("Y-m-d H:i:s");
937 $email=$payload_id;
938
939 $sql="INSERT INTO messenger_bot_quick_reply_email (fb_page_id,user_id,fb_user_id,fb_user_first_name,fb_user_last_name,
940 profile_pic,email,entry_time,last_update_time) VALUES ('$fb_page_id','$user_id','$fb_user_id','$fb_user_first_name',
941 '$fb_user_last_name','$profile_pic','$email','$update_time','$update_time')
942 ON DUPLICATE KEY UPDATE last_update_time='$update_time';
943 ";
944 $this->basic->execute_complex_query($sql);
945 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1',"keyword_type"=>"email-quick-reply");
946 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
947 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
948 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
949 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
950
951 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
952 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
953 }
954 elseif($this->is_phone_number($payload_id)){
955
956 $fb_page_id=$subscriber_info[0]['page_id'];
957 $user_id=$subscriber_info[0]['user_id'];
958 $fb_user_id=$subscriber_info[0]['subscribe_id'];
959 $fb_user_first_name=$subscriber_info[0]['first_name'];
960 $fb_user_last_name=$subscriber_info[0]['last_name'];
961 $profile_pic=$subscriber_info[0]['profile_pic'];
962 $update_time=date("Y-m-d H:i:s");
963 $phone_number=$payload_id;
964
965 $sql="INSERT INTO messenger_bot_quick_reply_email (fb_page_id,user_id,fb_user_id,fb_user_first_name,fb_user_last_name,
966 profile_pic,phone_number,phone_number_entry_time,phone_number_last_update)
967 VALUES ('$fb_page_id','$user_id','$fb_user_id','$fb_user_first_name',
968 '$fb_user_last_name','$profile_pic','$phone_number','$update_time','$update_time')
969 ON DUPLICATE KEY UPDATE phone_number_last_update='$update_time',phone_number='$phone_number';";
970
971
972 $this->basic->execute_complex_query($sql);
973 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1',"keyword_type"=>"phone-quick-reply");
974 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
975 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
976
977 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
978 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
979 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
980 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
981 }
982
983
984
985 if($enable_mark_seen)
986 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
987
988
989 /** Assign Drip Messaging Campaign ID ****/
990 $drip_type="default";
991 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
992
993
994
995
996 foreach ($messenger_bot_info as $key => $value) {
997 $message_str = $value['message'];
998 $message_array = json_decode($message_str,true);
999 // if(!isset($message_array[1])) $message_array[1]=$message_array;
1000 if(!isset($message_array[1])){
1001 $message_array_org=$message_array;
1002 $message_array=array();
1003 $message_array[1]=$message_array_org;
1004 }
1005 foreach($message_array as $msg)
1006 {
1007 $template_type_file_track=$msg['message']['template_type'];
1008 unset($msg['message']['template_type']);
1009 $msg['messaging_type'] = "RESPONSE";
1010 $reply = json_encode($msg);
1011 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
1012 if(isset($subscriber_info[0]['first_name']))
1013 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
1014 if(isset($subscriber_info[0]['last_name']))
1015 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
1016 $access_token = $value['page_access_token'];
1017 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1"){
1018
1019 if($enable_typing_on){
1020 $this->sender_action($sender_id,"typing_on",$access_token);
1021 sleep($typing_on_delay_time);
1022 }
1023 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
1024 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
1025 $url=base_url()."messenger_bot/send_reply_curl_call";
1026 $ch = curl_init();
1027 curl_setopt($ch, CURLOPT_URL, $url);
1028 curl_setopt($ch,CURLOPT_POST,1);
1029 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
1030 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1031 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1032 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1033 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1034 $reply_response=curl_exec($ch);
1035
1036 }
1037 else
1038 $reply_response=$this->send_reply($access_token,$reply);
1039 /*****Insert into database messenger_bot_reply_error_log if get error****/
1040 if(isset($reply_response['error']['message'])){
1041 $bot_settings_id= $value['id'];
1042 $reply_error_message= $reply_response['error']['message'];
1043 $error_time= date("Y-m-d H:i:s");
1044 $page_table_id=$value['page_id'];
1045 $user_id=$value['user_id'];
1046
1047 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
1048 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
1049 "error_time"=>$error_time);
1050 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
1051
1052 }
1053 }
1054 }
1055 die();
1056 }
1057 }
1058 elseif(isset($response['entry'][0]['messaging'][0]['postback']))//Clicking on Payload Button like Start Chatting
1059 {
1060 $payload_id = $response['entry'][0]['messaging'][0]['postback']['payload'];
1061 $messages = $response['entry'][0]['messaging'][0]['message']['text'];
1062 $table_name = "messenger_bot";
1063 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1');
1064 $this->db->where("FIND_IN_SET('$payload_id',messenger_bot.postback_id) !=", 0);
1065 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
1066 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
1067
1068 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
1069 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
1070 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
1071 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
1072
1073
1074 if($enable_mark_seen)
1075 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
1076
1077
1078 /** Assign Drip Messaging Campaign ID ****/
1079 $drip_type="default";
1080 $this->assign_drip_messaging_id($drip_type,"0",$PAGE_AUTO_ID,$subscriber_info[0]['id']);
1081
1082
1083
1084 if($payload_id=="UNSUBSCRIBE_QUICK_BOXER")
1085 {
1086 $post_data_unsubscribe=array("psid"=>$sender_id,"fb_page_id"=>$page_id);
1087 $url=base_url()."messenger_broadcaster/unsubscribe_webhook_call";
1088 $ch = curl_init();
1089 curl_setopt($ch, CURLOPT_URL, $url);
1090 curl_setopt($ch,CURLOPT_POST,1);
1091 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_unsubscribe);
1092 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1093 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1094 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1095 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1096 $reply_response=curl_exec($ch);
1097 }
1098 elseif($payload_id=="RESUBSCRIBE_QUICK_BOXER")
1099 {
1100 $post_data_unsubscribe=array("psid"=>$sender_id,"fb_page_id"=>$page_id);
1101 $url=base_url()."messenger_broadcaster/resubscribe_webhook_call";
1102 $ch = curl_init();
1103 curl_setopt($ch, CURLOPT_URL, $url);
1104 curl_setopt($ch,CURLOPT_POST,1);
1105 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_unsubscribe);
1106 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1107 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1108 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1109 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1110 $reply_response=curl_exec($ch);
1111 }
1112
1113 foreach ($messenger_bot_info as $key => $value) {
1114
1115 $message_str = $value['message'];
1116 $message_array = json_decode($message_str,true);
1117 // if(!isset($message_array[1])) $message_array[1]=$message_array;
1118 if(!isset($message_array[1])){
1119 $message_array_org=$message_array;
1120 $message_array=array();
1121 $message_array[1]=$message_array_org;
1122 }
1123 foreach($message_array as $msg)
1124 {
1125 $template_type_file_track=$msg['message']['template_type'];
1126 unset($msg['message']['template_type']);
1127 $msg['messaging_type'] = "RESPONSE";
1128 $reply = json_encode($msg);
1129 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
1130 if(isset($subscriber_info[0]['first_name']))
1131 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
1132 if(isset($subscriber_info[0]['last_name']))
1133 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
1134 $access_token = $value['page_access_token'];
1135 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1"){
1136
1137 if($enable_typing_on){
1138 $this->sender_action($sender_id,"typing_on",$access_token);
1139 sleep($typing_on_delay_time);
1140 }
1141
1142
1143 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
1144 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
1145 $url=base_url()."messenger_bot/send_reply_curl_call";
1146 $ch = curl_init();
1147 curl_setopt($ch, CURLOPT_URL, $url);
1148 curl_setopt($ch,CURLOPT_POST,1);
1149 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
1150 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1151 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1152 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1153 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1154 $reply_response=curl_exec($ch);
1155
1156 }
1157 else
1158 $reply_response=$this->send_reply($access_token,$reply);
1159 /*****Insert into database messenger_bot_reply_error_log if get error****/
1160 if(isset($reply_response['error']['message'])){
1161 $bot_settings_id= $value['id'];
1162 $reply_error_message= $reply_response['error']['message'];
1163 $error_time= date("Y-m-d H:i:s");
1164 $page_table_id=$value['page_id'];
1165 $user_id=$value['user_id'];
1166
1167 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
1168 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
1169 "error_time"=>$error_time);
1170 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
1171
1172 }
1173 }
1174 }
1175 die();
1176 }
1177 }
1178 elseif(isset($response['entry'][0]['messaging'][0]['message']['attachments'][0]['payload']['coordinates']['lat'])){
1179
1180 $lattitued= $response['entry'][0]['messaging'][0]['message']['attachments'][0]['payload']['coordinates']['lat'];
1181 $longitude= $response['entry'][0]['messaging'][0]['message']['attachments'][0]['payload']['coordinates']['long'];
1182 $location_bing_map=$response['entry'][0]['messaging'][0]['message']['attachments'][0]['url'];
1183 $user_location=$lattitued.",".$longitude;
1184
1185
1186 $fb_page_id=$subscriber_info[0]['page_id'];
1187 $user_id=$subscriber_info[0]['user_id'];
1188 $fb_user_id=$subscriber_info[0]['subscribe_id'];
1189 $fb_user_first_name=$subscriber_info[0]['first_name'];
1190 $fb_user_last_name=$subscriber_info[0]['last_name'];
1191 $profile_pic=$subscriber_info[0]['profile_pic'];
1192 $update_time=date("Y-m-d H:i:s");
1193
1194
1195 $sql="INSERT INTO messenger_bot_quick_reply_email (fb_page_id,user_id,fb_user_id,fb_user_first_name,fb_user_last_name,
1196 profile_pic,user_location,location_map_url)
1197 VALUES ('$fb_page_id','$user_id','$fb_user_id','$fb_user_first_name',
1198 '$fb_user_last_name','$profile_pic','$user_location','$location_bing_map')
1199 ON DUPLICATE KEY UPDATE user_location='$user_location',location_map_url='$location_bing_map',last_update_time='$update_time'";
1200
1201
1202 $this->basic->execute_complex_query($sql);
1203 $table_name = "messenger_bot";
1204 $where['where'] = array('messenger_bot.fb_page_id' => $page_id,'messenger_bot_page_info.bot_enabled' => '1',"keyword_type"=>"location-quick-reply");
1205 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
1206 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'','','messenger_bot.id asc');
1207
1208 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
1209 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
1210 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
1211 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
1212
1213
1214 if($enable_mark_seen)
1215 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
1216 foreach ($messenger_bot_info as $key => $value) {
1217 $message_str = $value['message'];
1218 $message_array = json_decode($message_str,true);
1219 // if(!isset($message_array[1])) $message_array[1]=$message_array;
1220 if(!isset($message_array[1])){
1221 $message_array_org=$message_array;
1222 $message_array=array();
1223 $message_array[1]=$message_array_org;
1224 }
1225 foreach($message_array as $msg)
1226 {
1227 $template_type_file_track=$msg['message']['template_type'];
1228 unset($msg['message']['template_type']);
1229 $msg['messaging_type'] = "RESPONSE";
1230 $reply = json_encode($msg);
1231 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
1232 if(isset($subscriber_info[0]['first_name']))
1233 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
1234 if(isset($subscriber_info[0]['last_name']))
1235 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
1236 $access_token = $value['page_access_token'];
1237 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1"){
1238
1239 if($enable_typing_on){
1240 $this->sender_action($sender_id,"typing_on",$access_token);
1241 sleep($typing_on_delay_time);
1242 }
1243 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
1244 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
1245 $url=base_url()."messenger_bot/send_reply_curl_call";
1246 $ch = curl_init();
1247 curl_setopt($ch, CURLOPT_URL, $url);
1248 curl_setopt($ch,CURLOPT_POST,1);
1249 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
1250 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1251 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1252 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1253 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1254 $reply_response=curl_exec($ch);
1255
1256 }
1257 else
1258 $reply_response=$this->send_reply($access_token,$reply);
1259 /*****Insert into database messenger_bot_reply_error_log if get error****/
1260 if(isset($reply_response['error']['message'])){
1261 $bot_settings_id= $value['id'];
1262 $reply_error_message= $reply_response['error']['message'];
1263 $error_time= date("Y-m-d H:i:s");
1264 $page_table_id=$value['page_id'];
1265 $user_id=$value['user_id'];
1266
1267 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
1268 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
1269 "error_time"=>$error_time);
1270 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
1271
1272 }
1273 }
1274 }
1275 die();
1276 }
1277
1278 }
1279 else
1280 {
1281 $table_name = "messenger_bot";
1282 $where['where'] = array('messenger_bot.fb_page_id' => $page_id, 'messenger_bot.keyword_type' => 'no match','messenger_bot_page_info.bot_enabled' => '1');
1283 $join = array('messenger_bot_page_info'=>"messenger_bot_page_info.page_id=messenger_bot.fb_page_id,left");
1284 $messenger_bot_info = $this->basic->get_data($table_name,$where,array("messenger_bot.*","messenger_bot_page_info.page_access_token as page_access_token","messenger_bot_page_info.enable_mark_seen as enable_mark_seen","messenger_bot_page_info.enbale_type_on as enbale_type_on","messenger_bot_page_info.reply_delay_time as reply_delay_time"),$join,'1','','messenger_bot.id asc');
1285
1286 $enable_mark_seen=$messenger_bot_info[0]['enable_mark_seen'];
1287 $enable_typing_on=$messenger_bot_info[0]['enbale_type_on'];
1288 $typing_on_delay_time = $messenger_bot_info[0]['reply_delay_time'];
1289 if($typing_on_delay_time=="0") $typing_on_delay_time=1;
1290
1291
1292 if($enable_mark_seen)
1293 $this->sender_action($sender_id,"mark_seen",$messenger_bot_info[0]['page_access_token']);
1294 if(isset($messenger_bot_info[0]) && !empty($messenger_bot_info)){
1295 $message_str = $messenger_bot_info[0]['message'];
1296 $message_array = json_decode($message_str,true);
1297 // if(!isset($message_array[1])) $message_array[1]=$message_array;
1298 if(!isset($message_array[1])){
1299 $message_array_org=$message_array;
1300 $message_array=array();
1301 $message_array[1]=$message_array_org;
1302 }
1303 foreach($message_array as $msg)
1304 {
1305 $template_type_file_track=$msg['message']['template_type'];
1306 unset($msg['message']['template_type']);
1307 $msg['messaging_type'] = "RESPONSE";
1308 $reply = json_encode($msg);
1309 $reply=str_replace('{"id":"replace_id"}', '{"id":"'.$sender_id.'"}', $reply);
1310 if(isset($subscriber_info[0]['first_name']))
1311 $reply=str_replace('#LEAD_USER_FIRST_NAME#', $subscriber_info[0]['first_name'], $reply);
1312 if(isset($subscriber_info[0]['last_name']))
1313 $reply=str_replace('#LEAD_USER_LAST_NAME#', $subscriber_info[0]['last_name'], $reply);
1314 $access_token = $messenger_bot_info[0]['page_access_token'];
1315 if(isset($subscriber_info[0]['status']) && $subscriber_info[0]['status']=="1"){
1316
1317 if($enable_typing_on){
1318 $this->sender_action($sender_id,"typing_on",$access_token);
1319 sleep($typing_on_delay_time);
1320 }
1321 if($template_type_file_track=='video' || $template_type_file_track=='file' || $template_type_file_track=='audio'){
1322 $post_data=array("access_token"=>$access_token,"reply"=>$reply);
1323 $url=base_url()."messenger_bot/send_reply_curl_call";
1324 $ch = curl_init();
1325 curl_setopt($ch, CURLOPT_URL, $url);
1326 curl_setopt($ch,CURLOPT_POST,1);
1327 curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
1328 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
1329 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1330 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1331 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1332 $reply_response=curl_exec($ch);
1333
1334 }
1335 else
1336 $reply_response=$this->send_reply($access_token,$reply);
1337 /*****Insert into database messenger_bot_reply_error_log if get error****/
1338 if(isset($reply_response['error']['message'])){
1339 $bot_settings_id= $value['id'];
1340 $reply_error_message= $reply_response['error']['message'];
1341 $error_time= date("Y-m-d H:i:s");
1342 $page_table_id=$value['page_id'];
1343 $user_id=$value['user_id'];
1344
1345 $error_insert_data=array("page_id"=>$page_table_id,"fb_page_id"=>$page_id,"user_id"=>$user_id,
1346 "error_message"=>$reply_error_message,"bot_settings_id"=>$bot_settings_id,
1347 "error_time"=>$error_time);
1348 $this->basic->insert_data('messenger_bot_reply_error_log',$error_insert_data);
1349
1350 }
1351 }
1352 }
1353
1354 die();
1355 }
1356 }
1357 }
1358
1359 public function assign_drip_messaging_id($drip_type="default",$check_box_plugin_id="0",$PAGE_AUTO_ID,$subscriber_table_id)
1360 {
1361 $date_time=date("Y-m-d H:i:s");
1362
1363 if($this->db->table_exists('messenger_bot_drip_campaign')){
1364
1365 $engagement_table_id= $check_box_plugin_id;
1366
1367 $drip_messaging_campaign_info= $this->basic->get_data("messenger_bot_drip_campaign",array("where"=>array("engagement_table_id"=>$engagement_table_id,"drip_type"=>$drip_type,"page_id"=>$PAGE_AUTO_ID)));
1368
1369 $drip_campaign_id= isset($drip_messaging_campaign_info[0]['id']) ? $drip_messaging_campaign_info[0]['id']: "";
1370
1371 $subscrier_update_data = array(
1372 "messenger_bot_drip_campaign_id" =>$drip_campaign_id,
1373 "messenger_bot_drip_last_completed_day"=>"0",
1374 "drip_type" =>$drip_type,
1375 "messenger_bot_drip_initial_date" =>$date_time
1376 );
1377
1378 if($drip_campaign_id==""){
1379
1380 $drip_messaging_campaign_info= $this->basic->get_data("messenger_bot_drip_campaign",array("where"=>array("engagement_table_id"=>"0","drip_type"=>"default","page_id"=>$PAGE_AUTO_ID)));
1381
1382 $drip_campaign_id= isset($drip_messaging_campaign_info[0]['id']) ? $drip_messaging_campaign_info[0]['id']: "";
1383 $drip_type="default";
1384
1385 /** Don't update completed day if it's default. ****/
1386 $subscrier_update_data = array(
1387 "messenger_bot_drip_campaign_id" =>$drip_campaign_id,
1388 "drip_type" =>$drip_type,
1389 "messenger_bot_drip_initial_date" =>$date_time
1390 );
1391
1392 }
1393
1394 if($drip_type!="default")
1395 $subscrier_update_where= array("messenger_bot_drip_campaign_id !="=>$drip_campaign_id,"drip_type !=" =>$drip_type,"id" =>$subscriber_table_id);
1396
1397 else
1398 $subscrier_update_where= array("messenger_bot_drip_campaign_id"=>"0","id" =>$subscriber_table_id);
1399
1400
1401 $this->basic->update_data("messenger_bot_subscriber",$subscrier_update_where,$subscrier_update_data);
1402 }
1403
1404 }
1405
1406
1407 public function subscriber_info($access_token='',$sender_id='')
1408 {
1409 $url = "https://graph.facebook.com/v2.6/$sender_id?access_token=$access_token";
1410 $ch = curl_init();
1411 $headers = array("Content-type: application/json");
1412 curl_setopt($ch, CURLOPT_URL, $url);
1413 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1414 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1415 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1416 curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
1417 curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');
1418 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1419 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
1420 $st=curl_exec($ch);
1421 $result=json_decode($st,TRUE);
1422 return $result;
1423 }
1424
1425 public function index()
1426 {
1427 $total_enabled_bot = $this->basic->get_data('messenger_bot_page_info',['where'=>['user_id'=>$this->user_id,'bot_enabled'=>'1']],['count(id) as total_enabled_bot']);
1428 $total_errors_in_bot = $this->basic->get_data('messenger_bot_reply_error_log',['where'=>['user_id'=>$this->user_id]],['count(id) as total_errors_in_bot']);
1429 $total_enabled_persistent_menu = $this->basic->get_data('messenger_bot_page_info',['where'=>['user_id'=>$this->user_id,'persistent_enabled'=>'1']],['count(id) as total_enabled_persistent_menu']);
1430 $total_subscribers = $this->basic->get_data('messenger_bot_subscriber',['where'=>['user_id'=>$this->user_id]],['count(id) as total_subscribers']);
1431 $total_male_subscribers = $this->basic->get_data('messenger_bot_subscriber',['where'=>['user_id'=>$this->user_id,'gender'=>'male']],['count(id) as total_subscribers']);
1432 $total_female_subscribers = $this->basic->get_data('messenger_bot_subscriber',['where'=>['user_id'=>$this->user_id,'gender'=>'female']],['count(id) as total_subscribers']);
1433 $gender_type_data = array(
1434 0 => array(
1435 "value" => $total_male_subscribers[0]['total_subscribers'],
1436 "color" => '#FFCF75',
1437 "highlight" => '#FFCF75',
1438 "label" => $this->lang->line('Male subscriber')
1439 ),
1440 1 => array(
1441 "value" => $total_female_subscribers[0]['total_subscribers'],
1442 "color" => '#FF8000',
1443 "highlight" => '#FF8000',
1444 "label" => $this->lang->line('Female subscriber')
1445 )
1446 );
1447 $data['gender_type_data'] = $gender_type_data;
1448 $data['total_male_subscribers'] = $total_male_subscribers[0]['total_subscribers'];
1449 $data['total_female_subscribers'] = $total_female_subscribers[0]['total_subscribers'];
1450
1451 $data['total_enabled_bot'] = $total_enabled_bot[0]['total_enabled_bot'];
1452 $data['total_errors_in_bot'] = $total_errors_in_bot[0]['total_errors_in_bot'];
1453 $data['total_enabled_persistent_menu'] = $total_enabled_persistent_menu[0]['total_enabled_persistent_menu'];
1454 $data['total_subscribers'] = $total_subscribers[0]['total_subscribers'];
1455 $curdate=date("Y-m-d");
1456 $from_date=date('Y-m-d', strtotime($curdate. " - 30 days"));
1457 $from_date = $from_date." 00:00:00";
1458 $to_date = $curdate." 23:59:59";
1459 $where = array();
1460 $where['where'] = array(
1461 "subscribed_at >=" => $from_date,
1462 "subscribed_at <=" => $to_date,
1463 "gender" => 'male',
1464 "user_id" => $this->user_id
1465 );
1466 $select = array(
1467 "date_format(subscribed_at,'%Y-%m-%d') as date",
1468 "count(id) as number_of_subscriber"
1469 );
1470 $day_wise_male_subscribers = $this->basic->get_data('messenger_bot_subscriber',$where,$select,$join='',$limit='',$start='',$order_by='',$group_by="date");
1471 $male_subscribers = array();
1472 foreach($day_wise_male_subscribers as $value)
1473 {
1474 $male_subscribers[$value['date']] = $value['number_of_subscriber'];
1475 }
1476 $where = array();
1477 $where['where'] = array(
1478 "subscribed_at >=" => $from_date,
1479 "subscribed_at <=" => $to_date,
1480 "gender" => 'female',
1481 "user_id" => $this->user_id
1482 );
1483 $select = array(
1484 "date_format(subscribed_at,'%Y-%m-%d') as date",
1485 "count(id) as number_of_subscriber"
1486 );
1487 $day_wise_female_subscribers = $this->basic->get_data('messenger_bot_subscriber',$where,$select,$join='',$limit='',$start='',$order_by='',$group_by="date");
1488 $female_subscribers = array();
1489 foreach($day_wise_female_subscribers as $value)
1490 {
1491 $female_subscribers[$value['date']] = $value['number_of_subscriber'];
1492 }
1493 $subscribers_comparison_data = array();
1494 $total_subscribers_data = array();
1495 $dDiff = strtotime($to_date) - strtotime($from_date);
1496 $no_of_days = floor($dDiff/(60*60*24));
1497
1498 for($i=0;$i<=$no_of_days;$i++){
1499 $day_count = date('Y-m-d', strtotime($from_date. " + $i days"));
1500 if(isset($male_subscribers[$day_count]))
1501 {
1502 $daily_male_subscribers = $male_subscribers[$day_count];
1503 $subscribers_comparison_data[$i]['date'] = $day_count;
1504 $subscribers_comparison_data[$i]['male'] = $daily_male_subscribers;
1505 }
1506 else
1507 {
1508 $daily_male_subscribers = 0;
1509 $subscribers_comparison_data[$i]['date'] = $day_count;
1510 $subscribers_comparison_data[$i]['male'] = $daily_male_subscribers;
1511 }
1512 if(isset($female_subscribers[$day_count]))
1513 {
1514 $daily_female_subscribers = $female_subscribers[$day_count];
1515 $subscribers_comparison_data[$i]['date'] = $day_count;
1516 $subscribers_comparison_data[$i]['female'] = $daily_female_subscribers;
1517 }
1518 else
1519 {
1520 $daily_female_subscribers = 0;
1521 $subscribers_comparison_data[$i]['date'] = $day_count;
1522 $subscribers_comparison_data[$i]['female'] = $daily_female_subscribers;
1523 }
1524 $total_subscribers_data[$i]['date'] = $day_count;
1525 $total_subscribers_data[$i]['subscribers'] = $daily_male_subscribers + $daily_female_subscribers;
1526 }
1527 $data['subscribers_comparison_data'] = $subscribers_comparison_data;
1528 $data['total_subscribers_data'] = $total_subscribers_data;
1529 $where = array();
1530 $where['where'] = array(
1531 "last_update_time >=" => $from_date,
1532 "last_update_time <=" => $to_date,
1533 "user_id" => $this->user_id
1534 );
1535 $select = array(
1536 "date_format(last_update_time,'%Y-%m-%d') as date",
1537 "count(id) as number_of_emails"
1538 );
1539 $day_wise_email_gain = $this->basic->get_data('messenger_bot_quick_reply_email',$where,$select,$join='',$limit='',$start='',$order_by='',$group_by="date");
1540 $email_gain = array();
1541 foreach($day_wise_email_gain as $value)
1542 {
1543 $email_gain[$value['date']] = $value['number_of_emails'];
1544 }
1545 $day_wise_total_email = array();
1546 for($i=0;$i<=$no_of_days;$i++){
1547 $day_count = date('Y-m-d', strtotime($from_date. " + $i days"));
1548 if(isset($email_gain[$day_count]))
1549 {
1550 $total_emails = $email_gain[$day_count];
1551 $day_wise_total_email[$i]['date'] = $day_count;
1552 $day_wise_total_email[$i]['emails'] = $total_emails;
1553 }
1554 else
1555 {
1556 $total_emails = 0;
1557 $day_wise_total_email[$i]['date'] = $day_count;
1558 $day_wise_total_email[$i]['emails'] = $total_emails;
1559 }
1560 }
1561 $total_emails_gain = $this->basic->get_data('messenger_bot_quick_reply_email',['where'=>['user_id'=>$this->user_id]],['count(id) as number_of_emails']);
1562 $data['total_emails'] = $total_emails_gain[0]['number_of_emails'];
1563 $data['day_wise_total_email'] = $day_wise_total_email;
1564 $data['body'] = 'dashboard';
1565 $this->_viewcontroller($data);
1566 }
1567 public function activate()
1568 {
1569 if(!$_POST) exit();
1570 // if(!isset($_SERVER['HTTPS']))
1571 // {
1572 // echo json_encode(array('status'=>'0','message'=>$this->lang->line('This add-on requires HTTPS.')));
1573 // exit();
1574 // }
1575 $is_free_addon=false;
1576 $addon_controller_name=ucfirst($this->router->fetch_class()); // here addon_controller_name name is Comment [origianl file is Comment.php, put except .php]
1577 $purchase_code=$this->input->post('purchase_code');
1578 if(!$is_free_addon)
1579 {
1580 $this->addon_credential_check($purchase_code,strtolower($addon_controller_name)); // retuns json status,message if error
1581 }
1582 $verify_token=$this->_random_number_generator(15);
1583 $app_package_config_data = "<?php ";
1584 $app_package_config_data.= "\n\$config['webhook_verify_token'] = '$verify_token';\n";
1585 $app_package_config_data.= "\n\$config['bot_backup_mode'] = '0';";
1586 @file_put_contents(APPPATH.'modules/'.strtolower($this->router->fetch_class()).'/config/messenger_bot_config.php', $app_package_config_data, LOCK_EX);
1587
1588 //this addon system support 2-level sidebar entry, to make sidebar entry you must provide 2D array like below
1589 $sidebar=array
1590 (
1591 0 =>array
1592 (
1593 'name' => 'Messenger Bot',
1594 'icon' => 'fa fa-comments',
1595 'url' => '#',
1596 'is_external' => '0',
1597 'child_info' => array
1598 (
1599 'have_child'=>'1', // parent has child menus, 0 means no child
1600 'child'=>array // if status = 1 then you must add child array, other wise not need to set this index
1601 (
1602 0 => array
1603 (
1604 'name'=>'Dashboard',
1605 'icon'=>'fa fa-dashboard',
1606 'url' => 'messenger_bot/index',
1607 'is_external' => '0'
1608 ),
1609 1 => array
1610 (
1611 'name'=>'General Settings',
1612 'icon'=>'fa fa-cog',
1613 'url' => 'messenger_bot/configuration',
1614 'is_external' => '0'
1615 ),
1616 2 => array
1617 (
1618 'name'=>'Facebook API Settings',
1619 'icon'=>'fa fa-facebook-official',
1620 'url' => 'messenger_bot/facebook_config',
1621 'is_external' => '0'
1622 ),
1623 3 => array
1624 (
1625 'name'=>'Import Account',
1626 'icon'=>'fa fa-cloud-download',
1627 'url' => 'messenger_bot/account_import',
1628 'is_external' => '0'
1629 ),
1630 4 => array
1631 (
1632 'name'=>'Domain Whitelist',
1633 'icon'=>'fa fa-list-ol',
1634 'url' => 'messenger_bot/domain_whitelist',
1635 'is_external' => '0'
1636 ),
1637 5 => array
1638 (
1639 'name'=>'Bot Settings',
1640 'icon'=>'fa fa-plus',
1641 'url' => 'messenger_bot/bot_list',
1642 'is_external' => '0'
1643 ),
1644 6 => array
1645 (
1646 'name'=>'Template Manager',
1647 'icon'=>'fa fa-th-large',
1648 'url' => 'messenger_bot/template_manager',
1649 'is_external' => '0'
1650 ),
1651 7 => array
1652 (
1653 'name'=>'Cron Job',
1654 'icon'=>'fa fa-clock-o',
1655 'url' => 'messenger_bot/cron_job',
1656 'is_external' => '0'
1657 )
1658
1659 )
1660 ),
1661 'only_admin' => '0' ,
1662 'only_member' => '0'
1663 )
1664 );
1665 // mysql raw query needed to run, it's an array, put each query in a seperate index, create table query must should IF NOT EXISTS
1666 $sql=array
1667 (
1668 0 =>"CREATE TABLE IF NOT EXISTS `messenger_bot` (
1669 `id` int(11) NOT NULL AUTO_INCREMENT,
1670 `user_id` int(11) NOT NULL,
1671 `page_id` int(11) NOT NULL,
1672 `fb_page_id` varchar(200) NOT NULL,
1673 `template_type` enum('text','image','audio','video','file','quick reply','text with buttons','generic template','carousel') NOT NULL DEFAULT 'text',
1674 `bot_type` enum('generic','keyword') NOT NULL DEFAULT 'generic',
1675 `keyword_type` enum('reply','post-back','no match','get-started') NOT NULL DEFAULT 'reply',
1676 `keywords` text NOT NULL,
1677 `message` text NOT NULL,
1678 `buttons` longtext NOT NULL,
1679 `images` longtext NOT NULL,
1680 `audio` varchar(255) NOT NULL,
1681 `video` varchar(255) NOT NULL,
1682 `file` varchar(255) NOT NULL,
1683 `status` enum('0','1') NOT NULL DEFAULT '1',
1684 `bot_name` varchar(200) NOT NULL,
1685 `postback_id` varchar(255) NOT NULL,
1686 `last_replied_at` datetime NOT NULL,
1687 PRIMARY KEY (`id`),
1688 KEY `user_id` (`user_id`,`page_id`)
1689 ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;",
1690 1=>"CREATE TABLE IF NOT EXISTS `messenger_bot_config` (
1691 `id` int(11) NOT NULL AUTO_INCREMENT,
1692 `app_name` varchar(100) DEFAULT NULL,
1693 `api_id` varchar(250) DEFAULT NULL,
1694 `api_secret` varchar(250) DEFAULT NULL,
1695 `numeric_id` varchar(250) NOT NULL,
1696 `user_access_token` varchar(500) DEFAULT NULL,
1697 `status` enum('0','1') NOT NULL DEFAULT '1',
1698 `deleted` enum('0','1') NOT NULL DEFAULT '0',
1699 `user_id` int(11) NOT NULL,
1700 `use_by` enum('only_me','everyone') NOT NULL DEFAULT 'only_me',
1701 PRIMARY KEY (`id`)
1702 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;",
1703 2=>"CREATE TABLE IF NOT EXISTS `messenger_bot_domain_whitelist` (
1704 `id` int(11) NOT NULL AUTO_INCREMENT,
1705 `user_id` int(11) NOT NULL,
1706 `messenger_bot_user_info_id` int(11) NOT NULL,
1707 `page_id` int(11) NOT NULL,
1708 `domain` tinytext NOT NULL,
1709 `created_at` datetime NOT NULL,
1710 PRIMARY KEY (`id`),
1711 KEY `user_id` (`user_id`,`page_id`)
1712 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;",
1713 3=>"CREATE TABLE IF NOT EXISTS `messenger_bot_page_info` (
1714 `id` int(11) NOT NULL AUTO_INCREMENT,
1715 `user_id` int(11) NOT NULL,
1716 `messenger_bot_user_info_id` int(11) NOT NULL,
1717 `page_id` varchar(200) NOT NULL,
1718 `page_cover` text,
1719 `page_profile` text,
1720 `page_name` varchar(200) DEFAULT NULL,
1721 `username` varchar(255) NOT NULL,
1722 `page_access_token` text NOT NULL,
1723 `page_email` varchar(200) DEFAULT NULL,
1724 `add_date` date NOT NULL,
1725 `deleted` enum('0','1') NOT NULL DEFAULT '0',
1726 `bot_enabled` enum('0','1') NOT NULL DEFAULT '0',
1727 `started_button_enabled` enum('0','1') NOT NULL DEFAULT '0',
1728 PRIMARY KEY (`id`),
1729 KEY `page_id` (`page_id`),
1730 KEY `user_id` (`user_id`,`page_id`)
1731 ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;",
1732 4=>"CREATE TABLE IF NOT EXISTS `messenger_bot_postback` (
1733 `id` int(11) NOT NULL AUTO_INCREMENT,
1734 `user_id` int(11) NOT NULL,
1735 `postback_id` varchar(255) NOT NULL,
1736 `page_id` int(11) NOT NULL,
1737 `use_status` enum('0','1') NOT NULL DEFAULT '0',
1738 `status` enum('0','1') NOT NULL DEFAULT '1',
1739 `messenger_bot_table_id` int(11) NOT NULL,
1740 `bot_name` varchar(255) NOT NULL,
1741 PRIMARY KEY (`id`),
1742 KEY `user_id` (`user_id`,`postback_id`,`page_id`)
1743 ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;",
1744 5=>"CREATE TABLE IF NOT EXISTS `messenger_bot_subscriber` (
1745 `id` int(11) NOT NULL AUTO_INCREMENT,
1746 `user_id` int(11) NOT NULL,
1747 `page_id` varchar(200) NOT NULL,
1748 `subscribe_id` varchar(255) NOT NULL,
1749 `first_name` varchar(255) NOT NULL,
1750 `last_name` varchar(255) NOT NULL,
1751 `profile_pic` varchar(255) NOT NULL,
1752 `gender` varchar(255) NOT NULL,
1753 `locale` varchar(255) NOT NULL,
1754 `timezone` varchar(255) NOT NULL,
1755 `subscribed_at` datetime NOT NULL,
1756 `status` enum('0','1') NOT NULL DEFAULT '1',
1757 PRIMARY KEY (`id`),
1758 KEY `user_id` (`user_id`,`page_id`,`subscribe_id`)
1759 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;",
1760 6=>"CREATE TABLE IF NOT EXISTS `messenger_bot_user_info` (
1761 `id` int(11) NOT NULL AUTO_INCREMENT,
1762 `messenger_bot_config_id` int(11) NOT NULL,
1763 `user_id` int(11) NOT NULL,
1764 `access_token` text NOT NULL,
1765 `name` varchar(200) DEFAULT NULL,
1766 `email` varchar(200) DEFAULT NULL,
1767 `fb_id` varchar(200) NOT NULL,
1768 `add_date` date NOT NULL,
1769 `deleted` enum('0','1') NOT NULL,
1770 `need_to_delete` enum('0','1') NOT NULL,
1771 PRIMARY KEY (`id`)
1772 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;",
1773 // extra module, this module aslo deleted manaually
1774 7=>"INSERT INTO `modules` (`id`, `module_name`, `add_ons_id`, `deleted`) VALUES ('199', 'Messenger Bot - Account Import', '0', '0');",
1775 8=>"ALTER TABLE `messenger_bot_page_info` ADD `persistent_enabled` ENUM('0','1') NOT NULL DEFAULT '0' AFTER `started_button_enabled`;",
1776 9=> "INSERT INTO `modules` (`id`, `module_name`, `add_ons_id`, `deleted`) VALUES ('197', 'Messenger Bot - Persistent Menu', '0', '0');",
1777 10=>"INSERT INTO `modules` (`id`, `module_name`, `add_ons_id`, `deleted`) VALUES ('198', 'Messenger Bot - Persistent Menu Copyright', '0', '0');",
1778 11=>"UPDATE `modules` SET `extra_text` = '' WHERE `modules`.`id` = 197",
1779 12=>"UPDATE `modules` SET `extra_text` = '' WHERE `modules`.`id` = 198;",
1780 13=>"UPDATE `modules` SET `extra_text` = '' WHERE `modules`.`id` = 199;",
1781 14=>"UPDATE `modules` SET `extra_text` = '' WHERE `modules`.`id` = 200;",
1782 15=>"UPDATE `modules` SET `limit_enabled` = '0' WHERE `modules`.`id` = 198;",
1783 16=>"UPDATE menu_child_1 SET only_admin='1' WHERE module_access=200 AND serial=1;",
1784 17=> "CREATE TABLE IF NOT EXISTS `messenger_bot_persistent_menu` (
1785 `id` int(11) NOT NULL AUTO_INCREMENT,
1786 `user_id` int(11) NOT NULL,
1787 `page_id` varchar(100) NOT NULL,
1788 `locale` varchar(20) NOT NULL DEFAULT 'default',
1789 `item_json` longtext NOT NULL,
1790 `composer_input_disabled` enum('0','1') NOT NULL DEFAULT '0',
1791 `poskback_id_json` text NOT NULL,
1792 PRIMARY KEY (`id`),
1793 UNIQUE KEY `page_id` (`page_id`,`locale`)
1794 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;",
1795 18=>"ALTER TABLE `messenger_bot_postback` DROP INDEX `user_id`, ADD UNIQUE `user_id` (`user_id`, `postback_id`, `page_id`) USING BTREE;",
1796 19 => "ALTER TABLE `messenger_bot_page_info` ADD `enable_mark_seen` ENUM( '0', '1' ) NOT NULL DEFAULT '0',
1797 ADD `enbale_type_on` ENUM( '0', '1' ) NOT NULL DEFAULT '0';",
1798 20 => "CREATE TABLE IF NOT EXISTS `messenger_bot_reply_error_log` (
1799 `id` int(11) NOT NULL AUTO_INCREMENT,
1800 `page_id` int(11) NOT NULL,
1801 `fb_page_id` varchar(200) NOT NULL,
1802 `user_id` int(11) NOT NULL,
1803 `error_message` varchar(250) NOT NULL,
1804 `bot_settings_id` int(11) NOT NULL,
1805 `error_time` datetime NOT NULL,
1806 PRIMARY KEY (`id`)
1807 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;",
1808 21 => "CREATE TABLE IF NOT EXISTS `messenger_bot_quick_reply_email` (
1809 `id` int(11) NOT NULL AUTO_INCREMENT,
1810 `fb_page_id` varchar(50) NOT NULL,
1811 `user_id` int(11) NOT NULL,
1812 `fb_user_id` varchar(50) NOT NULL,
1813 `fb_user_first_name` varchar(100) CHARACTER SET utf8 NOT NULL,
1814 `fb_user_last_name` varchar(100) CHARACTER SET utf8 NOT NULL,
1815 `profile_pic` text NOT NULL,
1816 `email` varchar(200) NOT NULL,
1817 `entry_time` datetime NOT NULL,
1818 `last_update_time` datetime NOT NULL,
1819 PRIMARY KEY (`id`),
1820 UNIQUE KEY `fb_page_id` (`fb_page_id`,`fb_user_id`,`email`,`user_id`)
1821 ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;",
1822 22 => "ALTER TABLE `messenger_bot_quick_reply_email` ADD `phone_number` VARCHAR(20) NOT NULL AFTER `last_update_time`, ADD `phone_number_entry_time` DATETIME NOT NULL AFTER `phone_number`, ADD `phone_number_last_update` DATETIME NOT NULL AFTER `phone_number_entry_time`;",
1823 23 => "ALTER TABLE `messenger_bot_quick_reply_email` DROP INDEX `fb_page_id`, ADD UNIQUE `fb_page_id` (`fb_page_id`, `fb_user_id`, `user_id`) USING BTREE;",
1824
1825 24 => "ALTER TABLE `messenger_bot_postback` ADD `is_template` ENUM('0','1') NOT NULL AFTER `bot_name`, ADD `template_jsoncode` LONGTEXT NOT NULL AFTER `is_template`;",
1826 25 => "ALTER TABLE `messenger_bot` ADD `is_template` ENUM('0','1') NOT NULL AFTER `last_replied_at`;",
1827 26 => "ALTER TABLE `messenger_bot_postback` ADD `template_name` VARCHAR(255) NOT NULL AFTER `template_jsoncode`;",
1828 27 => "ALTER TABLE `messenger_bot_postback` ADD `template_for` ENUM('reply_message','unsubscribe','resubscribe') NOT NULL AFTER `template_name`;",
1829 28 => "ALTER TABLE `messenger_bot_subscriber` ADD `is_image_download` ENUM('0','1') NOT NULL DEFAULT '0' AFTER `subscribed_at`, ADD `image_path` VARCHAR(250) NOT NULL AFTER `is_image_download`;",
1830 29 => "ALTER TABLE `messenger_bot` CHANGE `keyword_type` `keyword_type` ENUM('reply','post-back','no match','get-started','email-quick-reply','phone-quick-reply') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'reply';",
1831 30 => "ALTER TABLE `messenger_bot_postback` CHANGE `template_for` `template_for` ENUM('reply_message','unsubscribe','resubscribe','email-quick-reply','phone-quick-reply') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;",
1832 31 => "ALTER TABLE `messenger_bot_page_info` ADD `reply_delay_time` INT NOT NULL AFTER `enbale_type_on`;",
1833 32 => "ALTER TABLE `messenger_bot_postback` ADD `template_id` INT(11) NOT NULL AFTER `template_for`;",
1834 33 => "ALTER TABLE `messenger_bot_postback` ADD `inherit_from_template` ENUM('0','1') NOT NULL AFTER `template_id`;",
1835 34 => "UPDATE `menu_child_1` SET `only_admin` = '0' WHERE `menu_child_1`.`url` = 'messenger_bot/index';",
1836 35 => "ALTER TABLE `messenger_bot` CHANGE `template_type` `template_type` ENUM('text','image','audio','video','file','quick reply','text with buttons','generic template','carousel','list') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'text';",
1837 36 => "ALTER TABLE `messenger_bot` CHANGE `keyword_type` `keyword_type` ENUM('reply','post-back','no match','get-started','email-quick-reply','phone-quick-reply','location-quick-reply') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'reply';",
1838 37 => "ALTER TABLE `messenger_bot_postback` CHANGE `template_for` `template_for` ENUM('reply_message','unsubscribe','resubscribe','email-quick-reply','phone-quick-reply','location-quick-reply') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;",
1839 38 => "ALTER TABLE `messenger_bot_quick_reply_email` ADD `user_location` VARCHAR(30) NOT NULL AFTER `phone_number_last_update`, ADD `location_map_url` TEXT NOT NULL AFTER `user_location`;",
1840 39 =>"ALTER TABLE `messenger_bot_subscriber` ADD `refferer_id` VARCHAR(100) NOT NULL COMMENT 'get started refference number from ref parameter of chat plugin' AFTER `timezone`, ADD `refferer_source` VARCHAR(50) NOT NULL COMMENT 'CUSTOMER_CHAT_PLUGIN or SHORTLINK or Direct' AFTER `refferer_id`, ADD `refferer_uri` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'CUSTOMER_CHAT_PLUGIN URL' AFTER `refferer_source`; "
1841
1842 );
1843 //send blank array if you does not need sidebar entry,send a blank array if your addon does not need any sql to run
1844 $this->register_addon($addon_controller_name,$sidebar,$sql,$purchase_code);
1845 }
1846
1847 public function deactivate()
1848 {
1849 $addon_controller_name=ucfirst($this->router->fetch_class()); // here addon_controller_name name is Comment [origianl file is Comment.php, put except .php]
1850 $this->db->query("DELETE FROM `modules` WHERE `modules`.`id` = 197");
1851 $this->db->query("DELETE FROM `modules` WHERE `modules`.`id` = 198");
1852 $this->db->query("DELETE FROM `modules` WHERE `modules`.`id` = 199");
1853 // only deletes add_ons,modules and menu, menu_child1 table entires and put install.txt back, it does not delete any files or custom sql
1854 $this->unregister_addon($addon_controller_name);
1855 }
1856 public function delete()
1857 {
1858 $addon_controller_name=ucfirst($this->router->fetch_class()); // here addon_controller_name name is Comment [origianl file is Comment.php, put except .php]
1859 // mysql raw query needed to run, it's an array, put each query in a seperate index, drop table/column query should have IF EXISTS
1860 $sql=array
1861 (
1862 0=>"DROP TABLE IF EXISTS `messenger_bot`;",
1863 1=>"DROP TABLE IF EXISTS `messenger_bot_config`;",
1864 2=>"DROP TABLE IF EXISTS `messenger_bot_domain_whitelist`;",
1865 3=>"DROP TABLE IF EXISTS `messenger_bot_page_info`;",
1866 4=>"DROP TABLE IF EXISTS `messenger_bot_postback`;",
1867 5=>"DROP TABLE IF EXISTS `messenger_bot_subscriber`;",
1868 6=>"DROP TABLE IF EXISTS `messenger_bot_user_info`;",
1869 7=>"DROP TABLE IF EXISTS `messenger_bot_persistent_menu`;",
1870 8=>"DELETE FROM `modules` WHERE `modules`.`id` = 199",
1871 9=>"DELETE FROM `modules` WHERE `modules`.`id` = 198",
1872 10=>"DELETE FROM `modules` WHERE `modules`.`id` = 197",
1873 11 => "DROP TABLE IF EXISTS `messenger_bot_reply_error_log`;",
1874 12 => "DROP TABLE IF EXISTS `messenger_bot_quick_reply_email`;"
1875 );
1876
1877 // deletes add_ons,modules and menu, menu_child1 table ,custom sql as well as module folder, no need to send sql or send blank array if you does not need any sql to run on delete
1878 $this->delete_addon($addon_controller_name,$sql);
1879 }
1880 //=================================BOT SETTINGS===============================
1881 public function bot_list()
1882 {
1883 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
1884 redirect('home/login_page', 'location');
1885 $data['body'] = 'bot_list';
1886 $data['page_title'] = $this->lang->line('Bot Settings');
1887 $table_name = "messenger_bot_page_info";
1888 $where['where'] = array('bot_enabled !=' => "0",'messenger_bot_page_info.user_id'=> $this->user_id);
1889 $join = array('messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left");
1890 $page_info = $this->basic->get_data($table_name,$where,array("messenger_bot_page_info.*","messenger_bot_user_info.name as account_name","messenger_bot_user_info.fb_id"),$join,'','','page_name asc');
1891 $error_record = $this->basic->get_data('messenger_bot_reply_error_log',array('where'=>array('user_id'=>$this->user_id)),$select=array('page_id','count(id) as total_error'),$join='',$limit='',$start=NULL,$order_by='',$group_by='page_id');
1892 $error_record_array = array();
1893 foreach($error_record as $value)
1894 {
1895 $error_record_array[$value['page_id']] = $value['total_error'];
1896 }
1897 $data['error_record'] = $error_record_array;
1898 $len_page_info = count($page_info);
1899 $data['page_info'] = $page_info;
1900 $this->_viewcontroller($data);
1901 }
1902 public function view_bot($bot_id= '0')
1903 {
1904 if($this->session->userdata('user_type') != 'Admin' && !in_array(200, $this->module_access))
1905 redirect ('home/login_page','location');
1906 if($bot_id == 0)
1907 die();
1908 $table_name = "messenger_bot";
1909 $where_bot['where'] = array('id' => $bot_id, 'status' => '1');
1910 $bot_info = $this->basic->get_data($table_name, $where_bot);
1911 if(!isset($bot_info[0]))
1912 redirect('messenger_bot/bot_list', 'location');
1913 $table_name = "messenger_bot_page_info";
1914 $where['where'] = array('bot_enabled' => "1", "messenger_bot_page_info.id"=>$bot_info[0]["page_id"]);
1915 $join = array('messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left");
1916 $page_info = $this->basic->get_data($table_name,$where, array("messenger_bot_page_info.*","messenger_bot_user_info.name as account_name","messenger_bot_user_info.fb_id"),$join);
1917 if(!isset($page_info[0]))
1918 redirect('messenger_bot/bot_list','location');
1919 $data["templates"]=$this->basic->get_enum_values("messenger_bot","template_type");
1920 $data["keyword_types"]=$this->basic->get_enum_values("messenger_bot","keyword_type");
1921 $data['body'] = 'view_bot_settings';
1922 $data['page_title'] = $this->lang->line('View Bot Settings');
1923 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
1924 $data['bot_info'] = isset($bot_info[0]) ? $bot_info[0] : array();
1925 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$bot_info[0]["page_id"])));
1926 $poption=array();
1927 foreach ($postback_id_list as $key => $value)
1928 {
1929 // if($value["template_for"]=="unsubscribe" || $value["template_for"]=="resubscribe" || $value["template_for"]=="email-quick-reply" || $value["template_for"]=="phone-quick-reply" || $value["template_for"]=="location-quick-reply") continue;
1930 $poption[$value["postback_id"]]=$value['template_name'].' ['.$value['postback_id'].']';
1931 }
1932 $data['poption']=$poption;
1933 $data['postback_ids'] = $postback_id_list;
1934 $this->_viewcontroller($data);
1935 }
1936 public function edit_bot($bot_id='0')
1937 {
1938 if($this->session->userdata('user_type') != 'Admin' && !in_array(200, $this->module_access))
1939 redirect ('home/login_page','location');
1940 if($bot_id == 0)
1941 die();
1942 $table_name = "messenger_bot";
1943 $where_bot['where'] = array('id' => $bot_id, 'status' => '1');
1944 $bot_info = $this->basic->get_data($table_name, $where_bot);
1945 if(!isset($bot_info[0]))
1946 redirect('messenger_bot/bot_list', 'location');
1947 $table_name = "messenger_bot_page_info";
1948 $where['where'] = array('bot_enabled' => "1", "messenger_bot_page_info.id"=>$bot_info[0]["page_id"]);
1949 $join = array('messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left");
1950 $page_info = $this->basic->get_data($table_name,$where, array("messenger_bot_page_info.*","messenger_bot_user_info.name as account_name","messenger_bot_user_info.fb_id"),$join);
1951 if(!isset($page_info[0]))
1952 redirect('messenger_bot/bot_list','location');
1953 $data["templates"]=$this->basic->get_enum_values("messenger_bot","template_type");
1954 $data["keyword_types"]=$this->basic->get_enum_values("messenger_bot","keyword_type");
1955 $data['body'] = 'edit_bot_settings';
1956 $data['page_title'] = $this->lang->line('Edit Bot Settings');
1957 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
1958 $data['bot_info'] = isset($bot_info[0]) ? $bot_info[0] : array();
1959 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$bot_info[0]["page_id"])));
1960 $current_postbacks = array();
1961 foreach ($postback_id_list as $value) {
1962 if($value['messenger_bot_table_id'] == $bot_id)
1963 $current_postbacks[] = $value['postback_id'];
1964 }
1965 $data['postback_ids'] = $postback_id_list;
1966 $data['current_postbacks'] = $current_postbacks;
1967 $page_id=$page_info[0]['id'];// database id
1968 $postback_data=$this->basic->get_data("messenger_bot_postback",array("where"=>array("page_id"=>$page_id,"is_template"=>"1"),"or_where"=>array("messenger_bot_table_id"=>$bot_id)),'','','',$start=NULL,$order_by='template_name ASC');
1969
1970 $poption=array();
1971 foreach ($postback_data as $key => $value)
1972 {
1973 if($value["template_for"]=="unsubscribe" || $value["template_for"]=="resubscribe" || $value["template_for"]=="email-quick-reply" || $value["template_for"]=="phone-quick-reply" || $value["template_for"]=="location-quick-reply") continue;
1974 $poption[$value["postback_id"]]=$value['template_name'].' ['.$value['postback_id'].']';
1975 }
1976 $data['poption']=$poption;
1977
1978 if($this->basic->is_exist("add_ons",array("project_id"=>16)))
1979 $data['has_broadcaster_addon'] = 1;
1980 else
1981 $data['has_broadcaster_addon'] = 0;
1982
1983 $this->_viewcontroller($data);
1984 }
1985 public function bot_settings($page_auto_id='0')
1986 {
1987 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
1988 redirect('home/login_page', 'location');
1989 if($page_auto_id==0) exit();
1990 $table_name = "messenger_bot_page_info";
1991 $where['where'] = array('bot_enabled' => "1","messenger_bot_page_info.id"=>$page_auto_id);
1992 $join = array('messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left");
1993 $page_info = $this->basic->get_data($table_name,$where,array("messenger_bot_page_info.*","messenger_bot_user_info.name as account_name","messenger_bot_user_info.fb_id"),$join);
1994 if(!isset($page_info[0]))
1995 redirect('messenger_bot/bot_list', 'location');
1996 $bot_settings=$this->basic->get_data("messenger_bot",array("where"=>array("page_id"=>$page_auto_id,"is_template"=>"0")),'','','','','bot_name asc');
1997
1998 $data["templates"]=$this->basic->get_enum_values("messenger_bot","template_type");
1999 $data["keyword_types"]=$this->basic->get_enum_values("messenger_bot","keyword_type");
2000 $data['body'] = 'bot_settings';
2001 $data['page_title'] = $this->lang->line('Bot Settings');
2002 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
2003 $data['bot_settings'] = $bot_settings;
2004
2005 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$page_auto_id)));
2006 $data['postback_ids'] = $postback_id_list;
2007
2008 if($this->basic->is_exist("add_ons",array("project_id"=>16)))
2009 $data['has_broadcaster_addon'] = 1;
2010 else
2011 $data['has_broadcaster_addon'] = 0;
2012 $this->_viewcontroller($data);
2013 }
2014 public function get_postback()
2015 {
2016 if(!$_POST) exit();
2017 $page_id=$this->input->post('page_id');// database id
2018 $order_by=$this->input->post('order_by');
2019 if($order_by=="") $order_by="id DESC";
2020 else $order_by=$order_by." ASC";
2021 $postback_data=$this->basic->get_data("messenger_bot_postback",array("where"=>array("page_id"=>$page_id,"is_template"=>"1")),'','','',$start=NULL,$order_by);
2022 $push_postback="";
2023 foreach ($postback_data as $key => $value)
2024 {
2025 if($value["template_for"]=="unsubscribe" || $value["template_for"]=="resubscribe" || $value["template_for"]=="email-quick-reply" || $value["template_for"]=="phone-quick-reply" || $value["template_for"]=="location-quick-reply") continue;
2026 $push_postback.="<option value='".$value['postback_id']."'>".$value['template_name'].' ['.$value['postback_id'].']'."</option>";
2027 }
2028 echo $push_postback;
2029 }
2030 //=================================BOT SETTINGS===============================
2031 public function edit_generate_messenger_bot()
2032 {
2033 $post=$_POST;
2034 foreach ($post as $key => $value)
2035 {
2036 $$key=$value;
2037 }
2038 // $template_type = trim($template_type);
2039 $insert_data = array();
2040 $insert_data['bot_name'] = $bot_name;
2041 $insert_data['fb_page_id'] = $page_id;
2042 $insert_data['keywords'] = trim($keywords_list);
2043 $insert_data['page_id'] = $page_table_id;
2044 // $insert_data['template_type'] = $template_type;
2045 $insert_data['keyword_type'] = $keyword_type;
2046 if($keyword_type == 'post-back')
2047 $insert_data['postback_id'] = implode(',', $keywordtype_postback_id);
2048
2049 // $template_type = str_replace(' ', '_', $template_type);
2050 // domain white list section
2051 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token"));
2052 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
2053 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
2054 $white_listed_domain = $this->basic->get_data("messenger_bot_domain_whitelist",array("where"=>array("user_id"=>$this->user_id,"messenger_bot_user_info_id"=>$messenger_bot_user_info_id,"page_id"=>$page_table_id)),"domain");
2055 $white_listed_domain_array = array();
2056 foreach ($white_listed_domain as $value) {
2057 $white_listed_domain_array[] = $value['domain'];
2058 }
2059 $need_to_whitelist_array = array();
2060 // domain white list section
2061
2062 $postback_insert_data = array();
2063 $reply_bot = array();
2064 $bot_message = array();
2065 for ($k=1; $k <=3 ; $k++)
2066 {
2067 $template_type = 'template_type_'.$k;
2068 if(!isset($$template_type)) continue;
2069 $template_type = $$template_type;
2070 $template_type = str_replace(' ', '_', $template_type);
2071 if($template_type == 'text')
2072 {
2073 $text_reply = 'text_reply_'.$k;
2074 $text_reply = $$text_reply;
2075 if($text_reply != '')
2076 {
2077 $reply_bot[$k]['template_type'] = $template_type;
2078 $reply_bot[$k]['text'] = $text_reply;
2079
2080 }
2081 }
2082 if($template_type == 'image')
2083 {
2084 $image_reply_field = 'image_reply_field_'.$k;
2085 $image_reply_field = $$image_reply_field;
2086 if($image_reply_field != '')
2087 {
2088 $reply_bot[$k]['template_type'] = $template_type;
2089 $reply_bot[$k]['attachment']['type'] = 'image';
2090 $reply_bot[$k]['attachment']['payload']['url'] = $image_reply_field;
2091 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2092 }
2093 }
2094 if($template_type == 'audio')
2095 {
2096 $audio_reply_field = 'audio_reply_field_'.$k;
2097 $audio_reply_field = $$audio_reply_field;
2098 if($audio_reply_field != '')
2099 {
2100 $reply_bot[$k]['template_type'] = $template_type;
2101 $reply_bot[$k]['attachment']['type'] = 'audio';
2102 $reply_bot[$k]['attachment']['payload']['url'] = $audio_reply_field;
2103 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2104 }
2105
2106 }
2107 if($template_type == 'video')
2108 {
2109 $video_reply_field = 'video_reply_field_'.$k;
2110 $video_reply_field = $$video_reply_field;
2111 if($video_reply_field != '')
2112 {
2113 $reply_bot[$k]['template_type'] = $template_type;
2114 $reply_bot[$k]['attachment']['type'] = 'video';
2115 $reply_bot[$k]['attachment']['payload']['url'] = $video_reply_field;
2116 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2117 }
2118 }
2119 if($template_type == 'file')
2120 {
2121 $file_reply_field = 'file_reply_field_'.$k;
2122 $file_reply_field = $$file_reply_field;
2123 if($file_reply_field != '')
2124 {
2125 $reply_bot[$k]['template_type'] = $template_type;
2126 $reply_bot[$k]['attachment']['type'] = 'file';
2127 $reply_bot[$k]['attachment']['payload']['url'] = $file_reply_field;
2128 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2129 }
2130 }
2131 if($template_type == 'text_with_buttons')
2132 {
2133 $text_with_buttons_input = 'text_with_buttons_input_'.$k;
2134 $text_with_buttons_input = $$text_with_buttons_input;
2135 $reply_bot[$k]['template_type'] = $template_type;
2136 $reply_bot[$k]['attachment']['type'] = 'template';
2137 $reply_bot[$k]['attachment']['payload']['template_type'] = 'button';
2138 $reply_bot[$k]['attachment']['payload']['text'] = $text_with_buttons_input;
2139 for ($i=1; $i <= 3 ; $i++)
2140 {
2141 $button_text = 'text_with_buttons_text_'.$i.'_'.$k;
2142 $button_text = $$button_text;
2143 $button_type = 'text_with_button_type_'.$i.'_'.$k;
2144 $button_type = $$button_type;
2145 $button_postback_id = 'text_with_button_post_id_'.$i.'_'.$k;
2146 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2147 $button_web_url = 'text_with_button_web_url_'.$i.'_'.$k;
2148 $button_web_url = $$button_web_url;
2149 $button_call_us = 'text_with_button_call_us_'.$i.'_'.$k;
2150 $button_call_us = $$button_call_us;
2151 if($button_type == 'post_back')
2152 {
2153 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2154 {
2155 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'postback';
2156 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_postback_id;
2157 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2158 $single_postback_insert_data = array();
2159 $single_postback_insert_data['user_id'] = $this->user_id;
2160 $single_postback_insert_data['postback_id'] = $button_postback_id;
2161 $single_postback_insert_data['page_id'] = $page_table_id;
2162 $single_postback_insert_data['bot_name'] = $bot_name;
2163 $postback_insert_data[] = $single_postback_insert_data;
2164 }
2165 }
2166 if($button_type == 'web_url')
2167 {
2168 if($button_text != '' && $button_type != '' && $button_web_url != '')
2169 {
2170 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'web_url';
2171 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['url'] = $button_web_url;
2172 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2173 if(!in_array($button_web_url, $white_listed_domain_array))
2174 {
2175 $need_to_whitelist_array[] = $button_web_url;
2176 }
2177 }
2178 }
2179 if($button_type == 'phone_number')
2180 {
2181 if($button_text != '' && $button_type != '' && $button_call_us != '')
2182 {
2183 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'phone_number';
2184 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_call_us;
2185 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2186 }
2187 }
2188 }
2189 }
2190
2191 if($template_type == 'quick_reply')
2192 {
2193 $quick_reply_text = 'quick_reply_text_'.$k;
2194 $quick_reply_text = $$quick_reply_text;
2195 $reply_bot[$k]['template_type'] = $template_type;
2196 $reply_bot[$k]['text'] = $quick_reply_text;
2197 for ($i=1; $i <= 11 ; $i++)
2198 {
2199 $button_text = 'quick_reply_button_text_'.$i.'_'.$k;
2200 $button_text = $$button_text;
2201 $button_postback_id = 'quick_reply_post_id_'.$i.'_'.$k;
2202 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2203 $button_type = 'quick_reply_button_type_'.$i.'_'.$k;
2204 $button_type = $$button_type;
2205 if($button_type=='post_back')
2206 {
2207 if($button_text != '' && $button_postback_id != '')
2208 {
2209 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'text';
2210 $reply_bot[$k]['quick_replies'][$i-1]['payload'] = $button_postback_id;
2211 $reply_bot[$k]['quick_replies'][$i-1]['title'] = $button_text;
2212 $single_postback_insert_data = array();
2213 $single_postback_insert_data['user_id'] = $this->user_id;
2214 $single_postback_insert_data['postback_id'] = $button_postback_id;
2215 $single_postback_insert_data['page_id'] = $page_table_id;
2216 $single_postback_insert_data['bot_name'] = $bot_name;
2217 $postback_insert_data[] = $single_postback_insert_data;
2218 }
2219 }
2220 if($button_type=='phone_number')
2221 {
2222 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_phone_number';
2223 }
2224 if($button_type=='user_email')
2225 {
2226 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_email';
2227 }
2228 if($button_type=='location')
2229 {
2230 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'location';
2231 }
2232
2233 }
2234 }
2235 if($template_type == 'generic_template')
2236 {
2237 $generic_template_title = 'generic_template_title_'.$k;
2238 $generic_template_title = $$generic_template_title;
2239 $generic_template_image = 'generic_template_image_'.$k;
2240 $generic_template_image = $$generic_template_image;
2241 $generic_template_subtitle = 'generic_template_subtitle_'.$k;
2242 $generic_template_subtitle = $$generic_template_subtitle;
2243 $generic_template_image_destination_link = 'generic_template_image_destination_link_'.$k;
2244 $generic_template_image_destination_link = $$generic_template_image_destination_link;
2245 $reply_bot[$k]['template_type'] = $template_type;
2246 $reply_bot[$k]['attachment']['type'] = 'template';
2247 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
2248 $reply_bot[$k]['attachment']['payload']['elements'][0]['title'] = $generic_template_title;
2249 $reply_bot[$k]['attachment']['payload']['elements'][0]['image_url'] = $generic_template_image;
2250 $reply_bot[$k]['attachment']['payload']['elements'][0]['subtitle'] = $generic_template_subtitle;
2251 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['type'] = 'web_url';
2252 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['url'] = $generic_template_image_destination_link;
2253
2254 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['messenger_extensions'] = true;
2255 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['webview_height_ratio'] = 'tall';
2256 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['fallback_url'] = $generic_template_image_destination_link;
2257
2258 for ($i=1; $i <= 3 ; $i++)
2259 {
2260 $button_text = 'generic_template_button_text_'.$i.'_'.$k;
2261 $button_text = $$button_text;
2262 $button_type = 'generic_template_button_type_'.$i.'_'.$k;
2263 $button_type = $$button_type;
2264 $button_postback_id = 'generic_template_button_post_id_'.$i.'_'.$k;
2265 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2266 $button_web_url = 'generic_template_button_web_url_'.$i.'_'.$k;
2267 $button_web_url = $$button_web_url;
2268 $button_call_us = 'generic_template_button_call_us_'.$i.'_'.$k;
2269 $button_call_us = $$button_call_us;
2270 if($button_type == 'post_back')
2271 {
2272 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2273 {
2274 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'postback';
2275 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_postback_id;
2276 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2277 $single_postback_insert_data = array();
2278 $single_postback_insert_data['user_id'] = $this->user_id;
2279 $single_postback_insert_data['postback_id'] = $button_postback_id;
2280 $single_postback_insert_data['page_id'] = $page_table_id;
2281 $single_postback_insert_data['bot_name'] = $bot_name;
2282 $postback_insert_data[] = $single_postback_insert_data;
2283 }
2284 }
2285 if($button_type == 'web_url')
2286 {
2287 if($button_text != '' && $button_type != '' && $button_web_url != '')
2288 {
2289 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'web_url';
2290 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['url'] = $button_web_url;
2291 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2292 if(!in_array($button_web_url, $white_listed_domain_array))
2293 {
2294 $need_to_whitelist_array[] = $button_web_url;
2295 }
2296 }
2297 }
2298 if($button_type == 'phone_number')
2299 {
2300 if($button_text != '' && $button_type != '' && $button_call_us != '')
2301 {
2302 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'phone_number';
2303 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_call_us;
2304 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2305 }
2306 }
2307 }
2308 }
2309 if($template_type == 'carousel')
2310 {
2311 $reply_bot[$k]['template_type'] = $template_type;
2312 $reply_bot[$k]['attachment']['type'] = 'template';
2313 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
2314 for ($j=1; $j <=5 ; $j++)
2315 {
2316 $carousel_image = 'carousel_image_'.$j.'_'.$k;
2317 if($$carousel_image == '') continue;
2318 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$carousel_image;
2319 $carousel_title = 'carousel_title_'.$j.'_'.$k;
2320 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$carousel_title;
2321 $carousel_subtitle = 'carousel_subtitle_'.$j.'_'.$k;
2322 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$carousel_subtitle;
2323 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
2324 $carousel_image_destination_link = 'carousel_image_destination_link_'.$j.'_'.$k;
2325 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$carousel_image_destination_link;
2326 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['messenger_extensions'] = true;
2327 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['webview_height_ratio'] = 'tall';
2328 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['fallback_url'] = $$carousel_image_destination_link;
2329
2330 for ($i=1; $i <= 3 ; $i++)
2331 {
2332 $button_text = 'carousel_button_text_'.$j."_".$i.'_'.$k;
2333 $button_text = $$button_text;
2334 $button_type = 'carousel_button_type_'.$j."_".$i.'_'.$k;
2335 $button_type = $$button_type;
2336 $button_postback_id = 'carousel_button_post_id_'.$j."_".$i.'_'.$k;
2337 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2338 $button_web_url = 'carousel_button_web_url_'.$j."_".$i.'_'.$k;
2339 $button_web_url = $$button_web_url;
2340 $button_call_us = 'carousel_button_call_us_'.$j."_".$i.'_'.$k;
2341 $button_call_us = $$button_call_us;
2342 if($button_type == 'post_back')
2343 {
2344 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2345 {
2346 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'postback';
2347 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_postback_id;
2348 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2349 $single_postback_insert_data = array();
2350 $single_postback_insert_data['user_id'] = $this->user_id;
2351 $single_postback_insert_data['postback_id'] = $button_postback_id;
2352 $single_postback_insert_data['page_id'] = $page_table_id;
2353 $single_postback_insert_data['bot_name'] = $bot_name;
2354 $postback_insert_data[] = $single_postback_insert_data;
2355 }
2356 }
2357 if($button_type == 'web_url')
2358 {
2359 if($button_text != '' && $button_type != '' && $button_web_url != '')
2360 {
2361 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'web_url';
2362 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['url'] = $button_web_url;
2363 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2364 if(!in_array($button_web_url, $white_listed_domain_array))
2365 {
2366 $need_to_whitelist_array[] = $button_web_url;
2367 }
2368 }
2369 }
2370 if($button_type == 'phone_number')
2371 {
2372 if($button_text != '' && $button_type != '' && $button_call_us != '')
2373 {
2374 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'phone_number';
2375 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_call_us;
2376 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2377 }
2378 }
2379 }
2380 }
2381 }
2382
2383 if($template_type == 'list')
2384 {
2385 $reply_bot[$k]['template_type'] = $template_type;
2386 $reply_bot[$k]['attachment']['type'] = 'template';
2387 $reply_bot[$k]['attachment']['payload']['template_type'] = 'list';
2388
2389 for ($j=1; $j <=4 ; $j++)
2390 {
2391 $list_image = 'list_image_'.$j.'_'.$k;
2392 if($$list_image == '') continue;
2393 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$list_image;
2394 $list_title = 'list_title_'.$j.'_'.$k;
2395 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$list_title;
2396 $list_subtitle = 'list_subtitle_'.$j.'_'.$k;
2397 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$list_subtitle;
2398 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
2399 $list_image_destination_link = 'list_image_destination_link_'.$j.'_'.$k;
2400 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$list_image_destination_link;
2401
2402 }
2403
2404 $button_text = 'list_with_buttons_text_'.$k;
2405 $button_text = $$button_text;
2406 $button_type = 'list_with_button_type_'.$k;
2407 $button_type = $$button_type;
2408 $button_postback_id = 'list_with_button_post_id_'.$k;
2409 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2410 $button_web_url = 'list_with_button_web_url_'.$k;
2411 $button_web_url = $$button_web_url;
2412 $button_call_us = 'list_with_button_call_us_'.$k;
2413 $button_call_us = $$button_call_us;
2414 if($button_type == 'post_back')
2415 {
2416 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2417 {
2418 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'postback';
2419 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_postback_id;
2420 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2421 $single_postback_insert_data = array();
2422 $single_postback_insert_data['user_id'] = $this->user_id;
2423 $single_postback_insert_data['postback_id'] = $button_postback_id;
2424 $single_postback_insert_data['page_id'] = $page_table_id;
2425 $single_postback_insert_data['bot_name'] = $bot_name;
2426 $postback_insert_data[] = $single_postback_insert_data;
2427 }
2428 }
2429 if($button_type == 'web_url')
2430 {
2431 if($button_text != '' && $button_type != '' && $button_web_url != '')
2432 {
2433 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'web_url';
2434 $reply_bot[$k]['attachment']['payload']['buttons'][0]['url'] = $button_web_url;
2435 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2436 if(!in_array($button_web_url, $white_listed_domain_array))
2437 {
2438 $need_to_whitelist_array[] = $button_web_url;
2439 }
2440 }
2441 }
2442 if($button_type == 'phone_number')
2443 {
2444 if($button_text != '' && $button_type != '' && $button_call_us != '')
2445 {
2446 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'phone_number';
2447 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_call_us;
2448 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2449 }
2450 }
2451
2452
2453 }
2454
2455 if(isset($reply_bot[$k]))
2456 {
2457 $bot_message[$k]['recipient'] = array('id'=>'replace_id');
2458 $bot_message[$k]['message'] = $reply_bot[$k];
2459 }
2460 }
2461
2462 $reply_bot_filtered = array();
2463 $m=0;
2464 foreach ($bot_message as $value) {
2465 $m++;
2466 $reply_bot_filtered[$m] = $value;
2467 }
2468
2469 // domain white list section start
2470 $this->load->library("messenger_bot_login");
2471 $domain_whitelist_insert_data = array();
2472 foreach($need_to_whitelist_array as $value)
2473 {
2474 $response=$this->messenger_bot_login->domain_whitelist($page_access_token,$value);
2475 if($response['status'] != '0')
2476 {
2477 $temp_data = array();
2478 $temp_data['user_id'] = $this->user_id;
2479 $temp_data['messenger_bot_user_info_id'] = $messenger_bot_user_info_id;
2480 $temp_data['page_id'] = $page_table_id;
2481 $temp_data['domain'] = $value;
2482 $temp_data['created_at'] = date("Y-m-d H:i:s");
2483 $domain_whitelist_insert_data[] = $temp_data;
2484 }
2485 }
2486 if(!empty($domain_whitelist_insert_data))
2487 $this->db->insert_batch('messenger_bot_domain_whitelist',$domain_whitelist_insert_data);
2488 // domain white list section end
2489
2490 $insert_data['message'] = json_encode($reply_bot_filtered,true);
2491 $insert_data['user_id'] = $this->user_id;
2492 $this->basic->update_data('messenger_bot',array("id" => $id),$insert_data);
2493 // $this->basic->delete_data('messenger_bot_postback',array('messenger_bot_table_id'=> $id));
2494 $messenger_bot_table_id = $id;
2495
2496 $existing_postback_ids_array = array();
2497 $existing_postback_ids = $this->basic->get_data('messenger_bot_postback',array('where'=>array('messenger_bot_table_id'=>$messenger_bot_table_id)),array('postback_id'));
2498 if(!empty($existing_postback_ids))
2499 {
2500 foreach($existing_postback_ids as $value)
2501 {
2502 array_push($existing_postback_ids_array, strtoupper($value['postback_id']));
2503 }
2504 }
2505
2506 $postback_insert_data_modified = array();
2507 $m=0;
2508 foreach($postback_insert_data as $value)
2509 {
2510 if(in_array(strtoupper($value['postback_id']), $existing_postback_ids_array)) continue;
2511 $postback_insert_data_modified[$m]['user_id'] = $value['user_id'];
2512 $postback_insert_data_modified[$m]['postback_id'] = $value['postback_id'];
2513 $postback_insert_data_modified[$m]['page_id'] = $value['page_id'];
2514 $postback_insert_data_modified[$m]['bot_name'] = $value['bot_name'];
2515 $postback_insert_data_modified[$m]['messenger_bot_table_id'] = $messenger_bot_table_id;
2516 $m++;
2517 }
2518
2519 if($keyword_type == 'post-back' && !empty($keywordtype_postback_id))
2520 {
2521 $this->db->where_in("postback_id", $keywordtype_postback_id);
2522 $this->db->update('messenger_bot_postback', array('use_status' => '1'));
2523 }
2524
2525 // if(!empty($postback_insert_data_modified))
2526 // $this->db->insert_batch('messenger_bot_postback',$postback_insert_data_modified);
2527
2528 $this->session->set_flashdata('bot_update_success',1);
2529 echo json_encode(array("status" => "1", "message" =>$this->lang->line("bot settings has been updated successfully.")));
2530
2531 }
2532 public function ajax_generate_messenger_bot()
2533 {
2534 $post=$_POST;
2535 foreach ($post as $key => $value)
2536 {
2537 $$key=$value;
2538 }
2539 // $template_type = trim($template_type);
2540 $insert_data = array();
2541 $insert_data['bot_name'] = $bot_name;
2542 $insert_data['fb_page_id'] = $page_id;
2543 $insert_data['keywords'] = trim($keywords_list);
2544 $insert_data['page_id'] = $page_table_id;
2545 // $insert_data['template_type'] = $template_type;
2546 $insert_data['keyword_type'] = $keyword_type;
2547 if($keyword_type == 'post-back')
2548 $insert_data['postback_id'] = implode(',', $keywordtype_postback_id);
2549
2550 // $template_type = str_replace(' ', '_', $template_type);
2551 // domain white list section
2552 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token"));
2553 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
2554 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
2555 $white_listed_domain = $this->basic->get_data("messenger_bot_domain_whitelist",array("where"=>array("user_id"=>$this->user_id,"messenger_bot_user_info_id"=>$messenger_bot_user_info_id,"page_id"=>$page_table_id)),"domain");
2556 $white_listed_domain_array = array();
2557 foreach ($white_listed_domain as $value) {
2558 $white_listed_domain_array[] = $value['domain'];
2559 }
2560 $need_to_whitelist_array = array();
2561 // domain white list section
2562
2563 $postback_insert_data = array();
2564 $reply_bot = array();
2565 $bot_message = array();
2566 for ($k=1; $k <=3 ; $k++)
2567 {
2568 $template_type = 'template_type_'.$k;
2569 if(!isset($$template_type)) continue;
2570 $template_type = $$template_type;
2571 // $insert_data['template_type'] = $template_type;
2572 $template_type = str_replace(' ', '_', $template_type);
2573
2574 if($template_type == 'text')
2575 {
2576 $text_reply = 'text_reply_'.$k;
2577 $text_reply = $$text_reply;
2578 if($text_reply != '')
2579 {
2580 $reply_bot[$k]['template_type'] = $template_type;
2581 $reply_bot[$k]['text'] = $text_reply;
2582
2583 }
2584 }
2585 if($template_type == 'image')
2586 {
2587 $image_reply_field = 'image_reply_field_'.$k;
2588 $image_reply_field = $$image_reply_field;
2589 if($image_reply_field != '')
2590 {
2591 $reply_bot[$k]['template_type'] = $template_type;
2592 $reply_bot[$k]['attachment']['type'] = 'image';
2593 $reply_bot[$k]['attachment']['payload']['url'] = $image_reply_field;
2594 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2595 }
2596 }
2597 if($template_type == 'audio')
2598 {
2599 $audio_reply_field = 'audio_reply_field_'.$k;
2600 $audio_reply_field = $$audio_reply_field;
2601 if($audio_reply_field != '')
2602 {
2603 $reply_bot[$k]['template_type'] = $template_type;
2604 $reply_bot[$k]['attachment']['type'] = 'audio';
2605 $reply_bot[$k]['attachment']['payload']['url'] = $audio_reply_field;
2606 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2607 }
2608
2609 }
2610 if($template_type == 'video')
2611 {
2612 $video_reply_field = 'video_reply_field_'.$k;
2613 $video_reply_field = $$video_reply_field;
2614 if($video_reply_field != '')
2615 {
2616 $reply_bot[$k]['template_type'] = $template_type;
2617 $reply_bot[$k]['attachment']['type'] = 'video';
2618 $reply_bot[$k]['attachment']['payload']['url'] = $video_reply_field;
2619 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2620 }
2621 }
2622 if($template_type == 'file')
2623 {
2624 $file_reply_field = 'file_reply_field_'.$k;
2625 $file_reply_field = $$file_reply_field;
2626 if($file_reply_field != '')
2627 {
2628 $reply_bot[$k]['template_type'] = $template_type;
2629 $reply_bot[$k]['attachment']['type'] = 'file';
2630 $reply_bot[$k]['attachment']['payload']['url'] = $file_reply_field;
2631 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
2632 }
2633 }
2634 if($template_type == 'text_with_buttons')
2635 {
2636 $text_with_buttons_input = 'text_with_buttons_input_'.$k;
2637 $text_with_buttons_input = $$text_with_buttons_input;
2638 $reply_bot[$k]['template_type'] = $template_type;
2639 $reply_bot[$k]['attachment']['type'] = 'template';
2640 $reply_bot[$k]['attachment']['payload']['template_type'] = 'button';
2641 $reply_bot[$k]['attachment']['payload']['text'] = $text_with_buttons_input;
2642 for ($i=1; $i <= 3 ; $i++)
2643 {
2644 $button_text = 'text_with_buttons_text_'.$i.'_'.$k;
2645 $button_text = $$button_text;
2646 $button_type = 'text_with_button_type_'.$i.'_'.$k;
2647 $button_type = $$button_type;
2648 $button_postback_id = 'text_with_button_post_id_'.$i.'_'.$k;
2649 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2650 $button_web_url = 'text_with_button_web_url_'.$i.'_'.$k;
2651 $button_web_url = $$button_web_url;
2652 $button_call_us = 'text_with_button_call_us_'.$i.'_'.$k;
2653 $button_call_us = $$button_call_us;
2654 if($button_type == 'post_back')
2655 {
2656 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2657 {
2658 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'postback';
2659 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_postback_id;
2660 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2661 $single_postback_insert_data = array();
2662 $single_postback_insert_data['user_id'] = $this->user_id;
2663 $single_postback_insert_data['postback_id'] = $button_postback_id;
2664 $single_postback_insert_data['page_id'] = $page_table_id;
2665 $single_postback_insert_data['bot_name'] = $bot_name;
2666 $postback_insert_data[] = $single_postback_insert_data;
2667 }
2668 }
2669 if($button_type == 'web_url')
2670 {
2671 if($button_text != '' && $button_type != '' && $button_web_url != '')
2672 {
2673 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'web_url';
2674 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['url'] = $button_web_url;
2675 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2676 if(!in_array($button_web_url, $white_listed_domain_array))
2677 {
2678 $need_to_whitelist_array[] = $button_web_url;
2679 }
2680 }
2681 }
2682 if($button_type == 'phone_number')
2683 {
2684 if($button_text != '' && $button_type != '' && $button_call_us != '')
2685 {
2686 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'phone_number';
2687 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_call_us;
2688 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
2689 }
2690 }
2691 }
2692 }
2693 if($template_type == 'quick_reply')
2694 {
2695 $quick_reply_text = 'quick_reply_text_'.$k;
2696 $quick_reply_text = $$quick_reply_text;
2697 $reply_bot[$k]['template_type'] = $template_type;
2698 $reply_bot[$k]['text'] = $quick_reply_text;
2699 for ($i=1; $i <= 11 ; $i++)
2700 {
2701 $button_text = 'quick_reply_button_text_'.$i.'_'.$k;
2702 $button_text = $$button_text;
2703 $button_postback_id = 'quick_reply_post_id_'.$i.'_'.$k;
2704 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2705 $button_type = 'quick_reply_button_type_'.$i.'_'.$k;
2706 $button_type = $$button_type;
2707 if($button_type=='post_back')
2708 {
2709 if($button_text != '' && $button_postback_id != '')
2710 {
2711 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'text';
2712 $reply_bot[$k]['quick_replies'][$i-1]['payload'] = $button_postback_id;
2713 $reply_bot[$k]['quick_replies'][$i-1]['title'] = $button_text;
2714 $single_postback_insert_data = array();
2715 $single_postback_insert_data['user_id'] = $this->user_id;
2716 $single_postback_insert_data['postback_id'] = $button_postback_id;
2717 $single_postback_insert_data['page_id'] = $page_table_id;
2718 $single_postback_insert_data['bot_name'] = $bot_name;
2719 $postback_insert_data[] = $single_postback_insert_data;
2720 }
2721 }
2722 if($button_type=='phone_number')
2723 {
2724 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_phone_number';
2725 }
2726 if($button_type=='user_email')
2727 {
2728 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_email';
2729 }
2730 if($button_type=='location')
2731 {
2732 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'location';
2733 }
2734
2735 }
2736 }
2737
2738 if($template_type == 'generic_template')
2739 {
2740 $generic_template_title = 'generic_template_title_'.$k;
2741 $generic_template_title = $$generic_template_title;
2742 $generic_template_image = 'generic_template_image_'.$k;
2743 $generic_template_image = $$generic_template_image;
2744 $generic_template_subtitle = 'generic_template_subtitle_'.$k;
2745 $generic_template_subtitle = $$generic_template_subtitle;
2746 $generic_template_image_destination_link = 'generic_template_image_destination_link_'.$k;
2747 $generic_template_image_destination_link = $$generic_template_image_destination_link;
2748 $reply_bot[$k]['template_type'] = $template_type;
2749 $reply_bot[$k]['attachment']['type'] = 'template';
2750 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
2751 $reply_bot[$k]['attachment']['payload']['elements'][0]['title'] = $generic_template_title;
2752 $reply_bot[$k]['attachment']['payload']['elements'][0]['image_url'] = $generic_template_image;
2753 $reply_bot[$k]['attachment']['payload']['elements'][0]['subtitle'] = $generic_template_subtitle;
2754 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['type'] = 'web_url';
2755 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['url'] = $generic_template_image_destination_link;
2756
2757 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['messenger_extensions'] = true;
2758 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['webview_height_ratio'] = 'tall';
2759 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['fallback_url'] = $generic_template_image_destination_link;
2760
2761 for ($i=1; $i <= 3 ; $i++)
2762 {
2763 $button_text = 'generic_template_button_text_'.$i.'_'.$k;
2764 $button_text = $$button_text;
2765 $button_type = 'generic_template_button_type_'.$i.'_'.$k;
2766 $button_type = $$button_type;
2767 $button_postback_id = 'generic_template_button_post_id_'.$i.'_'.$k;
2768 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2769 $button_web_url = 'generic_template_button_web_url_'.$i.'_'.$k;
2770 $button_web_url = $$button_web_url;
2771 $button_call_us = 'generic_template_button_call_us_'.$i.'_'.$k;
2772 $button_call_us = $$button_call_us;
2773 if($button_type == 'post_back')
2774 {
2775 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2776 {
2777 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'postback';
2778 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_postback_id;
2779 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2780 $single_postback_insert_data = array();
2781 $single_postback_insert_data['user_id'] = $this->user_id;
2782 $single_postback_insert_data['postback_id'] = $button_postback_id;
2783 $single_postback_insert_data['page_id'] = $page_table_id;
2784 $single_postback_insert_data['bot_name'] = $bot_name;
2785 $postback_insert_data[] = $single_postback_insert_data;
2786 }
2787 }
2788 if($button_type == 'web_url')
2789 {
2790 if($button_text != '' && $button_type != '' && $button_web_url != '')
2791 {
2792 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'web_url';
2793 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['url'] = $button_web_url;
2794 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2795 if(!in_array($button_web_url, $white_listed_domain_array))
2796 {
2797 $need_to_whitelist_array[] = $button_web_url;
2798 }
2799 }
2800 }
2801 if($button_type == 'phone_number')
2802 {
2803 if($button_text != '' && $button_type != '' && $button_call_us != '')
2804 {
2805 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'phone_number';
2806 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_call_us;
2807 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
2808 }
2809 }
2810 }
2811 }
2812
2813 if($template_type == 'carousel')
2814 {
2815 $reply_bot[$k]['template_type'] = $template_type;
2816 $reply_bot[$k]['attachment']['type'] = 'template';
2817 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
2818 for ($j=1; $j <=5 ; $j++)
2819 {
2820 $carousel_image = 'carousel_image_'.$j.'_'.$k;
2821 if($$carousel_image == '') continue;
2822 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$carousel_image;
2823 $carousel_title = 'carousel_title_'.$j.'_'.$k;
2824 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$carousel_title;
2825 $carousel_subtitle = 'carousel_subtitle_'.$j.'_'.$k;
2826 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$carousel_subtitle;
2827 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
2828 $carousel_image_destination_link = 'carousel_image_destination_link_'.$j.'_'.$k;
2829 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$carousel_image_destination_link;
2830 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['messenger_extensions'] = true;
2831 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['webview_height_ratio'] = 'tall';
2832 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['fallback_url'] = $$carousel_image_destination_link;
2833
2834 for ($i=1; $i <= 3 ; $i++)
2835 {
2836 $button_text = 'carousel_button_text_'.$j."_".$i.'_'.$k;
2837 $button_text = $$button_text;
2838 $button_type = 'carousel_button_type_'.$j."_".$i.'_'.$k;
2839 $button_type = $$button_type;
2840 $button_postback_id = 'carousel_button_post_id_'.$j."_".$i.'_'.$k;
2841 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2842 $button_web_url = 'carousel_button_web_url_'.$j."_".$i.'_'.$k;
2843 $button_web_url = $$button_web_url;
2844 $button_call_us = 'carousel_button_call_us_'.$j."_".$i.'_'.$k;
2845 $button_call_us = $$button_call_us;
2846 if($button_type == 'post_back')
2847 {
2848 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2849 {
2850 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'postback';
2851 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_postback_id;
2852 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2853 $single_postback_insert_data = array();
2854 $single_postback_insert_data['user_id'] = $this->user_id;
2855 $single_postback_insert_data['postback_id'] = $button_postback_id;
2856 $single_postback_insert_data['page_id'] = $page_table_id;
2857 $single_postback_insert_data['bot_name'] = $bot_name;
2858 $postback_insert_data[] = $single_postback_insert_data;
2859 }
2860 }
2861 if($button_type == 'web_url')
2862 {
2863 if($button_text != '' && $button_type != '' && $button_web_url != '')
2864 {
2865 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'web_url';
2866 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['url'] = $button_web_url;
2867 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2868 if(!in_array($button_web_url, $white_listed_domain_array))
2869 {
2870 $need_to_whitelist_array[] = $button_web_url;
2871 }
2872 }
2873 }
2874 if($button_type == 'phone_number')
2875 {
2876 if($button_text != '' && $button_type != '' && $button_call_us != '')
2877 {
2878 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'phone_number';
2879 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_call_us;
2880 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
2881 }
2882 }
2883 }
2884 }
2885 }
2886
2887
2888 if($template_type == 'list')
2889 {
2890 $reply_bot[$k]['template_type'] = $template_type;
2891 $reply_bot[$k]['attachment']['type'] = 'template';
2892 $reply_bot[$k]['attachment']['payload']['template_type'] = 'list';
2893
2894 for ($j=1; $j <=4 ; $j++)
2895 {
2896 $list_image = 'list_image_'.$j.'_'.$k;
2897 if($$list_image == '') continue;
2898 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$list_image;
2899 $list_title = 'list_title_'.$j.'_'.$k;
2900 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$list_title;
2901 $list_subtitle = 'list_subtitle_'.$j.'_'.$k;
2902 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$list_subtitle;
2903 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
2904 $list_image_destination_link = 'list_image_destination_link_'.$j.'_'.$k;
2905 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$list_image_destination_link;
2906
2907 }
2908
2909 $button_text = 'list_with_buttons_text_'.$k;
2910 $button_text = $$button_text;
2911 $button_type = 'list_with_button_type_'.$k;
2912 $button_type = $$button_type;
2913 $button_postback_id = 'list_with_button_post_id_'.$k;
2914 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
2915 $button_web_url = 'list_with_button_web_url_'.$k;
2916 $button_web_url = $$button_web_url;
2917 $button_call_us = 'list_with_button_call_us_'.$k;
2918 $button_call_us = $$button_call_us;
2919 if($button_type == 'post_back')
2920 {
2921 if($button_text != '' && $button_type != '' && $button_postback_id != '')
2922 {
2923 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'postback';
2924 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_postback_id;
2925 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2926 $single_postback_insert_data = array();
2927 $single_postback_insert_data['user_id'] = $this->user_id;
2928 $single_postback_insert_data['postback_id'] = $button_postback_id;
2929 $single_postback_insert_data['page_id'] = $page_table_id;
2930 $single_postback_insert_data['bot_name'] = $bot_name;
2931 $postback_insert_data[] = $single_postback_insert_data;
2932 }
2933 }
2934 if($button_type == 'web_url')
2935 {
2936 if($button_text != '' && $button_type != '' && $button_web_url != '')
2937 {
2938 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'web_url';
2939 $reply_bot[$k]['attachment']['payload']['buttons'][0]['url'] = $button_web_url;
2940 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2941 if(!in_array($button_web_url, $white_listed_domain_array))
2942 {
2943 $need_to_whitelist_array[] = $button_web_url;
2944 }
2945 }
2946 }
2947 if($button_type == 'phone_number')
2948 {
2949 if($button_text != '' && $button_type != '' && $button_call_us != '')
2950 {
2951 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'phone_number';
2952 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_call_us;
2953 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
2954 }
2955 }
2956
2957
2958 }
2959
2960
2961
2962 if(isset($reply_bot[$k]))
2963 {
2964 $bot_message[$k]['recipient'] = array('id'=>'replace_id');
2965 $bot_message[$k]['message'] = $reply_bot[$k];
2966 }
2967
2968 }
2969
2970 $reply_bot_filtered = array();
2971 $m=0;
2972 foreach ($bot_message as $value) {
2973 $m++;
2974 $reply_bot_filtered[$m] = $value;
2975 }
2976
2977 // domain white list section start
2978 $this->load->library("messenger_bot_login");
2979 $domain_whitelist_insert_data = array();
2980 foreach($need_to_whitelist_array as $value)
2981 {
2982 $response=$this->messenger_bot_login->domain_whitelist($page_access_token,$value);
2983 if($response['status'] != '0')
2984 {
2985 $temp_data = array();
2986 $temp_data['user_id'] = $this->user_id;
2987 $temp_data['messenger_bot_user_info_id'] = $messenger_bot_user_info_id;
2988 $temp_data['page_id'] = $page_table_id;
2989 $temp_data['domain'] = $value;
2990 $temp_data['created_at'] = date("Y-m-d H:i:s");
2991 $domain_whitelist_insert_data[] = $temp_data;
2992 }
2993 }
2994 if(!empty($domain_whitelist_insert_data))
2995 $this->db->insert_batch('messenger_bot_domain_whitelist',$domain_whitelist_insert_data);
2996 // domain white list section end
2997
2998 $insert_data['message'] = json_encode($reply_bot_filtered,true);
2999 $insert_data['user_id'] = $this->user_id;
3000 $this->basic->insert_data('messenger_bot',$insert_data);
3001 $messenger_bot_table_id = $this->db->insert_id();
3002 $postback_insert_data_modified = array();
3003 $m=0;
3004 foreach($postback_insert_data as $value)
3005 {
3006 $postback_insert_data_modified[$m]['user_id'] = $value['user_id'];
3007 $postback_insert_data_modified[$m]['postback_id'] = $value['postback_id'];
3008 $postback_insert_data_modified[$m]['page_id'] = $value['page_id'];
3009 $postback_insert_data_modified[$m]['bot_name'] = $value['bot_name'];
3010 $postback_insert_data_modified[$m]['messenger_bot_table_id'] = $messenger_bot_table_id;
3011 $m++;
3012 }
3013
3014 if($keyword_type == 'post-back' && !empty($keywordtype_postback_id))
3015 {
3016 $this->db->where_in("postback_id", $keywordtype_postback_id);
3017 $this->db->update('messenger_bot_postback', array('use_status' => '1'));
3018 }
3019
3020 // if(!empty($postback_insert_data_modified))
3021 // $this->db->insert_batch('messenger_bot_postback',$postback_insert_data_modified);
3022 $this->session->set_flashdata('bot_success',1);
3023 echo json_encode(array("status" => "1", "message" =>$this->lang->line("new bot settings has been stored successfully.")));
3024
3025 }
3026
3027 public function template_manager()
3028 {
3029 $data['body'] = 'template_manager';
3030 $data['page_title'] = $this->lang->line('Template Manager');
3031 $this->_viewcontroller($data);
3032 }
3033 public function template_manager_data()
3034 {
3035 $page = isset($_POST['page']) ? intval($_POST['page']) : 15;
3036 $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 5;
3037 $sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'messenger_bot_postback.id';
3038 $order = isset($_POST['order']) ? strval($_POST['order']) : 'DESC';
3039
3040 $page_name = trim($this->input->post("page_name", true));
3041 $postback = trim($this->input->post("postback", true));
3042 $is_searched = $this->input->post('is_searched', true);
3043 if($is_searched)
3044 {
3045 $this->session->set_userdata('template_manager_search_page_name', $page_name);
3046 $this->session->set_userdata('template_manager_search_postback', $postback);
3047 }
3048 $search_page_names = $this->session->userdata('template_manager_search_page_name');
3049 $search_postback = $this->session->userdata('template_manager_search_postback');
3050
3051 $where_simple=array();
3052 if ($search_page_names) $where_simple['page_name like '] = "%".$search_page_names."%";
3053 if ($search_postback) $where_simple['postback_id like '] = "%".$search_postback."%";
3054 $where_simple['messenger_bot_postback.user_id'] = $this->user_id;
3055 $where_simple['messenger_bot_postback.is_template'] = '1';
3056 $where_simple['messenger_bot_postback.template_for'] = 'reply_message';
3057
3058 $where = array('where'=>$where_simple);
3059 $order_by_str=$sort." ".$order;
3060 $offset = ($page-1)*$rows;
3061 $result = array();
3062 $table = "messenger_bot_postback";
3063 $join = array('messenger_bot_page_info'=>'messenger_bot_postback.page_id=messenger_bot_page_info.id,left');
3064 $select = array('messenger_bot_postback.*','page_name');
3065
3066 $info = $this->basic->get_data($table, $where, $select, $join, $limit=$rows, $start=$offset, $order_by=$order_by_str, $group_by='');
3067 $total_rows_array = $this->basic->count_row($table, $where, $count="messenger_bot_postback.id", $join);
3068 $total_result = $total_rows_array[0]['total_rows'];
3069
3070 $information = array();
3071 for($i=0;$i<count($info);$i++)
3072 {
3073 $id = $info[$i]['id'];
3074 $information[$i]['template_name'] = $info[$i]['template_name'];
3075 $information[$i]['page_name'] = $info[$i]['page_name'];
3076 $information[$i]['postback_id'] = $info[$i]['postback_id'];
3077 $information[$i]['action'] = "<a class='text-center' title='Edit this template' href='".base_url("messenger_bot/edit_template/$id")."'> <i class='fa fa-2x fa-edit'></i></a>";
3078 }
3079 echo convert_to_grid_data($information, $total_result);
3080
3081 }
3082 public function create_new_template($is_iframe="0",$default_page="")
3083 {
3084 $data['body'] = 'add_new_template';
3085 $data['page_title'] = $this->lang->line('Create new template');
3086 $data["templates"]=$this->basic->get_enum_values("messenger_bot","template_type");
3087 $data["keyword_types"]=$this->basic->get_enum_values("messenger_bot","keyword_type");
3088 $join = array('messenger_bot_user_info'=>'messenger_bot_page_info.messenger_bot_user_info_id=messenger_bot_user_info.id,left');
3089 $page_info = $this->basic->get_data('messenger_bot_page_info',array('where'=>array('messenger_bot_page_info.user_id'=>$this->user_id,'bot_enabled'=>'1')),array('messenger_bot_page_info.id','page_name','name'),$join);
3090 $page_list = array();
3091 foreach($page_info as $value)
3092 {
3093 $page_list[$value['id']] = $value['page_name']." [".$value['name']."]";
3094 }
3095 $data['page_list'] = $page_list;
3096 $data['is_iframe'] = $is_iframe;
3097 $data['default_page'] = $default_page;
3098 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id)));
3099 $data['postback_ids'] = $postback_id_list;
3100 $this->_viewcontroller($data);
3101 }
3102
3103 public function create_template_action()
3104 {
3105 $post=$_POST;
3106 foreach ($post as $key => $value)
3107 {
3108 $$key=$value;
3109 }
3110 // $template_type = trim($template_type);
3111 $insert_data = array();
3112 $insert_data_to_bot = array();
3113 $insert_data['bot_name'] = $bot_name;
3114 $insert_data_to_bot['bot_name'] = $bot_name;
3115 $insert_data['template_name'] = $bot_name;
3116 $insert_data['postback_id'] = $template_postback_id;
3117 $insert_data_to_bot['postback_id'] = $template_postback_id;
3118 $insert_data['page_id'] = $page_table_id;
3119 $insert_data_to_bot['page_id'] = $page_table_id;
3120 $insert_data['is_template'] = '1';
3121 $insert_data_to_bot['is_template'] = '1';
3122 $insert_data['use_status'] = '1';
3123
3124 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token","page_id"));
3125 $insert_data_to_bot['fb_page_id'] = $messenger_bot_user_info_id[0]['page_id'];
3126
3127 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
3128 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
3129 $white_listed_domain = $this->basic->get_data("messenger_bot_domain_whitelist",array("where"=>array("user_id"=>$this->user_id,"messenger_bot_user_info_id"=>$messenger_bot_user_info_id,"page_id"=>$page_table_id)),"domain");
3130
3131 $white_listed_domain_array = array();
3132 foreach ($white_listed_domain as $value) {
3133 $white_listed_domain_array[] = $value['domain'];
3134 }
3135 $need_to_whitelist_array = array();
3136 // domain white list section
3137
3138 $postback_insert_data = array();
3139 $reply_bot = array();
3140 $bot_message = array();
3141 for ($k=1; $k <=3 ; $k++)
3142 {
3143 $template_type = 'template_type_'.$k;
3144 if(!isset($$template_type)) continue;
3145 $template_type = $$template_type;
3146 // $insert_data['template_type'] = $template_type;
3147 $template_type = str_replace(' ', '_', $template_type);
3148
3149 if($template_type == 'text')
3150 {
3151 $text_reply = 'text_reply_'.$k;
3152 $text_reply = $$text_reply;
3153 if($text_reply != '')
3154 {
3155 $reply_bot[$k]['template_type'] = $template_type;
3156 $reply_bot[$k]['text'] = $text_reply;
3157
3158 }
3159 }
3160 if($template_type == 'image')
3161 {
3162 $image_reply_field = 'image_reply_field_'.$k;
3163 $image_reply_field = $$image_reply_field;
3164 if($image_reply_field != '')
3165 {
3166 $reply_bot[$k]['template_type'] = $template_type;
3167 $reply_bot[$k]['attachment']['type'] = 'image';
3168 $reply_bot[$k]['attachment']['payload']['url'] = $image_reply_field;
3169 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3170 }
3171 }
3172 if($template_type == 'audio')
3173 {
3174 $audio_reply_field = 'audio_reply_field_'.$k;
3175 $audio_reply_field = $$audio_reply_field;
3176 if($audio_reply_field != '')
3177 {
3178 $reply_bot[$k]['template_type'] = $template_type;
3179 $reply_bot[$k]['attachment']['type'] = 'audio';
3180 $reply_bot[$k]['attachment']['payload']['url'] = $audio_reply_field;
3181 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3182 }
3183
3184 }
3185 if($template_type == 'video')
3186 {
3187 $video_reply_field = 'video_reply_field_'.$k;
3188 $video_reply_field = $$video_reply_field;
3189 if($video_reply_field != '')
3190 {
3191 $reply_bot[$k]['template_type'] = $template_type;
3192 $reply_bot[$k]['attachment']['type'] = 'video';
3193 $reply_bot[$k]['attachment']['payload']['url'] = $video_reply_field;
3194 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3195 }
3196 }
3197 if($template_type == 'file')
3198 {
3199 $file_reply_field = 'file_reply_field_'.$k;
3200 $file_reply_field = $$file_reply_field;
3201 if($file_reply_field != '')
3202 {
3203 $reply_bot[$k]['template_type'] = $template_type;
3204 $reply_bot[$k]['attachment']['type'] = 'file';
3205 $reply_bot[$k]['attachment']['payload']['url'] = $file_reply_field;
3206 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3207 }
3208 }
3209 if($template_type == 'text_with_buttons')
3210 {
3211 $text_with_buttons_input = 'text_with_buttons_input_'.$k;
3212 $text_with_buttons_input = $$text_with_buttons_input;
3213 $reply_bot[$k]['template_type'] = $template_type;
3214 $reply_bot[$k]['attachment']['type'] = 'template';
3215 $reply_bot[$k]['attachment']['payload']['template_type'] = 'button';
3216 $reply_bot[$k]['attachment']['payload']['text'] = $text_with_buttons_input;
3217 for ($i=1; $i <= 3 ; $i++)
3218 {
3219 $button_text = 'text_with_buttons_text_'.$i.'_'.$k;
3220 $button_text = $$button_text;
3221 $button_type = 'text_with_button_type_'.$i.'_'.$k;
3222 $button_type = $$button_type;
3223 $button_postback_id = 'text_with_button_post_id_'.$i.'_'.$k;
3224 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3225 $button_web_url = 'text_with_button_web_url_'.$i.'_'.$k;
3226 $button_web_url = $$button_web_url;
3227 $button_call_us = 'text_with_button_call_us_'.$i.'_'.$k;
3228 $button_call_us = $$button_call_us;
3229 if($button_type == 'post_back')
3230 {
3231 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3232 {
3233 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'postback';
3234 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_postback_id;
3235 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3236 $single_postback_insert_data = array();
3237 $single_postback_insert_data['user_id'] = $this->user_id;
3238 $single_postback_insert_data['postback_id'] = $button_postback_id;
3239 $single_postback_insert_data['page_id'] = $page_table_id;
3240 $single_postback_insert_data['bot_name'] = $bot_name;
3241 $postback_insert_data[] = $single_postback_insert_data;
3242 }
3243 }
3244 if($button_type == 'web_url')
3245 {
3246 if($button_text != '' && $button_type != '' && $button_web_url != '')
3247 {
3248 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'web_url';
3249 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['url'] = $button_web_url;
3250 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3251 if(!in_array($button_web_url, $white_listed_domain_array))
3252 {
3253 $need_to_whitelist_array[] = $button_web_url;
3254 }
3255 }
3256 }
3257 if($button_type == 'phone_number')
3258 {
3259 if($button_text != '' && $button_type != '' && $button_call_us != '')
3260 {
3261 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'phone_number';
3262 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_call_us;
3263 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3264 }
3265 }
3266 }
3267 }
3268 if($template_type == 'quick_reply')
3269 {
3270 $quick_reply_text = 'quick_reply_text_'.$k;
3271 $quick_reply_text = $$quick_reply_text;
3272 $reply_bot[$k]['template_type'] = $template_type;
3273 $reply_bot[$k]['text'] = $quick_reply_text;
3274 for ($i=1; $i <= 11 ; $i++)
3275 {
3276 $button_text = 'quick_reply_button_text_'.$i.'_'.$k;
3277 $button_text = $$button_text;
3278 $button_postback_id = 'quick_reply_post_id_'.$i.'_'.$k;
3279 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3280 $button_type = 'quick_reply_button_type_'.$i.'_'.$k;
3281 $button_type = $$button_type;
3282 if($button_type=='post_back')
3283 {
3284 if($button_text != '' && $button_postback_id != '')
3285 {
3286 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'text';
3287 $reply_bot[$k]['quick_replies'][$i-1]['payload'] = $button_postback_id;
3288 $reply_bot[$k]['quick_replies'][$i-1]['title'] = $button_text;
3289 $single_postback_insert_data = array();
3290 $single_postback_insert_data['user_id'] = $this->user_id;
3291 $single_postback_insert_data['postback_id'] = $button_postback_id;
3292 $single_postback_insert_data['page_id'] = $page_table_id;
3293 $single_postback_insert_data['bot_name'] = $bot_name;
3294 $postback_insert_data[] = $single_postback_insert_data;
3295 }
3296 }
3297 if($button_type=='phone_number')
3298 {
3299 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_phone_number';
3300 }
3301 if($button_type=='user_email')
3302 {
3303 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_email';
3304 }
3305 if($button_type=='location')
3306 {
3307 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'location';
3308 }
3309
3310 }
3311 }
3312
3313 if($template_type == 'generic_template')
3314 {
3315 $generic_template_title = 'generic_template_title_'.$k;
3316 $generic_template_title = $$generic_template_title;
3317 $generic_template_image = 'generic_template_image_'.$k;
3318 $generic_template_image = $$generic_template_image;
3319 $generic_template_subtitle = 'generic_template_subtitle_'.$k;
3320 $generic_template_subtitle = $$generic_template_subtitle;
3321 $generic_template_image_destination_link = 'generic_template_image_destination_link_'.$k;
3322 $generic_template_image_destination_link = $$generic_template_image_destination_link;
3323 $reply_bot[$k]['template_type'] = $template_type;
3324 $reply_bot[$k]['attachment']['type'] = 'template';
3325 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
3326 $reply_bot[$k]['attachment']['payload']['elements'][0]['title'] = $generic_template_title;
3327 $reply_bot[$k]['attachment']['payload']['elements'][0]['image_url'] = $generic_template_image;
3328 $reply_bot[$k]['attachment']['payload']['elements'][0]['subtitle'] = $generic_template_subtitle;
3329 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['type'] = 'web_url';
3330 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['url'] = $generic_template_image_destination_link;
3331
3332 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['messenger_extensions'] = true;
3333 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['webview_height_ratio'] = 'tall';
3334 // $reply_bot['attachment']['payload']['elements'][0]['default_action']['fallback_url'] = $generic_template_image_destination_link;
3335
3336 for ($i=1; $i <= 3 ; $i++)
3337 {
3338 $button_text = 'generic_template_button_text_'.$i.'_'.$k;
3339 $button_text = $$button_text;
3340 $button_type = 'generic_template_button_type_'.$i.'_'.$k;
3341 $button_type = $$button_type;
3342 $button_postback_id = 'generic_template_button_post_id_'.$i.'_'.$k;
3343 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3344 $button_web_url = 'generic_template_button_web_url_'.$i.'_'.$k;
3345 $button_web_url = $$button_web_url;
3346 $button_call_us = 'generic_template_button_call_us_'.$i.'_'.$k;
3347 $button_call_us = $$button_call_us;
3348 if($button_type == 'post_back')
3349 {
3350 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3351 {
3352 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'postback';
3353 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_postback_id;
3354 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3355 $single_postback_insert_data = array();
3356 $single_postback_insert_data['user_id'] = $this->user_id;
3357 $single_postback_insert_data['postback_id'] = $button_postback_id;
3358 $single_postback_insert_data['page_id'] = $page_table_id;
3359 $single_postback_insert_data['bot_name'] = $bot_name;
3360 $postback_insert_data[] = $single_postback_insert_data;
3361 }
3362 }
3363 if($button_type == 'web_url')
3364 {
3365 if($button_text != '' && $button_type != '' && $button_web_url != '')
3366 {
3367 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'web_url';
3368 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['url'] = $button_web_url;
3369 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3370 if(!in_array($button_web_url, $white_listed_domain_array))
3371 {
3372 $need_to_whitelist_array[] = $button_web_url;
3373 }
3374 }
3375 }
3376 if($button_type == 'phone_number')
3377 {
3378 if($button_text != '' && $button_type != '' && $button_call_us != '')
3379 {
3380 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'phone_number';
3381 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_call_us;
3382 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3383 }
3384 }
3385 }
3386 }
3387
3388 if($template_type == 'carousel')
3389 {
3390 $reply_bot[$k]['template_type'] = $template_type;
3391 $reply_bot[$k]['attachment']['type'] = 'template';
3392 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
3393 for ($j=1; $j <=5 ; $j++)
3394 {
3395 $carousel_image = 'carousel_image_'.$j.'_'.$k;
3396 if($$carousel_image == '') continue;
3397 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$carousel_image;
3398 $carousel_title = 'carousel_title_'.$j.'_'.$k;
3399 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$carousel_title;
3400 $carousel_subtitle = 'carousel_subtitle_'.$j.'_'.$k;
3401 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$carousel_subtitle;
3402 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
3403 $carousel_image_destination_link = 'carousel_image_destination_link_'.$j.'_'.$k;
3404 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$carousel_image_destination_link;
3405 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['messenger_extensions'] = true;
3406 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['webview_height_ratio'] = 'tall';
3407 // $reply_bot['attachment']['payload']['elements'][$j-1]['default_action']['fallback_url'] = $$carousel_image_destination_link;
3408
3409 for ($i=1; $i <= 3 ; $i++)
3410 {
3411 $button_text = 'carousel_button_text_'.$j."_".$i.'_'.$k;
3412 $button_text = $$button_text;
3413 $button_type = 'carousel_button_type_'.$j."_".$i.'_'.$k;
3414 $button_type = $$button_type;
3415 $button_postback_id = 'carousel_button_post_id_'.$j."_".$i.'_'.$k;
3416 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3417 $button_web_url = 'carousel_button_web_url_'.$j."_".$i.'_'.$k;
3418 $button_web_url = $$button_web_url;
3419 $button_call_us = 'carousel_button_call_us_'.$j."_".$i.'_'.$k;
3420 $button_call_us = $$button_call_us;
3421 if($button_type == 'post_back')
3422 {
3423 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3424 {
3425 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'postback';
3426 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_postback_id;
3427 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3428 $single_postback_insert_data = array();
3429 $single_postback_insert_data['user_id'] = $this->user_id;
3430 $single_postback_insert_data['postback_id'] = $button_postback_id;
3431 $single_postback_insert_data['page_id'] = $page_table_id;
3432 $single_postback_insert_data['bot_name'] = $bot_name;
3433 $postback_insert_data[] = $single_postback_insert_data;
3434 }
3435 }
3436 if($button_type == 'web_url')
3437 {
3438 if($button_text != '' && $button_type != '' && $button_web_url != '')
3439 {
3440 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'web_url';
3441 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['url'] = $button_web_url;
3442 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3443 if(!in_array($button_web_url, $white_listed_domain_array))
3444 {
3445 $need_to_whitelist_array[] = $button_web_url;
3446 }
3447 }
3448 }
3449 if($button_type == 'phone_number')
3450 {
3451 if($button_text != '' && $button_type != '' && $button_call_us != '')
3452 {
3453 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'phone_number';
3454 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_call_us;
3455 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3456 }
3457 }
3458 }
3459 }
3460 }
3461
3462 if($template_type == 'list')
3463 {
3464 $reply_bot[$k]['template_type'] = $template_type;
3465 $reply_bot[$k]['attachment']['type'] = 'template';
3466 $reply_bot[$k]['attachment']['payload']['template_type'] = 'list';
3467
3468 for ($j=1; $j <=4 ; $j++)
3469 {
3470 $list_image = 'list_image_'.$j.'_'.$k;
3471 if($$list_image == '') continue;
3472 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$list_image;
3473 $list_title = 'list_title_'.$j.'_'.$k;
3474 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$list_title;
3475 $list_subtitle = 'list_subtitle_'.$j.'_'.$k;
3476 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$list_subtitle;
3477 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
3478 $list_image_destination_link = 'list_image_destination_link_'.$j.'_'.$k;
3479 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$list_image_destination_link;
3480
3481 }
3482
3483 $button_text = 'list_with_buttons_text_'.$k;
3484 $button_text = $$button_text;
3485 $button_type = 'list_with_button_type_'.$k;
3486 $button_type = $$button_type;
3487 $button_postback_id = 'list_with_button_post_id_'.$k;
3488 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3489 $button_web_url = 'list_with_button_web_url_'.$k;
3490 $button_web_url = $$button_web_url;
3491 $button_call_us = 'list_with_button_call_us_'.$k;
3492 $button_call_us = $$button_call_us;
3493 if($button_type == 'post_back')
3494 {
3495 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3496 {
3497 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'postback';
3498 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_postback_id;
3499 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
3500 $single_postback_insert_data = array();
3501 $single_postback_insert_data['user_id'] = $this->user_id;
3502 $single_postback_insert_data['postback_id'] = $button_postback_id;
3503 $single_postback_insert_data['page_id'] = $page_table_id;
3504 $single_postback_insert_data['bot_name'] = $bot_name;
3505 $postback_insert_data[] = $single_postback_insert_data;
3506 }
3507 }
3508 if($button_type == 'web_url')
3509 {
3510 if($button_text != '' && $button_type != '' && $button_web_url != '')
3511 {
3512 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'web_url';
3513 $reply_bot[$k]['attachment']['payload']['buttons'][0]['url'] = $button_web_url;
3514 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
3515 if(!in_array($button_web_url, $white_listed_domain_array))
3516 {
3517 $need_to_whitelist_array[] = $button_web_url;
3518 }
3519 }
3520 }
3521 if($button_type == 'phone_number')
3522 {
3523 if($button_text != '' && $button_type != '' && $button_call_us != '')
3524 {
3525 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'phone_number';
3526 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_call_us;
3527 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
3528 }
3529 }
3530
3531
3532 }
3533
3534 if(isset($reply_bot[$k]))
3535 {
3536 $bot_message[$k]['recipient'] = array('id'=>'replace_id');
3537 $bot_message[$k]['message'] = $reply_bot[$k];
3538 }
3539
3540 }
3541
3542 $reply_bot_filtered = array();
3543 $m=0;
3544 foreach ($bot_message as $value) {
3545 $m++;
3546 $reply_bot_filtered[$m] = $value;
3547 }
3548
3549 // domain white list section start
3550 $this->load->library("messenger_bot_login");
3551 $domain_whitelist_insert_data = array();
3552 foreach($need_to_whitelist_array as $value)
3553 {
3554 $response=$this->messenger_bot_login->domain_whitelist($page_access_token,$value);
3555 if($response['status'] != '0')
3556 {
3557 $temp_data = array();
3558 $temp_data['user_id'] = $this->user_id;
3559 $temp_data['messenger_bot_user_info_id'] = $messenger_bot_user_info_id;
3560 $temp_data['page_id'] = $page_table_id;
3561 $temp_data['domain'] = $value;
3562 $temp_data['created_at'] = date("Y-m-d H:i:s");
3563 $domain_whitelist_insert_data[] = $temp_data;
3564 }
3565 }
3566 if(!empty($domain_whitelist_insert_data))
3567 $this->db->insert_batch('messenger_bot_domain_whitelist',$domain_whitelist_insert_data);
3568 // domain white list section end
3569
3570 $insert_data['template_jsoncode'] = json_encode($reply_bot_filtered,true);
3571 $insert_data_to_bot['message'] = json_encode($reply_bot_filtered,true);
3572 $insert_data['user_id'] = $this->user_id;
3573 $insert_data_to_bot['user_id'] = $this->user_id;
3574 $this->basic->insert_data('messenger_bot',$insert_data_to_bot);
3575 $messenger_bot_table_id = $this->db->insert_id();
3576 $insert_data['messenger_bot_table_id'] = $messenger_bot_table_id;
3577 $this->basic->insert_data('messenger_bot_postback',$insert_data);
3578 $template_id = $this->db->insert_id();
3579 $postback_insert_data_modified = array();
3580 $m=0;
3581 foreach($postback_insert_data as $value)
3582 {
3583 $postback_insert_data_modified[$m]['user_id'] = $value['user_id'];
3584 $postback_insert_data_modified[$m]['postback_id'] = $value['postback_id'];
3585 $postback_insert_data_modified[$m]['page_id'] = $value['page_id'];
3586 $postback_insert_data_modified[$m]['bot_name'] = $value['bot_name'];
3587 $postback_insert_data_modified[$m]['template_id'] = $template_id;
3588 $postback_insert_data_modified[$m]['inherit_from_template'] = '1';
3589 $m++;
3590 }
3591
3592 // if($keyword_type == 'post-back' && !empty($keywordtype_postback_id))
3593 // {
3594 // $this->db->where_in("postback_id", $keywordtype_postback_id);
3595 // $this->db->update('messenger_bot_postback', array('use_status' => '1'));
3596 // }
3597
3598 if(!empty($postback_insert_data_modified))
3599 $this->db->insert_batch('messenger_bot_postback',$postback_insert_data_modified);
3600 $this->session->set_flashdata('bot_success',1);
3601 echo json_encode(array("status" => "1", "message" =>$this->lang->line("New template has been stored successfully.")));
3602
3603 }
3604
3605 public function edit_template($postback_table_id=0)
3606 {
3607 if($postback_table_id == 0) exit();
3608 $table_name = "messenger_bot_postback";
3609 $where_bot['where'] = array('id' => $postback_table_id, 'status' => '1');
3610 $bot_info = $this->basic->get_data($table_name, $where_bot);
3611 $data['body'] = 'edit_template';
3612 $data['page_title'] = $this->lang->line('Edit template');
3613 $data["templates"]=$this->basic->get_enum_values("messenger_bot","template_type");
3614 $data["keyword_types"]=$this->basic->get_enum_values("messenger_bot","keyword_type");
3615 $join = array('messenger_bot_user_info'=>'messenger_bot_page_info.messenger_bot_user_info_id=messenger_bot_user_info.id,left');
3616 $page_info = $this->basic->get_data('messenger_bot_page_info',array('where'=>array('messenger_bot_page_info.user_id'=>$this->user_id,'bot_enabled'=>'1')),array('messenger_bot_page_info.id','page_name','name'),$join);
3617 $page_list = array();
3618 foreach($page_info as $value)
3619 {
3620 $page_list[$value['id']] = $value['page_name']." [".$value['name']."]";
3621 }
3622 $data['page_list'] = $page_list;
3623 $data['bot_info'] = isset($bot_info[0]) ? $bot_info[0] : array();
3624 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$bot_info[0]["page_id"]),'where_not_in'=>array('UNSUBSCRIBE_QUICK_BOXER','RESUBSCRIBE_QUICK_BOXER')));
3625 $current_postbacks = array();
3626 foreach ($postback_id_list as $value) {
3627 if($value['template_id'] == $postback_table_id || $value['id'] == $postback_table_id)
3628 $current_postbacks[] = $value['postback_id'];
3629 }
3630 $data['postback_ids'] = $postback_id_list;
3631 $data['current_postbacks'] = $current_postbacks;
3632 $this->_viewcontroller($data);
3633 }
3634
3635 public function edit_template_action()
3636 {
3637 $post=$_POST;
3638 foreach ($post as $key => $value)
3639 {
3640 $$key=$value;
3641 }
3642 // $template_type = trim($template_type);
3643 $insert_data = array();
3644 $insert_data['bot_name'] = $bot_name;
3645 $insert_data['template_name'] = $bot_name;
3646 $insert_data['postback_id'] = $template_postback_id;
3647 $insert_data['page_id'] = $page_table_id;
3648 $insert_data['is_template'] = '1';
3649 // domain white list section
3650 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token"));
3651 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
3652 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
3653 $white_listed_domain = $this->basic->get_data("messenger_bot_domain_whitelist",array("where"=>array("user_id"=>$this->user_id,"messenger_bot_user_info_id"=>$messenger_bot_user_info_id,"page_id"=>$page_table_id)),"domain");
3654 $white_listed_domain_array = array();
3655 foreach ($white_listed_domain as $value) {
3656 $white_listed_domain_array[] = $value['domain'];
3657 }
3658 $need_to_whitelist_array = array();
3659 // domain white list section
3660
3661 $postback_insert_data = array();
3662 $reply_bot = array();
3663 $bot_message = array();
3664 for ($k=1; $k <=3 ; $k++)
3665 {
3666 $template_type = 'template_type_'.$k;
3667 if(!isset($$template_type)) continue;
3668 $template_type = $$template_type;
3669 $template_type = str_replace(' ', '_', $template_type);
3670 if($template_type == 'text')
3671 {
3672 $text_reply = 'text_reply_'.$k;
3673 $text_reply = $$text_reply;
3674 if($text_reply != '')
3675 {
3676 $reply_bot[$k]['template_type'] = $template_type;
3677 $reply_bot[$k]['text'] = $text_reply;
3678
3679 }
3680 }
3681 if($template_type == 'image')
3682 {
3683 $image_reply_field = 'image_reply_field_'.$k;
3684 $image_reply_field = $$image_reply_field;
3685 if($image_reply_field != '')
3686 {
3687 $reply_bot[$k]['template_type'] = $template_type;
3688 $reply_bot[$k]['attachment']['type'] = 'image';
3689 $reply_bot[$k]['attachment']['payload']['url'] = $image_reply_field;
3690 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3691 }
3692 }
3693 if($template_type == 'audio')
3694 {
3695 $audio_reply_field = 'audio_reply_field_'.$k;
3696 $audio_reply_field = $$audio_reply_field;
3697 if($audio_reply_field != '')
3698 {
3699 $reply_bot[$k]['template_type'] = $template_type;
3700 $reply_bot[$k]['attachment']['type'] = 'audio';
3701 $reply_bot[$k]['attachment']['payload']['url'] = $audio_reply_field;
3702 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3703 }
3704
3705 }
3706 if($template_type == 'video')
3707 {
3708 $video_reply_field = 'video_reply_field_'.$k;
3709 $video_reply_field = $$video_reply_field;
3710 if($video_reply_field != '')
3711 {
3712 $reply_bot[$k]['template_type'] = $template_type;
3713 $reply_bot[$k]['attachment']['type'] = 'video';
3714 $reply_bot[$k]['attachment']['payload']['url'] = $video_reply_field;
3715 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3716 }
3717 }
3718 if($template_type == 'file')
3719 {
3720 $file_reply_field = 'file_reply_field_'.$k;
3721 $file_reply_field = $$file_reply_field;
3722 if($file_reply_field != '')
3723 {
3724 $reply_bot[$k]['template_type'] = $template_type;
3725 $reply_bot[$k]['attachment']['type'] = 'file';
3726 $reply_bot[$k]['attachment']['payload']['url'] = $file_reply_field;
3727 $reply_bot[$k]['attachment']['payload']['is_reusable'] = true;
3728 }
3729 }
3730 if($template_type == 'text_with_buttons')
3731 {
3732 $text_with_buttons_input = 'text_with_buttons_input_'.$k;
3733 $text_with_buttons_input = $$text_with_buttons_input;
3734 $reply_bot[$k]['template_type'] = $template_type;
3735 $reply_bot[$k]['attachment']['type'] = 'template';
3736 $reply_bot[$k]['attachment']['payload']['template_type'] = 'button';
3737 $reply_bot[$k]['attachment']['payload']['text'] = $text_with_buttons_input;
3738 for ($i=1; $i <= 3 ; $i++)
3739 {
3740 $button_text = 'text_with_buttons_text_'.$i.'_'.$k;
3741 $button_text = $$button_text;
3742 $button_type = 'text_with_button_type_'.$i.'_'.$k;
3743 $button_type = $$button_type;
3744 $button_postback_id = 'text_with_button_post_id_'.$i.'_'.$k;
3745 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3746 $button_web_url = 'text_with_button_web_url_'.$i.'_'.$k;
3747 $button_web_url = $$button_web_url;
3748 $button_call_us = 'text_with_button_call_us_'.$i.'_'.$k;
3749 $button_call_us = $$button_call_us;
3750 if($button_type == 'post_back')
3751 {
3752 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3753 {
3754 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'postback';
3755 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_postback_id;
3756 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3757 $single_postback_insert_data = array();
3758 $single_postback_insert_data['user_id'] = $this->user_id;
3759 $single_postback_insert_data['postback_id'] = $button_postback_id;
3760 $single_postback_insert_data['page_id'] = $page_table_id;
3761 $single_postback_insert_data['bot_name'] = $bot_name;
3762 $postback_insert_data[] = $single_postback_insert_data;
3763 }
3764 }
3765 if($button_type == 'web_url')
3766 {
3767 if($button_text != '' && $button_type != '' && $button_web_url != '')
3768 {
3769 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'web_url';
3770 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['url'] = $button_web_url;
3771 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3772 if(!in_array($button_web_url, $white_listed_domain_array))
3773 {
3774 $need_to_whitelist_array[] = $button_web_url;
3775 }
3776 }
3777 }
3778 if($button_type == 'phone_number')
3779 {
3780 if($button_text != '' && $button_type != '' && $button_call_us != '')
3781 {
3782 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['type'] = 'phone_number';
3783 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['payload'] = $button_call_us;
3784 $reply_bot[$k]['attachment']['payload']['buttons'][$i-1]['title'] = $button_text;
3785 }
3786 }
3787 }
3788 }
3789
3790 if($template_type == 'quick_reply')
3791 {
3792 $quick_reply_text = 'quick_reply_text_'.$k;
3793 $quick_reply_text = $$quick_reply_text;
3794 $reply_bot[$k]['template_type'] = $template_type;
3795 $reply_bot[$k]['text'] = $quick_reply_text;
3796 for ($i=1; $i <= 11 ; $i++)
3797 {
3798 $button_text = 'quick_reply_button_text_'.$i.'_'.$k;
3799 $button_text = $$button_text;
3800 $button_postback_id = 'quick_reply_post_id_'.$i.'_'.$k;
3801 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3802 $button_type = 'quick_reply_button_type_'.$i.'_'.$k;
3803 $button_type = $$button_type;
3804 if($button_type=='post_back')
3805 {
3806 if($button_text != '' && $button_postback_id != '')
3807 {
3808 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'text';
3809 $reply_bot[$k]['quick_replies'][$i-1]['payload'] = $button_postback_id;
3810 $reply_bot[$k]['quick_replies'][$i-1]['title'] = $button_text;
3811 $single_postback_insert_data = array();
3812 $single_postback_insert_data['user_id'] = $this->user_id;
3813 $single_postback_insert_data['postback_id'] = $button_postback_id;
3814 $single_postback_insert_data['page_id'] = $page_table_id;
3815 $single_postback_insert_data['bot_name'] = $bot_name;
3816 $postback_insert_data[] = $single_postback_insert_data;
3817 }
3818 }
3819 if($button_type=='phone_number')
3820 {
3821 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_phone_number';
3822 }
3823 if($button_type=='user_email')
3824 {
3825 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'user_email';
3826 }
3827 if($button_type=='location')
3828 {
3829 $reply_bot[$k]['quick_replies'][$i-1]['content_type'] = 'location';
3830 }
3831
3832 }
3833 }
3834 if($template_type == 'generic_template')
3835 {
3836 $generic_template_title = 'generic_template_title_'.$k;
3837 $generic_template_title = $$generic_template_title;
3838 $generic_template_image = 'generic_template_image_'.$k;
3839 $generic_template_image = $$generic_template_image;
3840 $generic_template_subtitle = 'generic_template_subtitle_'.$k;
3841 $generic_template_subtitle = $$generic_template_subtitle;
3842 $generic_template_image_destination_link = 'generic_template_image_destination_link_'.$k;
3843 $generic_template_image_destination_link = $$generic_template_image_destination_link;
3844 $reply_bot[$k]['template_type'] = $template_type;
3845 $reply_bot[$k]['attachment']['type'] = 'template';
3846 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
3847 $reply_bot[$k]['attachment']['payload']['elements'][0]['title'] = $generic_template_title;
3848 $reply_bot[$k]['attachment']['payload']['elements'][0]['image_url'] = $generic_template_image;
3849 $reply_bot[$k]['attachment']['payload']['elements'][0]['subtitle'] = $generic_template_subtitle;
3850 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['type'] = 'web_url';
3851 $reply_bot[$k]['attachment']['payload']['elements'][0]['default_action']['url'] = $generic_template_image_destination_link;
3852
3853 for ($i=1; $i <= 3 ; $i++)
3854 {
3855 $button_text = 'generic_template_button_text_'.$i.'_'.$k;
3856 $button_text = $$button_text;
3857 $button_type = 'generic_template_button_type_'.$i.'_'.$k;
3858 $button_type = $$button_type;
3859 $button_postback_id = 'generic_template_button_post_id_'.$i.'_'.$k;
3860 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3861 $button_web_url = 'generic_template_button_web_url_'.$i.'_'.$k;
3862 $button_web_url = $$button_web_url;
3863 $button_call_us = 'generic_template_button_call_us_'.$i.'_'.$k;
3864 $button_call_us = $$button_call_us;
3865 if($button_type == 'post_back')
3866 {
3867 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3868 {
3869 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'postback';
3870 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_postback_id;
3871 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3872 $single_postback_insert_data = array();
3873 $single_postback_insert_data['user_id'] = $this->user_id;
3874 $single_postback_insert_data['postback_id'] = $button_postback_id;
3875 $single_postback_insert_data['page_id'] = $page_table_id;
3876 $single_postback_insert_data['bot_name'] = $bot_name;
3877 $postback_insert_data[] = $single_postback_insert_data;
3878 }
3879 }
3880 if($button_type == 'web_url')
3881 {
3882 if($button_text != '' && $button_type != '' && $button_web_url != '')
3883 {
3884 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'web_url';
3885 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['url'] = $button_web_url;
3886 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3887 if(!in_array($button_web_url, $white_listed_domain_array))
3888 {
3889 $need_to_whitelist_array[] = $button_web_url;
3890 }
3891 }
3892 }
3893 if($button_type == 'phone_number')
3894 {
3895 if($button_text != '' && $button_type != '' && $button_call_us != '')
3896 {
3897 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['type'] = 'phone_number';
3898 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['payload'] = $button_call_us;
3899 $reply_bot[$k]['attachment']['payload']['elements'][0]['buttons'][$i-1]['title'] = $button_text;
3900 }
3901 }
3902 }
3903 }
3904 if($template_type == 'carousel')
3905 {
3906 $reply_bot[$k]['template_type'] = $template_type;
3907 $reply_bot[$k]['attachment']['type'] = 'template';
3908 $reply_bot[$k]['attachment']['payload']['template_type'] = 'generic';
3909 for ($j=1; $j <=5 ; $j++)
3910 {
3911 $carousel_image = 'carousel_image_'.$j.'_'.$k;
3912 if($$carousel_image == '') continue;
3913 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$carousel_image;
3914 $carousel_title = 'carousel_title_'.$j.'_'.$k;
3915 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$carousel_title;
3916 $carousel_subtitle = 'carousel_subtitle_'.$j.'_'.$k;
3917 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$carousel_subtitle;
3918 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
3919 $carousel_image_destination_link = 'carousel_image_destination_link_'.$j.'_'.$k;
3920 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$carousel_image_destination_link;
3921
3922 for ($i=1; $i <= 3 ; $i++)
3923 {
3924 $button_text = 'carousel_button_text_'.$j."_".$i.'_'.$k;
3925 $button_text = $$button_text;
3926 $button_type = 'carousel_button_type_'.$j."_".$i.'_'.$k;
3927 $button_type = $$button_type;
3928 $button_postback_id = 'carousel_button_post_id_'.$j."_".$i.'_'.$k;
3929 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
3930 $button_web_url = 'carousel_button_web_url_'.$j."_".$i.'_'.$k;
3931 $button_web_url = $$button_web_url;
3932 $button_call_us = 'carousel_button_call_us_'.$j."_".$i.'_'.$k;
3933 $button_call_us = $$button_call_us;
3934 if($button_type == 'post_back')
3935 {
3936 if($button_text != '' && $button_type != '' && $button_postback_id != '')
3937 {
3938 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'postback';
3939 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_postback_id;
3940 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3941 $single_postback_insert_data = array();
3942 $single_postback_insert_data['user_id'] = $this->user_id;
3943 $single_postback_insert_data['postback_id'] = $button_postback_id;
3944 $single_postback_insert_data['page_id'] = $page_table_id;
3945 $single_postback_insert_data['bot_name'] = $bot_name;
3946 $postback_insert_data[] = $single_postback_insert_data;
3947 }
3948 }
3949 if($button_type == 'web_url')
3950 {
3951 if($button_text != '' && $button_type != '' && $button_web_url != '')
3952 {
3953 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'web_url';
3954 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['url'] = $button_web_url;
3955 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3956 if(!in_array($button_web_url, $white_listed_domain_array))
3957 {
3958 $need_to_whitelist_array[] = $button_web_url;
3959 }
3960 }
3961 }
3962 if($button_type == 'phone_number')
3963 {
3964 if($button_text != '' && $button_type != '' && $button_call_us != '')
3965 {
3966 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['type'] = 'phone_number';
3967 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['payload'] = $button_call_us;
3968 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['buttons'][$i-1]['title'] = $button_text;
3969 }
3970 }
3971 }
3972 }
3973 }
3974
3975 if($template_type == 'list')
3976 {
3977 $reply_bot[$k]['template_type'] = $template_type;
3978 $reply_bot[$k]['attachment']['type'] = 'template';
3979 $reply_bot[$k]['attachment']['payload']['template_type'] = 'list';
3980
3981 for ($j=1; $j <=4 ; $j++)
3982 {
3983 $list_image = 'list_image_'.$j.'_'.$k;
3984 if($$list_image == '') continue;
3985 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['image_url'] = $$list_image;
3986 $list_title = 'list_title_'.$j.'_'.$k;
3987 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['title'] = $$list_title;
3988 $list_subtitle = 'list_subtitle_'.$j.'_'.$k;
3989 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['subtitle'] = $$list_subtitle;
3990 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['type'] = 'web_url';
3991 $list_image_destination_link = 'list_image_destination_link_'.$j.'_'.$k;
3992 $reply_bot[$k]['attachment']['payload']['elements'][$j-1]['default_action']['url'] = $$list_image_destination_link;
3993
3994 }
3995
3996 $button_text = 'list_with_buttons_text_'.$k;
3997 $button_text = $$button_text;
3998 $button_type = 'list_with_button_type_'.$k;
3999 $button_type = $$button_type;
4000 $button_postback_id = 'list_with_button_post_id_'.$k;
4001 $button_postback_id = isset($$button_postback_id) ? $$button_postback_id : '';
4002 $button_web_url = 'list_with_button_web_url_'.$k;
4003 $button_web_url = $$button_web_url;
4004 $button_call_us = 'list_with_button_call_us_'.$k;
4005 $button_call_us = $$button_call_us;
4006 if($button_type == 'post_back')
4007 {
4008 if($button_text != '' && $button_type != '' && $button_postback_id != '')
4009 {
4010 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'postback';
4011 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_postback_id;
4012 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
4013 $single_postback_insert_data = array();
4014 $single_postback_insert_data['user_id'] = $this->user_id;
4015 $single_postback_insert_data['postback_id'] = $button_postback_id;
4016 $single_postback_insert_data['page_id'] = $page_table_id;
4017 $single_postback_insert_data['bot_name'] = $bot_name;
4018 $postback_insert_data[] = $single_postback_insert_data;
4019 }
4020 }
4021 if($button_type == 'web_url')
4022 {
4023 if($button_text != '' && $button_type != '' && $button_web_url != '')
4024 {
4025 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'web_url';
4026 $reply_bot[$k]['attachment']['payload']['buttons'][0]['url'] = $button_web_url;
4027 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
4028 if(!in_array($button_web_url, $white_listed_domain_array))
4029 {
4030 $need_to_whitelist_array[] = $button_web_url;
4031 }
4032 }
4033 }
4034 if($button_type == 'phone_number')
4035 {
4036 if($button_text != '' && $button_type != '' && $button_call_us != '')
4037 {
4038 $reply_bot[$k]['attachment']['payload']['buttons'][0]['type'] = 'phone_number';
4039 $reply_bot[$k]['attachment']['payload']['buttons'][0]['payload'] = $button_call_us;
4040 $reply_bot[$k]['attachment']['payload']['buttons'][0]['title'] = $button_text;
4041 }
4042 }
4043
4044
4045 }
4046
4047 if(isset($reply_bot[$k]))
4048 {
4049 $bot_message[$k]['recipient'] = array('id'=>'replace_id');
4050 $bot_message[$k]['message'] = $reply_bot[$k];
4051 }
4052 }
4053
4054 $reply_bot_filtered = array();
4055 $m=0;
4056 foreach ($bot_message as $value) {
4057 $m++;
4058 $reply_bot_filtered[$m] = $value;
4059 }
4060
4061 // domain white list section start
4062 $this->load->library("messenger_bot_login");
4063 $domain_whitelist_insert_data = array();
4064 foreach($need_to_whitelist_array as $value)
4065 {
4066 $response=$this->messenger_bot_login->domain_whitelist($page_access_token,$value);
4067 if($response['status'] != '0')
4068 {
4069 $temp_data = array();
4070 $temp_data['user_id'] = $this->user_id;
4071 $temp_data['messenger_bot_user_info_id'] = $messenger_bot_user_info_id;
4072 $temp_data['page_id'] = $page_table_id;
4073 $temp_data['domain'] = $value;
4074 $temp_data['created_at'] = date("Y-m-d H:i:s");
4075 $domain_whitelist_insert_data[] = $temp_data;
4076 }
4077 }
4078 if(!empty($domain_whitelist_insert_data))
4079 $this->db->insert_batch('messenger_bot_domain_whitelist',$domain_whitelist_insert_data);
4080 // domain white list section end
4081
4082 $insert_data['template_jsoncode'] = json_encode($reply_bot_filtered,true);
4083 $insert_data['user_id'] = $this->user_id;
4084 $this->basic->update_data('messenger_bot_postback',array("id" => $id),$insert_data);
4085
4086 $existing_data = $this->basic->get_data('messenger_bot_postback',array('where'=>array('id'=>$id)));
4087 $this->basic->update_data('messenger_bot',array('id'=>$existing_data[0]['messenger_bot_table_id']),array('message'=>$existing_data[0]['template_jsoncode']));
4088
4089 $messenger_bot_table_id = $existing_data[0]['messenger_bot_table_id'];
4090
4091 $existing_postback_ids_array = array();
4092 $existing_postback_ids = $this->basic->get_data('messenger_bot_postback',array('where'=>array('page_id'=>$page_table_id)),array('postback_id'));
4093 $this->basic->delete_data('messenger_bot_postback',array('page_id'=>$page_table_id,'template_id'=>$id,'use_status'=>'0','inherit_from_template'=>'1'));
4094 if(!empty($existing_postback_ids))
4095 {
4096 foreach($existing_postback_ids as $value)
4097 {
4098 array_push($existing_postback_ids_array, strtoupper($value['postback_id']));
4099 }
4100 }
4101
4102 $postback_insert_data_modified = array();
4103 $m=0;
4104 foreach($postback_insert_data as $value)
4105 {
4106 if(in_array(strtoupper($value['postback_id']), $existing_postback_ids_array)) continue;
4107 if($value['postback_id'] == 'UNSUBSCRIBE_QUICK_BOXER' || $value['postback_id'] == 'RESUBSCRIBE_QUICK_BOXER') continue;
4108 $postback_insert_data_modified[$m]['user_id'] = $value['user_id'];
4109 $postback_insert_data_modified[$m]['postback_id'] = $value['postback_id'];
4110 $postback_insert_data_modified[$m]['page_id'] = $value['page_id'];
4111 $postback_insert_data_modified[$m]['bot_name'] = $value['bot_name'];
4112 $postback_insert_data_modified[$m]['messenger_bot_table_id'] = $messenger_bot_table_id;
4113 $postback_insert_data_modified[$m]['inherit_from_template'] = '1';
4114 $postback_insert_data_modified[$m]['template_id'] = $id;
4115 $m++;
4116 }
4117
4118 // if($keyword_type == 'post-back' && !empty($keywordtype_postback_id))
4119 // {
4120 // $this->db->where_in("postback_id", $keywordtype_postback_id);
4121 // $this->db->update('messenger_bot_postback', array('use_status' => '1'));
4122 // }
4123
4124 if(!empty($postback_insert_data_modified))
4125 $this->db->insert_batch('messenger_bot_postback',$postback_insert_data_modified);
4126
4127 $this->session->set_flashdata('bot_update_success',1);
4128 echo json_encode(array("status" => "1", "message" =>$this->lang->line("Template been updated successfully.")));
4129
4130 }
4131
4132 public function upload_image_only()
4133 {
4134 if ($_SERVER['REQUEST_METHOD'] === 'GET') exit();
4135 $ret=array();
4136 $folder_path = FCPATH."upload/image";
4137 if (!file_exists($folder_path)) {
4138 mkdir($folder_path, 0777, true);
4139 }
4140 $output_dir = FCPATH."upload/image/".$this->user_id;
4141 if (!file_exists($output_dir)) {
4142 mkdir($output_dir, 0777, true);
4143 }
4144 if (isset($_FILES["myfile"])) {
4145 $error =$_FILES["myfile"]["error"];
4146 $post_fileName =$_FILES["myfile"]["name"];
4147 $post_fileName_array=explode(".", $post_fileName);
4148 $ext=array_pop($post_fileName_array);
4149 $filename=implode('.', $post_fileName_array);
4150 $filename="image_".$this->user_id."_".time().substr(uniqid(mt_rand(), true), 0, 6).".".$ext;
4151 $allow=".jpg,.jpeg,.png,.gif";
4152 $allow=str_replace('.', '', $allow);
4153 $allow=explode(',', $allow);
4154 if(!in_array(strtolower($ext), $allow))
4155 {
4156 echo json_encode("Are you kidding???");
4157 exit();
4158 }
4159
4160 move_uploaded_file($_FILES["myfile"]["tmp_name"], $output_dir.'/'.$filename);
4161 $ret[]= $filename;
4162 echo json_encode($filename);
4163 }
4164 }
4165
4166 public function delete_uploaded_file() // deletes the uploaded video to upload another one
4167 {
4168 if(!$_POST) exit();
4169 $output_dir = FCPATH."upload/image/".$this->user_id."/";
4170 if(isset($_POST["op"]) && $_POST["op"] == "delete" && isset($_POST['name']))
4171 {
4172 $fileName =$_POST['name'];
4173 $fileName=str_replace("..",".",$fileName); //required. if somebody is trying parent folder files
4174 $filePath = $output_dir. $fileName;
4175 if (file_exists($filePath))
4176 {
4177 unlink($filePath);
4178 }
4179 }
4180 }
4181 public function upload_live_video()
4182 {
4183 if ($_SERVER['REQUEST_METHOD'] === 'GET') exit();
4184 $ret=array();
4185 $output_dir = FCPATH."upload/video";
4186 $folder_path = FCPATH."upload/video";
4187 if (!file_exists($folder_path)) {
4188 mkdir($folder_path, 0777, true);
4189 }
4190 if (isset($_FILES["myfile"])) {
4191 $error =$_FILES["myfile"]["error"];
4192 $post_fileName =$_FILES["myfile"]["name"];
4193 $post_fileName_array=explode(".", $post_fileName);
4194 $ext=array_pop($post_fileName_array);
4195 $filename=implode('.', $post_fileName_array);
4196 $filename="video_".$this->user_id."_".time().substr(uniqid(mt_rand(), true), 0, 6).".".$ext;
4197 $allow=".mov,.mpeg4,.mp4,.avi,.wmv,.mpegps,.flv,.3gpp,.webm";
4198 $allow=str_replace('.', '', $allow);
4199 $allow=explode(',', $allow);
4200 if(!in_array(strtolower($ext), $allow))
4201 {
4202 echo json_encode("Are you kidding???");
4203 exit();
4204 }
4205 move_uploaded_file($_FILES["myfile"]["tmp_name"], $output_dir.'/'.$filename);
4206 $ret[]= $filename;
4207 $this->session->set_userdata("go_live_video_file_path_name", $output_dir.'/'.$filename);
4208 $this->session->set_userdata("go_live_video_filename", $filename);
4209 echo json_encode($filename);
4210 }
4211 }
4212
4213 public function delete_uploaded_live_file() // deletes the uploaded video to upload another one
4214 {
4215 if(!$_POST) exit();
4216 $output_dir = FCPATH."upload/video/";
4217 if(isset($_POST["op"]) && $_POST["op"] == "delete" && isset($_POST['name']))
4218 {
4219 $fileName =$_POST['name'];
4220 $fileName=str_replace("..",".",$fileName); //required. if somebody is trying parent folder files
4221 $filePath = $output_dir. $fileName;
4222 if (file_exists($filePath))
4223 {
4224 unlink($filePath);
4225 }
4226 }
4227 }
4228 // audio/pdf/doc file upload section
4229 public function upload_audio_file()
4230 {
4231 if ($_SERVER['REQUEST_METHOD'] === 'GET') exit();
4232 $ret=array();
4233 $output_dir = FCPATH."upload/audio";
4234 $folder_path = FCPATH."upload/audio";
4235 if (!file_exists($folder_path)) {
4236 mkdir($folder_path, 0777, true);
4237 }
4238 if (isset($_FILES["myfile"])) {
4239 $error =$_FILES["myfile"]["error"];
4240 $post_fileName =$_FILES["myfile"]["name"];
4241 $post_fileName_array=explode(".", $post_fileName);
4242 $ext=array_pop($post_fileName_array);
4243 $filename=implode('.', $post_fileName_array);
4244 $filename="audio_".$this->user_id."_".time().substr(uniqid(mt_rand(), true), 0, 6).".".$ext;
4245 $allow=".amr,.mp3,.wav,.WAV,.MP3,.AMR";
4246 $allow=str_replace('.', '', $allow);
4247 $allow=explode(',', $allow);
4248 if(!in_array(strtolower($ext), $allow))
4249 {
4250 echo json_encode("Are you kidding???");
4251 exit();
4252 }
4253 move_uploaded_file($_FILES["myfile"]["tmp_name"], $output_dir.'/'.$filename);
4254 $ret[]= $filename;
4255 $this->session->set_userdata("go_live_video_file_path_name", $output_dir.'/'.$filename);
4256 $this->session->set_userdata("go_live_video_filename", $filename);
4257 echo json_encode($filename);
4258 }
4259 }
4260
4261 public function delete_audio_file() // deletes the uploaded video to upload another one
4262 {
4263 if(!$_POST) exit();
4264 $output_dir = FCPATH."upload/audio/";
4265 if(isset($_POST["op"]) && $_POST["op"] == "delete" && isset($_POST['name']))
4266 {
4267 $fileName =$_POST['name'];
4268 $fileName=str_replace("..",".",$fileName); //required. if somebody is trying parent folder files
4269 $filePath = $output_dir. $fileName;
4270 if (file_exists($filePath))
4271 {
4272 unlink($filePath);
4273 }
4274 }
4275 }
4276
4277 public function upload_general_file()
4278 {
4279 if ($_SERVER['REQUEST_METHOD'] === 'GET') exit();
4280 $ret=array();
4281 $output_dir = FCPATH."upload/file";
4282 $folder_path = FCPATH."upload/file";
4283 if (!file_exists($folder_path)) {
4284 mkdir($folder_path, 0777, true);
4285 }
4286 if (isset($_FILES["myfile"])) {
4287 $error =$_FILES["myfile"]["error"];
4288 $post_fileName =$_FILES["myfile"]["name"];
4289 $post_fileName_array=explode(".", $post_fileName);
4290 $ext=array_pop($post_fileName_array);
4291 $filename=implode('.', $post_fileName_array);
4292 $filename="file_".$this->user_id."_".time().substr(uniqid(mt_rand(), true), 0, 6).".".$ext;
4293 $allow=".doc,.docx,.pdf,.txt,.ppt,.pptx,.xls,.xlsx";
4294 $allow=str_replace('.', '', $allow);
4295 $allow=explode(',', $allow);
4296 if(!in_array(strtolower($ext), $allow))
4297 {
4298 echo json_encode("Are you kidding???");
4299 exit();
4300 }
4301 move_uploaded_file($_FILES["myfile"]["tmp_name"], $output_dir.'/'.$filename);
4302 $ret[]= $filename;
4303 $this->session->set_userdata("go_live_video_file_path_name", $output_dir.'/'.$filename);
4304 $this->session->set_userdata("go_live_video_filename", $filename);
4305 echo json_encode($filename);
4306 }
4307 }
4308
4309 public function delete_general_file() // deletes the uploaded video to upload another one
4310 {
4311 if(!$_POST) exit();
4312 $output_dir = FCPATH."upload/file/";
4313 if(isset($_POST["op"]) && $_POST["op"] == "delete" && isset($_POST['name']))
4314 {
4315 $fileName =$_POST['name'];
4316 $fileName=str_replace("..",".",$fileName); //required. if somebody is trying parent folder files
4317 $filePath = $output_dir. $fileName;
4318 if (file_exists($filePath))
4319 {
4320 unlink($filePath);
4321 }
4322 }
4323 }
4324 //===========================ENABLE DISABLE STARTED Button====================
4325 public function enable_disable_started_button()
4326 {
4327 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4328 exit();
4329 if(!$_POST) exit();
4330 $page_id=$this->input->post('page_id');
4331 $enable_disable=$this->input->post('enable_disable');
4332 $this->load->library("messenger_bot_login");
4333 $page_data=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_id)));
4334 $page_access_token=isset($page_data[0]["page_access_token"]) ? $page_data[0]["page_access_token"] : "";
4335 if($enable_disable=='enable')
4336 {
4337 $response=$this->messenger_bot_login->add_get_started_button($page_access_token);
4338 if(!isset($response['error']))
4339 $this->basic->update_data("messenger_bot_page_info",array("id"=>$page_id),array("started_button_enabled"=>"1"));
4340 //$response=array('success'=>1,'status'=>'Disable your started Button');
4341 }
4342 else
4343 {
4344 $response=$this->messenger_bot_login->delete_get_started_button($page_access_token);
4345 if(!isset($response['error']))
4346 $this->basic->update_data("messenger_bot_page_info",array("id"=>$page_id),array("started_button_enabled"=>"0"));
4347
4348 //$response=array('success'=>1,'status'=>'Enable your started Button');
4349 }
4350 echo json_encode($response);
4351 }
4352 public function enable_disable_mark_seen()
4353 {
4354 if(!$_POST) exit();
4355 $table_id=$this->input->post('table_id');
4356 $enable_disable=$this->input->post('enable_disable');
4357 $this->basic->update_data('messenger_bot_page_info',array('id'=>$table_id),array('enable_mark_seen'=>$enable_disable));
4358 echo "success";
4359 }
4360 public function typing_on_settings()
4361 {
4362 if(!$_POST) exit();
4363 $table_id=$this->input->post('table_id');
4364 $reply_delay_time=$this->input->post('reply_delay_time');
4365 $enbale_type_on=$this->input->post('enbale_type_on');
4366 if($enbale_type_on=="0") $reply_delay_time=0;
4367 $this->basic->update_data('messenger_bot_page_info',array('id'=>$table_id),array('enbale_type_on'=>$enbale_type_on,'reply_delay_time'=>$reply_delay_time));
4368 }
4369
4370 public function email_list_display()
4371 {
4372 if(empty($_POST['table_id'])) {
4373 die();
4374 }
4375 $table_id = $this->input->post('table_id');
4376 $page_info = $this->basic->get_data('messenger_bot_page_info',array('where'=>array('id'=>$table_id)),array('page_id'));
4377 $email_list_info = $this->basic->get_data('messenger_bot_quick_reply_email',['where'=>['user_id'=>$this->user_id,'fb_page_id'=>$page_info[0]['page_id']]]);
4378
4379 $email_dlink=base_url("messenger_bot/email_list_download/".$table_id);
4380 $email_link=base_url("messenger_bot/edit_quick_email_reply/".$table_id.'/'.$page_info[0]['page_id']);
4381 $phone_link=base_url("messenger_bot/edit_quick_phone_reply/".$table_id.'/'.$page_info[0]['page_id']);
4382 $location_link=base_url("messenger_bot/edit_quick_location_reply/".$table_id.'/'.$page_info[0]['page_id']);
4383 $str='
4384 <div class="text-center" style="margin-top: -20px !important;">
4385 <a class="btn-sm btn btn-info" target="BLANK" href="'.$email_dlink.'"><i class="fa fa-cloud-download"></i> '.$this->lang->line("Download email & phone list").'</a><br><br>
4386 <a class="btn-sm btn btn-primary" target="_BLANK" href="'.$email_link.'"><i class="fa fa-envelope"></i> '.$this->lang->line("Set Email Subscription Reply").'</a>
4387 <a class="btn-sm btn btn-info" target="_BLANK" href="'.$phone_link.'"><i class="fa fa-phone"></i> '.$this->lang->line("Set Phone Subscription Reply").'</a>
4388 <a class="btn-sm btn btn-primary" target="_BLANK" href="'.$location_link.'"><i class="fa fa-map"></i> '.$this->lang->line("Set Location Subscription Reply").'</a>
4389 </div><br>';
4390
4391 if(!empty($email_list_info))
4392 {
4393 $str.= '
4394 <script>
4395 $j(document).ready(function() {
4396 $("#email_list_table").DataTable();
4397 });
4398 </script>
4399 <table id="email_list_table">
4400 <thead>
4401 <tr>
4402 <th>'.$this->lang->line("First Name").'</th>
4403 <th>'.$this->lang->line("Last Name").'</th>
4404 <th>'.$this->lang->line("Email").'</th>
4405 <th>'.$this->lang->line("Phone Number").'</th>
4406 <th>'.$this->lang->line("Location (latitude,longitude)").'</th>
4407 <th>'.$this->lang->line("Email Upate").'</th>
4408 <th>'.$this->lang->line("Phone Number Update").'</th>
4409 </tr>
4410 </thead>
4411 <tbody>';
4412
4413
4414 foreach($email_list_info as $value)
4415 {
4416 $email_update_time=($value['last_update_time']!="0000-00-00 00:00:00")?date("Y-m-d H:i",strtotime($value['last_update_time'])):"0000-00-00 00:00";
4417 $phone_number_update_time=($value['phone_number_last_update']!="0000-00-00 00:00:00")?date("Y-m-d H:i",strtotime($value['phone_number_last_update'])):"0000-00-00 00:00";
4418
4419 $str .= '<tr>
4420 <td>'.$value['fb_user_first_name'].'</td>
4421 <td>'.$value['fb_user_last_name'].'</td>
4422 <td>'.$value['email'].'</td>
4423 <td>'.$value['phone_number'].'</td>
4424 <td><a href="'.$value['location_map_url'].'" target="_BLANK">'.$value['user_location'].'</a></td>
4425 <td>'.$email_update_time.'</td>
4426 <td>'.$phone_number_update_time.'</td>
4427 </tr>';
4428 }
4429 $str .= '</tbody>
4430 </table>';
4431 }
4432 else
4433 {
4434 $str.= "<div class='alert alert-danger text-center'>{$this->lang->line("No data to show")}</div>";
4435 }
4436 echo $str;
4437 }
4438 public function email_list_download($table_id)
4439 {
4440 $page_info = $this->basic->get_data('messenger_bot_page_info',array('where'=>array('id'=>$table_id,'user_id'=>$this->user_id)),array('page_id','page_name'));
4441 $email_list_info = $this->basic->get_data('messenger_bot_quick_reply_email',['where'=>['user_id'=>$this->user_id,'fb_page_id'=>$page_info[0]['page_id']]]);
4442 if(empty($email_list_info))
4443 {
4444 $str = "<div class='alert alert-danger text-center'>".$this->lang->line("No data to download")."</div>";
4445 }
4446 else
4447 {
4448 $filename="download/email_download_{$this->user_id}.csv";
4449 $f = fopen('php://memory', 'w');
4450
4451 // fprintf($filename, chr(0xEF).chr(0xBB).chr(0xBF));
4452 /**Write header in csv file***/
4453 $write_data[]="First Name";
4454 $write_data[]="Last Name";
4455 $write_data[]="Email";
4456 $write_data[]="Phone Number";
4457 $write_data[]="Page ID";
4458 $write_data[]="Paage Name";
4459 fputcsv($f,$write_data, ",");
4460
4461 foreach($email_list_info as $value)
4462 {
4463 $write_data=array();
4464 $write_data[]=$value['fb_user_first_name'];
4465 $write_data[]=$value['fb_user_last_name'];
4466 $write_data[]=$value['email'];
4467 $write_data[]=$value['phone_number'];
4468 $write_data[]=$page_info[0]['page_id'];
4469 $write_data[]=$page_info[0]['page_name'];
4470 fputcsv($f,$write_data, ",");
4471 }
4472 // reset the file pointer to the start of the file
4473 fseek($f, 0);
4474 // tell the browser it's going to be a csv file
4475 header('Content-Type: application/csv');
4476 // tell the browser we want to save it instead of displaying it
4477 header('Content-Disposition: attachment; filename="'.$filename.'";');
4478 // make php send the generated csv lines to the browser
4479 fpassthru($f);
4480 }
4481 }
4482
4483 //=============================ENABLE DISBALE BOT==============================
4484 public function enable_disable_bot()
4485 {
4486 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4487 exit();
4488 if(!$_POST) exit();
4489
4490 $user_id = $this->user_id;
4491 $page_id=$this->input->post('page_id');
4492 $restart=$this->input->post('restart');
4493 $enable_disable=$this->input->post('enable_disable');
4494 $this->load->library("messenger_bot_login");
4495
4496 $page_data=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_id)));
4497 $fb_page_id=isset($page_data[0]["page_id"]) ? $page_data[0]["page_id"] : "";
4498 $page_access_token=isset($page_data[0]["page_access_token"]) ? $page_data[0]["page_access_token"] : "";
4499 $persistent_enabled=isset($page_data[0]["persistent_enabled"]) ? $page_data[0]["persistent_enabled"] : "0";
4500 $fb_user_id = $page_data[0]["messenger_bot_user_info_id"];
4501 $fb_user_info = $this->basic->get_data('messenger_bot_user_info',array('where'=>array('id'=>$fb_user_id)));
4502 $this->messenger_bot_login->app_initialize($fb_user_info[0]['messenger_bot_config_id']);
4503 if($enable_disable=='enable')
4504 {
4505 $already_enabled = $this->basic->get_data('messenger_bot_page_info',array('where'=>array('page_id'=>$fb_page_id,'bot_enabled !='=>'0')));
4506 if(!empty($already_enabled))
4507 {
4508 if($already_enabled[0]['user_id'] != $this->user_id || $already_enabled[0]['messenger_bot_user_info_id'] != $fb_user_id )
4509 {
4510 echo json_encode(array('success'=>0,'error'=>$this->lang->line("This page is already enabled by other Admin.")));
4511 exit();
4512 }
4513 }
4514 //************************************************//
4515 if($restart != '1')
4516 {
4517 $status=$this->_check_usage($module_id=200,$request=1);
4518 if($status=="2")
4519 {
4520 echo json_encode(array('success'=>0,'error'=>$this->lang->line("Module limit is over.")));
4521 exit();
4522 }
4523 else if($status=="3")
4524 {
4525 echo json_encode(array('success'=>0,'error'=>$this->lang->line("Module limit is over.")));
4526 exit();
4527 }
4528 }
4529 //************************************************//
4530
4531 $response=$this->messenger_bot_login->enable_bot($fb_page_id,$page_access_token);
4532 $output = $response;
4533 if($output['error'] == '')
4534 {
4535 $this->basic->update_data("messenger_bot_page_info",array("id"=>$page_id),array("bot_enabled"=>"1"));
4536 if($restart != '1')
4537 $this->_insert_usage_log($module_id=200,$request=1);
4538 }
4539 echo json_encode($response);
4540 }
4541 else
4542 {
4543 $updateData=array("bot_enabled"=>"2");
4544 if($persistent_enabled=='1')
4545 {
4546 $updateData['persistent_enabled']='0';
4547 $updateData['started_button_enabled']='0';
4548 $this->messenger_bot_login->delete_persistent_menu($page_access_token); // delete persistent menu
4549 $this->messenger_bot_login->delete_get_started_button($page_access_token); // delete get started button
4550 $this->basic->delete_data("messenger_bot_persistent_menu",array("page_id"=>$page_id,"user_id"=>$this->user_id));
4551 $this->_delete_usage_log($module_id=197,$request=1);
4552 }
4553 $response=$this->messenger_bot_login->disable_bot($fb_page_id,$page_access_token);
4554 $output = $response;
4555 if($output['error'] == '')
4556 {
4557 $this->basic->update_data("messenger_bot_page_info",array("id"=>$page_id),$updateData);
4558 $this->_delete_usage_log($module_id=200,$request=1);
4559 }
4560 echo json_encode($response);
4561 }
4562 }
4563 //=============================ENABLE DISBALE BOT==============================
4564
4565 public function delete_full_bot()
4566 {
4567 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4568 exit();
4569 if(!$_POST) exit();
4570
4571 $user_id = $this->user_id;
4572 $page_id=$this->input->post('page_id');
4573 $already_disabled=$this->input->post('already_disabled');
4574 $this->load->library("messenger_bot_login");
4575
4576 $page_data=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_id)));
4577 $fb_page_id=isset($page_data[0]["page_id"]) ? $page_data[0]["page_id"] : "";
4578 $page_access_token=isset($page_data[0]["page_access_token"]) ? $page_data[0]["page_access_token"] : "";
4579 $persistent_enabled=isset($page_data[0]["persistent_enabled"]) ? $page_data[0]["persistent_enabled"] : "0";
4580 $fb_user_id = $page_data[0]["messenger_bot_user_info_id"];
4581 $fb_user_info = $this->basic->get_data('messenger_bot_user_info',array('where'=>array('id'=>$fb_user_id)));
4582 $this->messenger_bot_login->app_initialize($fb_user_info[0]['messenger_bot_config_id']);
4583
4584 $updateData=array("bot_enabled"=>"0");
4585 if($already_disabled == 'no')
4586 {
4587 if($persistent_enabled=='1')
4588 {
4589 $updateData['persistent_enabled']='0';
4590 $updateData['started_button_enabled']='0';
4591 $this->messenger_bot_login->delete_persistent_menu($page_access_token); // delete persistent menu
4592 $this->messenger_bot_login->delete_get_started_button($page_access_token); // delete get started button
4593 $this->basic->delete_data("messenger_bot_persistent_menu",array("page_id"=>$page_id,"user_id"=>$this->user_id));
4594 // $this->_delete_usage_log($module_id=197,$request=1);
4595 }
4596 $response=$this->messenger_bot_login->disable_bot($fb_page_id,$page_access_token);
4597 }
4598 $this->basic->update_data("messenger_bot_page_info",array("id"=>$page_id),$updateData);
4599
4600 $this->delete_bot_data($page_id,$fb_page_id);
4601
4602 echo json_encode(array('success'=>'successfully deleted.'));
4603
4604 }
4605
4606
4607 private function delete_bot_data($page_id,$fb_page_id)
4608 {
4609 if($this->db->table_exists('messenger_bot_engagement_checkbox'))
4610 {
4611 $get_checkbox=$this->basic->get_data("messenger_bot_engagement_checkbox",array("where"=>array("page_id"=>$page_id)));
4612 $checkbox_ids=array();
4613 foreach ($get_checkbox as $key => $value)
4614 {
4615 $checkbox_ids[]=$value['id'];
4616 }
4617
4618 $this->basic->delete_data("messenger_bot_engagement_checkbox",array("page_id"=>$page_id));
4619
4620 if(!empty($checkbox_ids))
4621 {
4622 $this->db->where_in('checkbox_plugin_id', $checkbox_ids);
4623 $this->db->delete('messenger_bot_engagement_checkbox_reply');
4624 }
4625 }
4626
4627 $del_list=array (
4628 0 =>
4629 array
4630 (
4631 'table_name' => 'messenger_bot',
4632 'where_field' => 'page_id',
4633 'value' =>$page_id,
4634 ),
4635 1 =>
4636 array (
4637 'table_name' => 'messenger_bot_persistent_menu',
4638 'where_field' => 'page_id',
4639 'value' =>$page_id,
4640 ),
4641 2 =>
4642 array (
4643 'table_name' => 'messenger_bot_postback',
4644 'where_field' => 'page_id',
4645 'value' =>$page_id,
4646 ),
4647 3 =>
4648 array (
4649 'table_name' => 'messenger_bot_quick_reply_email',
4650 'where_field' => 'fb_page_id',
4651 'value' => $fb_page_id,
4652 ),
4653 4 =>
4654 array (
4655 'table_name' => 'messenger_bot_reply_error_log',
4656 'where_field' => 'page_id',
4657 'value' =>$page_id,
4658 ),
4659 5 =>
4660 array (
4661 'table_name' => 'messenger_bot_subscriber',
4662 'where_field' => 'page_id',
4663 'value' =>$fb_page_id,
4664 ),
4665 7 =>
4666 array (
4667 'table_name' => 'fb_chat_plugin_2way',
4668 'where_field' => 'page_auto_id',
4669 'value' =>$page_id,
4670 'where_field2' => 'core_or_bot',
4671 'value2' =>'0',
4672 ),
4673 8 =>
4674 array (
4675 'table_name' => 'messenger_bot_domain_whitelist',
4676 'where_field' => 'page_id',
4677 'value' =>$page_id,
4678 ),
4679 9 =>
4680 array (
4681 'table_name' => 'messenger_bot_engagement_2way_chat_plugin',
4682 'where_field' => 'page_auto_id',
4683 'value' =>$page_id,
4684 ),
4685 10 =>
4686 array (
4687 'table_name' => 'messenger_bot_engagement_messenger_codes',
4688 'where_field' => 'page_id',
4689 'value' =>$page_id,
4690 ),
4691 11 =>
4692 array (
4693 'table_name' => 'messenger_bot_engagement_mme',
4694 'where_field' => 'page_id',
4695 'value' =>$page_id,
4696 ),
4697 12 =>
4698 array (
4699 'table_name' => 'messenger_bot_engagement_send_to_msg',
4700 'where_field' => 'page_id',
4701 'value' =>$page_id,
4702 ),
4703 13 =>
4704 array (
4705 'table_name' => 'messenger_bot_drip_campaign',
4706 'where_field' => 'page_id',
4707 'value' =>$page_id,
4708 ),
4709 14 =>
4710 array (
4711 'table_name' => 'messenger_bot_drip_report',
4712 'where_field' => 'page_id',
4713 'value' =>$page_id,
4714 ),
4715 15 =>
4716 array (
4717 'table_name' => 'messenger_bot_broadcast',
4718 'where_field' => 'page_id',
4719 'value' =>$page_id,
4720 ),
4721 16 =>
4722 array (
4723 'table_name' => 'messenger_bot_broadcast_contact_group',
4724 'where_field' => 'page_id',
4725 'value' =>$page_id,
4726 ),
4727 17 =>
4728 array (
4729 'table_name' => 'messenger_bot_broadcast_serial',
4730 'where_field' => 'page_id',
4731 'value' =>$page_id,
4732 ),
4733 18 =>
4734 array (
4735 'table_name' => 'messenger_bot_broadcast_serial_send',
4736 'where_field' => 'page_id',
4737 'value' =>$page_id,
4738 ),
4739 );
4740
4741 foreach ($del_list as $key => $value)
4742 {
4743 if($this->db->table_exists($value['table_name']))
4744 {
4745 $where=array($value['where_field']=>$value['value']);
4746 if(isset($value['where_field2'])) $where[$value['where_field2']]=$value['value2'];
4747 $this->basic->delete_data($value['table_name'],$where);
4748 }
4749 }
4750
4751 return true;
4752 }
4753
4754 //=============================DOMAIN WHITELIST================================
4755 public function domain_whitelist()
4756 {
4757 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4758 redirect('home/login_page', 'location');
4759 $table = "messenger_bot_page_info";
4760 $where_simple['messenger_bot_page_info.user_id'] = $this->user_id;
4761 $where_simple['messenger_bot_page_info.bot_enabled'] = '1';
4762 $where = array('where'=>$where_simple);
4763 $join = array('messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left");
4764 $page_info = $this->basic->get_data($table, $where, $select=array("messenger_bot_page_info.*","messenger_bot_user_info.name as account_name"),$join,'','','page_name asc');
4765 $pagelist=array();
4766 $i=0;
4767 foreach($page_info as $key => $value)
4768 {
4769 // $pagelist[$value["id"]]["account_name"]=$value['account_name'];
4770 // $pagelist[$value["id"]]["page_name"]=$value['page_name'];
4771 $pagelist[$value["messenger_bot_user_info_id"]]["account_name"]=$value['account_name'];
4772 $pagelist[$value["messenger_bot_user_info_id"]]["page_data"][$i]["page_name"]=$value['page_name'];
4773 $pagelist[$value["messenger_bot_user_info_id"]]["page_data"][$i]["page_id"]=$value['id'];
4774 $i++;
4775 }
4776 $data['page_title'] = $this->lang->line("Whitelisted Domains");
4777 $data['pagelist'] = $pagelist;
4778 $data['body'] = 'domain_list';
4779 $this->_viewcontroller($data);
4780 }
4781
4782 public function domain_whitelist_data()
4783 {
4784 // setting variables for pagination
4785 $page = isset($_POST['page']) ? intval($_POST['page']) : 100;
4786 $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 5;
4787 $sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'page_name';
4788 $order = isset($_POST['order']) ? strval($_POST['order']) : 'ASC';
4789 $order_by_str=$sort." ".$order;
4790
4791 // setting properties for search
4792 $search_domain = trim($this->input->post('search_domain', true));
4793 $search_page = $this->input->post('search_page', true);
4794 $is_searched = $this->input->post('is_searched', true);
4795
4796 if ($is_searched)
4797 {
4798 $this->session->set_userdata('messenger_bot_whitelist_domain',$search_domain);
4799 $this->session->set_userdata('messenger_bot_whitelist_page',$search_page);
4800 }
4801 $search_domain = $this->session->userdata('messenger_bot_whitelist_domain');
4802 $search_pasearch_domainge = $this->session->userdata('messenger_bot_whitelist_page');
4803 $where_simple=array();
4804 if ($search_domain!="")
4805 {
4806 $where_simple['domain like '] = "%".$search_domain."%";
4807 }
4808 if ($search_page!="")
4809 {
4810 $where_simple['page_name like '] = "%".$search_page."%";
4811 }
4812
4813 $where_simple['messenger_bot_domain_whitelist.user_id'] = $this->user_id;
4814 $where_simple['messenger_bot_page_info.user_id'] = $this->user_id;
4815 $where_simple['messenger_bot_page_info.deleted'] = '0';
4816 $where_simple['messenger_bot_page_info.bot_enabled'] = '1';
4817 $where = array('where'=>$where_simple);
4818 $offset = ($page-1)*$rows;
4819 $result = array();
4820 $table = "messenger_bot_domain_whitelist";
4821 $join = array
4822 (
4823 'messenger_bot_page_info'=>"messenger_bot_page_info.id=messenger_bot_domain_whitelist.page_id,left",
4824 'messenger_bot_user_info'=>"messenger_bot_user_info.id=messenger_bot_page_info.messenger_bot_user_info_id,left"
4825 );
4826 $group_by = "messenger_bot_domain_whitelist.page_id";
4827 $info = $this->basic->get_data($table, $where, $select=array("messenger_bot_domain_whitelist.*","messenger_bot_page_info.page_name", "messenger_bot_user_info.name as account_name","count(messenger_bot_domain_whitelist.id) as count"), $join, $limit=$rows, $start=$offset, $order_by=$order_by_str,$group_by);
4828 // echo $this->db->last_query();
4829 $total_rows_array = $this->basic->count_row($table, $where, $count="messenger_bot_domain_whitelist.id",$join,$group_by);
4830 $total_result = $total_rows_array[0]['total_rows'];
4831 echo convert_to_grid_data($info, $total_result);
4832 }
4833 public function domain_details()
4834 {
4835 if (empty($_POST['page_id']))
4836 {
4837 die();
4838 }
4839 $page_id = $this->input->post("page_id");
4840 $page_name = $this->input->post("page_name");
4841 $account_name = $this->input->post("account_name");
4842 $table_name = "messenger_bot_domain_whitelist";
4843 $where['where'] = array('user_id' => $this->user_id, 'page_id' => $page_id);
4844 $domain_data = $this->basic->get_data($table_name,$where);
4845 $html = '<script>
4846 $j(document).ready(function() {
4847 $("#domain_data_table").DataTable();
4848 });
4849 </script>';
4850 $html .= "<h3 class='text-center'>".$this->lang->line('page')." : ".$page_name." (".$account_name.")</h3>
4851 <table id='domain_data_table' class='table table-striped table-bordered nowrap' cellspacing='0' width='100%''>
4852 <thead>
4853 <tr>
4854 <th>".$this->lang->line("domain")."</th>
4855 <th>".$this->lang->line("whitlisted at")."</th>
4856 <th>".$this->lang->line("delete")."</th>
4857 </tr>
4858 </thead>
4859 <tbody>";
4860 foreach ($domain_data as $one_user)
4861 {
4862 $btn_id=$one_user['id'];
4863 $delete_btn= "<a class='btn btn-sm btn-danger delete_domain' id='domain-".$btn_id."' data-id='".$btn_id."'><i class='fa fa-remove'></i> ".$this->lang->line("delete")."</a>";
4864 $html .= "<tr>
4865 <td><a target='_BLANK' href='".$one_user['domain']."'>".$one_user['domain']."</a></td>
4866 <td>".date("jS M, y H:i:s",strtotime($one_user['created_at']))."</td>";
4867 $html .= "
4868 <td>".$delete_btn."</td>
4869 </tr>";
4870 }
4871
4872 $html .= "</tbody>
4873 </table>";
4874
4875 echo $html;
4876 }
4877 public function delete_domain()
4878 {
4879 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4880 exit();
4881
4882 if(!$_POST['domain_id']) exit();
4883 $domain_id=$this->input->post('domain_id');
4884 if($this->basic->delete_data('messenger_bot_domain_whitelist',array('id'=>$domain_id,'user_id'=>$this->user_id))) echo "1";
4885 else echo "0";
4886 }
4887 public function delete_bot()
4888 {
4889 if(!$_POST) exit();
4890 $id=$this->input->post("id");
4891 $bot_posback_ids = $this->basic->get_data('messenger_bot',array('where'=>array('id'=>$id)));
4892 $postback_id = array();
4893 if($bot_posback_ids[0]['keyword_type'] == 'post-back')
4894 {
4895 $postback_id = explode(',', $bot_posback_ids[0]['postback_id']);
4896 }
4897 $this->db->trans_start();
4898 $this->basic->delete_data("messenger_bot",array("id"=>$id,"user_id"=>$this->user_id));
4899
4900 if(!empty($postback_id))
4901 {
4902 $this->db->where_in("postback_id", $postback_id);
4903 $this->db->update('messenger_bot_postback', array('use_status' => '0'));
4904 }
4905 $this->db->trans_complete();
4906 if($this->db->trans_status() === false)
4907 echo '0';
4908 else
4909 echo '1';
4910 }
4911 public function add_domain()
4912 {
4913 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
4914 exit();
4915 if(!$_POST['page_id']) exit();
4916 $page_id=$this->input->post('page_id');
4917 $domain_name=$this->input->post('domain_name');
4918 $userdata=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_id)));
4919 $messenger_bot_user_info_id=isset($userdata[0]['messenger_bot_user_info_id']) ? $userdata[0]['messenger_bot_user_info_id'] : "";
4920 $page_access_token=isset($userdata[0]['page_access_token']) ? $userdata[0]['page_access_token'] : "";
4921 if(!$this->basic->is_exist('messenger_bot_domain_whitelist',array('page_id'=>$page_id,'domain'=>$domain_name)))
4922 {
4923 $this->basic->insert_data('messenger_bot_domain_whitelist',array('page_id'=>$page_id,'domain'=>$domain_name,"created_at"=>date("Y-m-d H:i:s"),"messenger_bot_user_info_id"=>$messenger_bot_user_info_id,"user_id"=>$this->user_id));
4924 $this->load->library("messenger_bot_login");
4925 $response=array();
4926 $response=$this->messenger_bot_login->domain_whitelist($page_access_token,$domain_name);
4927 }
4928 else $response=array('status'=>'1','result'=>$this->lang->line("Successfully updated whitelisted domains"));
4929 echo json_encode($response);
4930
4931 }
4932 //=============================DOMAIN WHITELIST================================
4933
4934
4935 //==============================ACCOUNT IMPORT================================
4936 public function account_import()
4937 {
4938 if($this->session->userdata('user_type') != 'Admin' && !in_array(199,$this->module_access))
4939 redirect('home/login_page', 'location');
4940 if($this->session->userdata("messenger_bot_user_info")==0 && $this->config->item("bot_backup_mode")==1)
4941 redirect('messenger_bot/facebook_config','refresh');
4942 $this->load->library("messenger_bot_login");
4943 $data['body'] = 'account_import';
4944 $data['page_title'] = $this->lang->line('Facebook Account Import');
4945 $redirect_url = base_url()."messenger_bot/refresh_login_callback";
4946 $fb_login_button = $this->messenger_bot_login->login_for_user_access_token($redirect_url);
4947 $data['fb_login_button'] = $fb_login_button;
4948 $where['where'] = array('user_id'=>$this->user_id);
4949 $existing_accounts = $this->basic->get_data('messenger_bot_user_info',$where);
4950 $show_import_account_box = 1;
4951 $data['show_import_account_box'] = 1;
4952 if(!empty($existing_accounts))
4953 {
4954 $i=0;
4955 foreach($existing_accounts as $value)
4956 {
4957 $existing_account_info[$i]['need_to_delete'] = $value['need_to_delete'];
4958 if($value['need_to_delete'] == '1')
4959 {
4960 $show_import_account_box = 0;
4961 $data['show_import_account_box'] = $show_import_account_box;
4962 }
4963 $existing_account_info[$i]['fb_id'] = $value['fb_id'];
4964 $existing_account_info[$i]['userinfo_table_id'] = $value['id'];
4965 $existing_account_info[$i]['name'] = $value['name'];
4966 $existing_account_info[$i]['email'] = $value['email'];
4967 $existing_account_info[$i]['user_access_token'] = $value['access_token'];
4968 $valid_or_invalid = $this->messenger_bot_login->access_token_validity_check_for_user($value['access_token']);
4969 if($valid_or_invalid)
4970 {
4971 $existing_account_info[$i]['validity'] = 'yes';
4972 }
4973 else
4974 {
4975 $existing_account_info[$i]['validity'] = 'no';
4976 }
4977
4978 $where = array();
4979 $where['where'] = array('messenger_bot_user_info_id'=>$value['id']);
4980 $page_count = $this->basic->get_data('messenger_bot_page_info',$where);
4981 $existing_account_info[$i]['page_list'] = $page_count;
4982 if(!empty($page_count))
4983 {
4984 $existing_account_info[$i]['total_pages'] = count($page_count);
4985 }
4986 else $existing_account_info[$i]['total_pages'] = 0;
4987 $i++;
4988 }
4989 $data['existing_accounts'] = $existing_account_info;
4990 }
4991 else $data['existing_accounts'] = '0';
4992
4993 $this->_viewcontroller($data);
4994 }
4995
4996 public function ajax_delete_account_action()
4997 {
4998 if($this->session->userdata('user_type') != 'Admin' && !in_array(199,$this->module_access))
4999 exit();
5000 if($this->session->userdata("messenger_bot_user_info")==0 && $this->config->item("bot_backup_mode")==1)
5001 exit();
5002 $table_id = $this->input->post("user_table_id");
5003 $this->db->trans_start();
5004 $this->basic->delete_data('messenger_bot_user_info',array('id'=>$table_id,"user_id"=>$this->user_id));
5005 $this->_delete_usage_log($module_id=199,$request=1); // messenger account import module
5006 $bot_page_list=$this->basic->get_data("messenger_bot_page_info",array("where"=>array('messenger_bot_user_info_id'=>$table_id))); // all pages of that account
5007 $page_id_array=array();
5008 $menu_page_id_array=array();
5009 $no_enabled_pages=0;
5010 $no_menu_enabled_pages=0;
5011 $this->load->library("messenger_bot_login");
5012 foreach($bot_page_list as $value)
5013 {
5014 array_push($page_id_array, $value['id']);
5015 if($value['bot_enabled']=='1')
5016 {
5017 $no_enabled_pages++;
5018 $fb_page_id=isset($value['page_id']) ? $value['page_id'] : "";
5019 $page_access_token=isset($value['page_access_token']) ? $value['page_access_token'] : "";
5020 if($value['persistent_enabled']=='1')
5021 {
5022 $no_menu_enabled_pages++;
5023 array_push($menu_page_id_array, $value['id']);
5024 $this->messenger_bot_login->delete_persistent_menu($page_access_token); // delete persistent menu
5025 $this->messenger_bot_login->delete_get_started_button($page_access_token); // delete get started button
5026 }
5027 $this->messenger_bot_login->disable_bot($fb_page_id,$page_access_token);
5028 }
5029 }
5030 if(!empty($page_id_array))
5031 {
5032 $this->db->where_in('page_id', $page_id_array);
5033 $this->db->delete("messenger_bot"); //delete all bot settings of pages of deleted account
5034 $this->db->where_in('page_id', $page_id_array);
5035 $this->db->delete("messenger_bot_postback"); //delete all bot payload/postback settings of pages of deleted account
5036 }
5037 if(!empty($menu_page_id_array))
5038 {
5039 $this->db->where_in('page_id', $menu_page_id_array);
5040 $this->db->delete("messenger_bot_persistent_menu"); //delete all persistent menu of pages of deleted account
5041 }
5042 if($no_enabled_pages>0)
5043 $this->_delete_usage_log($module_id=200,$request=$no_enabled_pages); // messenger bot module
5044 if($no_menu_enabled_pages>0)
5045 $this->_delete_usage_log($module_id=197,$request=$no_menu_enabled_pages); // persistent menu module
5046 $this->basic->delete_data('messenger_bot_page_info',array('messenger_bot_user_info_id'=>$table_id,"user_id"=>$this->user_id)); // delete all page of that account
5047 $this->basic->delete_data('messenger_bot_domain_whitelist',array('messenger_bot_user_info_id'=>$table_id,"user_id"=>$this->user_id)); // delete all whitlisted domain of that account
5048
5049 $this->db->where_in('page_id', $page_id_array);
5050 $this->db->delete("messenger_bot_postback"); //delete all bot payload/postback settings of pages of deleted account
5051 $this->db->trans_complete();
5052 if($this->db->trans_status() === false)
5053 {
5054 echo "<div class='alert alert-danger text-center'>'".$this->lang->line("something went wrong, please try again.")."'</div>";
5055 }
5056 else
5057 {
5058 echo "success";
5059 }
5060 }
5061
5062 public function send_user_roll_access()
5063 {
5064 if($this->session->userdata('user_type') != 'Admin' && !in_array(199,$this->module_access))
5065 exit();
5066 if($this->session->userdata("messenger_bot_user_info")==0 && $this->config->item("bot_backup_mode")==1)
5067 exit();
5068 $this->load->library("messenger_bot_login");
5069 if($_POST)
5070 {
5071 $fb_numeric_id= $this->input->post("fb_numeric_id");
5072 $database_id = $this->session->userdata('messenger_bot_login_database_id');
5073 $facebook_config=$this->basic->get_data("messenger_bot_config",array("where"=>array("id"=>$database_id)));
5074 if(isset($facebook_config[0]))
5075 {
5076 $app_id=$facebook_config[0]["api_id"];
5077 $app_secret=$facebook_config[0]["api_secret"];
5078 $user_access_token=$facebook_config[0]["user_access_token"];
5079 }
5080 $response=$this->messenger_bot_login->send_user_roll_access($app_id,$fb_numeric_id,$user_access_token);
5081
5082 if(isset($response['success']) && $response['success'] == 1)
5083 echo "<br/>
5084 <div class='well'><h4 class='text-center red'>'".$this->lang->line("please log in & check your facebook profile page notifications, to accept our invitation")."'</h4></div>
5085 <div class='alert alert-danger text-center'>
5086 <h4 style='line-height:25px'>'".$this->lang->line("a request has been sent to your facebook account. please login to your facebook account, confirm the app request and click below button.")."'<br/><br/>'".$this->lang->line("do not click this until confirmed")."'</h4>
5087 <br/>
5088 <button class='btn btn-default btn-lg' id='fb_confirm'><b>'".$this->lang->line("i've confirmed app request in facebook")."'</b></button>
5089 </div>";
5090 else if (isset($response["error"]["error_user_msg"]))
5091 echo "<br/><div class='alert alert-danger text-center'>
5092 <p><i class='fa fa-remove'></i> ".$response["error"]["error_user_msg"]."</p>
5093 </div>";
5094 else
5095 {
5096 echo "<br/><div class='alert alert-danger text-center'>
5097 <p><i class='fa fa-remove'></i> ".$this->lang->line("something went wrong, please try with correct information.")."<br>";
5098 if(isset($response['error']['message']))
5099 echo "<br>".$response['error']['message'];
5100 if(isset($response['error']['message']) && $response['error']['message']=='(#100) 372747716260046 does not resolve to a valid user ID');
5101 echo "<br> Please make sure this is the numeric ID of your profile not any of your page.";
5102 echo "</p>
5103 </div>";
5104 }
5105 }
5106 }
5107
5108 public function ajax_get_login_button()
5109 {
5110 if($this->session->userdata('user_type') != 'Admin' && !in_array(199,$this->module_access))
5111 exit();
5112 if($this->session->userdata("messenger_bot_user_info")==0 && $this->config->item("bot_backup_mode")==1)
5113 exit();
5114 $this->load->library("messenger_bot_login");
5115 $redirect_url = base_url()."messenger_bot/user_login_callback";
5116 $fb_login_button = $this->messenger_bot_login->login_for_user_access_token($redirect_url);
5117 if(isset($fb_login_button))
5118 {
5119 echo '<br/><div class="alert alert-danger text-center">
5120 <h3 class="">'.$fb_login_button.'<h3>
5121 </div>';
5122 }
5123 else
5124 echo "<br/><div class='alert alert-danger text-center'><p>".$this->lang->line("something went wrong, please try again with proper information")."</p></div>";
5125 }
5126
5127 public function user_login_callback()
5128 {
5129 $id = $this->session->userdata('messenger_bot_login_database_id');
5130 $this->load->library("messenger_bot_login");
5131 $redirect_url = base_url()."messenger_bot/user_login_callback";
5132 $user_info = $this->messenger_bot_login->login_callback($redirect_url);
5133
5134 if( isset($user_info['status']) && $user_info['status'] == '0')
5135 {
5136 $data['error'] = 1;
5137 $data['message'] = "'".$this->lang->line("something went wrong,please")."' <a href='".base_url("messenger_bot/account_import")."'>'".$this->lang->line("try again")."'</a>";
5138 $data['body'] = "user_login";
5139 $this->_viewcontroller($data);
5140 }
5141 else
5142 {
5143 //************************************************//
5144 $status=$this->_check_usage($module_id=199,$request=1);
5145 if($status=="2")
5146 {
5147 $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over."));
5148 redirect('messenger_bot/account_import','location');
5149 exit();
5150 }
5151 else if($status=="3")
5152 {
5153 $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over."));
5154 redirect('messenger_bot/account_import','location');
5155 exit();
5156 }
5157 //************************************************//
5158 $access_token=$user_info['access_token_set'];
5159 //checking permission given by the users
5160 $permission = $this->messenger_bot_login->debug_access_token($access_token);
5161 $given_permission = array();
5162 if(isset($permission['data']['scopes']))
5163 {
5164 $permission_checking = array();
5165 $needed_permission = array('manage_pages','publish_pages','pages_messaging');
5166 $given_permission = $permission['data']['scopes'];
5167 $permission_checking = array_intersect($needed_permission,$given_permission);
5168 if(empty($permission_checking))
5169 {
5170 // $documentation_link = base_url('documentation/#!/sm_import_account');
5171 $text = "'".$this->lang->line("sorry, you didn't confirm the request yet. please login to your fb account and accept the request. for more");
5172 $this->session->set_userdata('limit_cross', $text);
5173 redirect('messenger_bot/account_import','location');
5174 exit();
5175 }
5176 }
5177
5178 if(isset($access_token))
5179 {
5180 $data = array(
5181 'user_id' => $this->user_id,
5182 'messenger_bot_config_id' => $id,
5183 'access_token' => $access_token,
5184 'name' => $user_info['name'],
5185 'email' => isset($user_info['email']) ? $user_info['email'] : "",
5186 'fb_id' => $user_info['id'],
5187 'add_date' => date('Y-m-d'),
5188 'deleted' => '0'
5189 );
5190 $where=array();
5191 $where['where'] = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']);
5192 $exist_or_not = array();
5193 $exist_or_not = $this->basic->get_data('messenger_bot_user_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1);
5194 if(empty($exist_or_not))
5195 {
5196 $this->basic->insert_data('messenger_bot_user_info',$data);
5197 $facebook_table_id = $this->db->insert_id();
5198 }
5199 else
5200 {
5201 $facebook_table_id = $exist_or_not[0]['id'];
5202 $where = array('user_id'=>$this->user_id,'id'=>$facebook_table_id);
5203 $this->basic->update_data('messenger_bot_user_info',$where,$data);
5204 }
5205 $this->session->set_userdata("messenger_bot_user_info",$facebook_table_id);
5206 $page_list = array();
5207 $page_list = $this->messenger_bot_login->get_page_list($access_token);
5208 if(!empty($page_list))
5209 {
5210 foreach($page_list as $page)
5211 {
5212 $user_id = $this->user_id;
5213 $page_id = $page['id'];
5214 $page_cover = '';
5215 if(isset($page['cover']['source'])) $page_cover = $page['cover']['source'];
5216 $page_profile = '';
5217 if(isset($page['picture']['url'])) $page_profile = $page['picture']['url'];
5218 $page_name = '';
5219 if(isset($page['name'])) $page_name = $page['name'];
5220 $page_access_token = '';
5221 if(isset($page['access_token'])) $page_access_token = $page['access_token'];
5222 $page_email = '';
5223 if(isset($page['emails'][0])) $page_email = $page['emails'][0];
5224 $page_username = '';
5225 if(isset($page['username'])) $page_username = $page['username'];
5226 $data = array(
5227 'user_id' => $user_id,
5228 'messenger_bot_user_info_id' => $facebook_table_id,
5229 'page_id' => $page_id,
5230 'page_cover' => $page_cover,
5231 'page_profile' => $page_profile,
5232 'page_name' => $page_name,
5233 'page_access_token' => $page_access_token,
5234 'page_email' => $page_email,
5235 'username' => $page_username,
5236 'add_date' => date('Y-m-d'),
5237 'deleted' => '0'
5238 );
5239 $where=array();
5240 $where['where'] = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5241 $exist_or_not = array();
5242 $exist_or_not = $this->basic->get_data('messenger_bot_page_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1);
5243 if(empty($exist_or_not))
5244 {
5245 $this->basic->insert_data('messenger_bot_page_info',$data);
5246 }
5247 else
5248 {
5249 $where = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5250 $this->basic->update_data('messenger_bot_page_info',$where,$data);
5251 }
5252 }
5253 }
5254
5255 //insert data to useges log table
5256 $this->_insert_usage_log($module_id=199,$request=1);
5257 $this->session->set_userdata('success_message', 'success');
5258 redirect('messenger_bot/account_import','location');
5259 exit();
5260 }
5261 else
5262 {
5263 $data['error'] = 1;
5264 $data['message'] = "'".$this->lang->line("something went wrong,please")."' <a href='".base_url("messenger_bot/account_import")."'>'".$this->lang->line("try again")."'</a>";
5265 $data['body'] = "user_login";
5266 $this->_viewcontroller($data);
5267 }
5268 }
5269 }
5270
5271 public function refresh_login_callback()
5272 {
5273 $id = $this->session->userdata('messenger_bot_login_database_id');
5274 $this->load->library("messenger_bot_login");
5275 $redirect_url = base_url()."messenger_bot/refresh_login_callback";
5276 $user_info = array();
5277 $user_info = $this->messenger_bot_login->login_callback($redirect_url);
5278
5279 if( isset($user_info['status']) && $user_info['status'] == '0')
5280 {
5281 $data['error'] = 1;
5282 $data['message'] = "'".$this->lang->line("something went wrong,please")."' <a href='".base_url("messenger_bot/account_import")."'>'".$this->lang->line("try again")."'</a>";
5283 $data['body'] = "user_login";
5284 $this->_viewcontroller($data);
5285 }
5286 else
5287 {
5288 $access_token=$user_info['access_token_set'];
5289 //checking permission given by the users
5290 $permission = $this->messenger_bot_login->debug_access_token($access_token);
5291 $given_permission = array();
5292 if(isset($permission['data']['scopes']))
5293 {
5294 $permission_checking = array();
5295 $needed_permission = array('manage_pages','publish_pages','pages_messaging');
5296 $given_permission = $permission['data']['scopes'];
5297 $permission_checking = array_intersect($needed_permission,$given_permission);
5298 if(empty($permission_checking))
5299 {
5300 // $documentation_link = base_url('documentation/#!/sm_import_account');
5301 $text = "'".$this->lang->line("sorry, you didn't confirm the request yet. please login to your fb account and accept the request. for more");
5302 $this->session->set_userdata('limit_cross', $text);
5303 redirect('messenger_bot/account_import','location');
5304 exit();
5305 }
5306 }
5307
5308 if(isset($access_token))
5309 {
5310 $data = array(
5311 'user_id' => $this->user_id,
5312 'messenger_bot_config_id' => $id,
5313 'access_token' => $access_token,
5314 'name' => $user_info['name'],
5315 'email' => isset($user_info['email']) ? $user_info['email'] : "",
5316 'fb_id' => $user_info['id'],
5317 'add_date' => date('Y-m-d'),
5318 'deleted' => '0'
5319 );
5320 $where=array();
5321 $where['where'] = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']);
5322 $exist_or_not = array();
5323 $exist_or_not = $this->basic->get_data('messenger_bot_user_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1);
5324 if(empty($exist_or_not))
5325 {
5326 //************************************************//
5327 $status=$this->_check_usage($module_id=199,$request=1);
5328 if($status=="2")
5329 {
5330 $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over."));
5331 redirect('messenger_bot/account_import','location');
5332 exit();
5333 }
5334 else if($status=="3")
5335 {
5336 $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over."));
5337 redirect('messenger_bot/account_import','location');
5338 exit();
5339 }
5340 //************************************************//
5341 $this->basic->insert_data('messenger_bot_user_info',$data);
5342 $facebook_table_id = $this->db->insert_id();
5343 //insert data to useges log table
5344 $this->_insert_usage_log($module_id=199,$request=1);
5345 }
5346 else
5347 {
5348 $facebook_table_id = $exist_or_not[0]['id'];
5349 $where = array('user_id'=>$this->user_id,'id'=>$facebook_table_id);
5350 $this->basic->update_data('messenger_bot_user_info',$where,$data);
5351 }
5352 $page_list = array();
5353 $page_list = $this->messenger_bot_login->get_page_list($access_token);
5354 if(!empty($page_list))
5355 {
5356 foreach($page_list as $page)
5357 {
5358 $user_id = $this->user_id;
5359 $page_id = $page['id'];
5360 $page_cover = '';
5361 if(isset($page['cover']['source'])) $page_cover = $page['cover']['source'];
5362 $page_profile = '';
5363 if(isset($page['picture']['url'])) $page_profile = $page['picture']['url'];
5364 $page_name = '';
5365 if(isset($page['name'])) $page_name = $page['name'];
5366 $page_access_token = '';
5367 if(isset($page['access_token'])) $page_access_token = $page['access_token'];
5368 $page_email = '';
5369 if(isset($page['emails'][0])) $page_email = $page['emails'][0];
5370 $page_username = '';
5371 if(isset($page['username'])) $page_username = $page['username'];
5372 $data = array(
5373 'user_id' => $user_id,
5374 'messenger_bot_user_info_id' => $facebook_table_id,
5375 'page_id' => $page_id,
5376 'page_cover' => $page_cover,
5377 'page_profile' => $page_profile,
5378 'page_name' => $page_name,
5379 'username' => $page_username,
5380 'page_access_token' => $page_access_token,
5381 'page_email' => $page_email,
5382 'add_date' => date('Y-m-d'),
5383 'deleted' => '0'
5384 );
5385 $where=array();
5386 $where['where'] = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5387 $exist_or_not = array();
5388 $exist_or_not = $this->basic->get_data('messenger_bot_page_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1);
5389 if(empty($exist_or_not))
5390 {
5391 $this->basic->insert_data('messenger_bot_page_info',$data);
5392 }
5393 else
5394 {
5395 $where = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5396 $this->basic->update_data('messenger_bot_page_info',$where,$data);
5397 }
5398 }
5399 }
5400 $this->session->set_userdata('success_message', 'success');
5401 redirect('messenger_bot/account_import','location');
5402 exit();
5403 }
5404 else
5405 {
5406 $data['error'] = 1;
5407 $data['message'] = "'".$this->lang->line("something went wrong,please")."' <a href='".base_url("messenger_bot/account_import")."'>'".$this->lang->line("try again")."'</a>";
5408 $data['body'] = "user_login";
5409 $this->_viewcontroller($data);
5410 }
5411 }
5412 }
5413 //==============================ACCOUNT IMPORT================================
5414
5415
5416
5417 // ======================FACEBOOK APP CONFIG==================================
5418 public function facebook_config()
5419 {
5420 if($this->session->userdata('user_type') != 'Admin' && !in_array(200,$this->module_access))
5421 redirect('home/login_page', 'location');
5422
5423 if ($this->session->userdata('user_type')== "Member" && $this->config->item("bot_backup_mode")==0) {
5424 redirect('home/login', 'location');
5425 }
5426 $this->load->database();
5427 $this->load->library('grocery_CRUD');
5428 $crud = new grocery_CRUD();
5429 $crud->set_theme('flexigrid');
5430 $crud->set_table('messenger_bot_config');
5431 $crud->order_by('app_name');
5432 $crud->set_subject($this->lang->line("facebook API settings"));
5433 $crud->required_fields('api_id', 'api_secret','status');
5434 $crud->columns('app_name','api_id', 'api_secret','status','validity');
5435 $crud->fields('app_name','api_id', 'api_secret','status');
5436 $crud->where('user_id',$this->session->userdata('user_id'));
5437 $crud->callback_field('status', array($this, 'status_field_crud'));
5438 $crud->callback_column('status', array($this, 'status_display_crud'));
5439 $crud->callback_column('validity', array($this, 'validity_display_crud'));
5440 $crud->callback_after_insert(array($this, 'make_up_fb_setting'));
5441 $crud->unset_export();
5442 $crud->unset_print();
5443 $crud->unset_read();
5444 $crud->unset_delete();
5445 $total_rows_array = $this->basic->count_row("messenger_bot_config",array("where"=>array('user_id'=>$this->session->userdata('user_id'))), $count="id");
5446 $total_result = $total_rows_array[0]['total_rows'];
5447 if($this->session->userdata("user_type")=="Member" && $total_result>0)
5448 $crud->unset_add();
5449 $crud->display_as('validity', $this->lang->line('Token Validity'));
5450 $crud->display_as('app_name', $this->lang->line('facebook app Name'));
5451 $crud->display_as('api_id', $this->lang->line('facebook App ID'));
5452 $crud->display_as('api_secret', $this->lang->line('facebook App secret'));
5453 $crud->display_as('status', $this->lang->line('status'));
5454
5455 $images_url = base_url("plugins/grocery_crud/themes/flexigrid/css/images/login.png");
5456 $crud->add_action('Login', $images_url, 'messenger_bot/fb_login');
5457 $output = $crud->render();
5458 $data['output'] = $output;
5459 $data['crud'] = 1;
5460 $data['page_title'] = $this->lang->line("facebook API settings");
5461 $this->_viewcontroller($data);
5462 }
5463 public function make_up_fb_setting($post_array, $primary_key)
5464 {
5465 if($this->session->userdata("user_type")=="Admin") $use_by = "everyone";
5466 else $use_by = "only_me";
5467 $this->basic->update_data("messenger_bot_config",array('id'=> $primary_key),array("user_id"=>$this->session->userdata("user_id"),'use_by'=>$use_by));
5468 return true;
5469 }
5470
5471 public function fb_login($id)
5472 {
5473 $this->session->set_userdata("messenger_bot_login_database_id",$id);
5474 $this->load->library("messenger_bot_login");
5475
5476 $redirect_url = base_url()."messenger_bot/login_callback";
5477 $data['fb_login_button'] = $this->messenger_bot_login->login_for_user_access_token($redirect_url);
5478 $data['body'] = 'admin_login';
5479 $data['page_title'] = $this->lang->line("admin login");
5480 $data['expired_or_not'] = $this->messenger_bot_login->access_token_validity_check();
5481 $this->_viewcontroller($data);
5482 }
5483
5484 public function status_field_crud($value, $row)
5485 {
5486 if ($value == '') {
5487 $value = 1;
5488 }
5489 return form_dropdown('status', array(0 => $this->lang->line('inactive'), 1 => $this->lang->line('active')), $value, 'class="form-control" id="field-status"');
5490 }
5491 public function status_display_crud($value, $row)
5492 {
5493 if ($value == 1) {
5494 return "<span class='label label-success' title='Access Token : ".$row->user_access_token."'>".$this->lang->line('active')."</sapn>";
5495 } else {
5496 return "<span class='label label-warning' title='Access Token : ".$row->user_access_token."'>".$this->lang->line('inactive')."</sapn>";
5497 }
5498 }
5499 function validity_display_crud($value, $row)
5500 {
5501 $input_token = $row->user_access_token;
5502 if($input_token=="")
5503 return "<span class='label label-warning' style='font-weight:normal'>Invalid</sapn>";
5504 $this->load->library("messenger_bot_login");
5505 $url="https://graph.facebook.com/debug_token?input_token={$input_token}&access_token={$input_token}";
5506 $result= $this->messenger_bot_login->run_curl_for_fb($url);
5507 $result = json_decode($result,true);
5508 if(isset($result["data"]["is_valid"]) && $result["data"]["is_valid"])
5509 {
5510 return "<span class='label label-success' style='font-weight:normal'>".$this->lang->line('Valid')."</sapn>";
5511 }
5512 else
5513 {
5514 return "<span class='label label-warning' style='font-weight:normal'>".$this->lang->line('Expired')."</sapn>";
5515 }
5516 }
5517 public function login_callback()
5518 {
5519
5520 if ($this->session->userdata('logged_in')!= 1) exit();
5521 $id=$this->session->userdata("messenger_bot_login_database_id");
5522 $redirect_url = base_url()."messenger_bot/login_callback/";
5523 $this->load->library('messenger_bot_login');
5524 $user_info = $this->messenger_bot_login->login_callback($redirect_url);
5525 if(isset($user_info['status']) && $user_info['status'] == '0')
5526 {
5527 $data['error'] = 1;
5528 $data['message'] = "<a href='".base_url("messenger_bot/facebook_config/")."'>".$this->lang->line("something went wrong, please try again.")."</a>";
5529 $data['body'] = "admin_login";
5530 $this->_viewcontroller($data);
5531 }
5532 else
5533 {
5534 $access_token=$user_info['access_token_set'];
5535 $where = array('id'=>$id);
5536 $update_data = array('user_access_token'=>$access_token);
5537 if($this->basic->update_data('messenger_bot_config',$where,$update_data))
5538 {
5539 $data = array(
5540 'user_id' => $this->user_id,
5541 'messenger_bot_config_id' => $id,
5542 'access_token' => $access_token,
5543 'name' => $user_info['name'],
5544 'email' => isset($user_info['email']) ? $user_info['email'] : "",
5545 'fb_id' => $user_info['id'],
5546 'add_date' => date('Y-m-d')
5547 );
5548 $where=array();
5549 $where['where'] = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']);
5550 $exist_or_not = $this->basic->get_data('messenger_bot_user_info',$where);
5551 if(empty($exist_or_not))
5552 {
5553 $this->basic->insert_data('messenger_bot_user_info',$data);
5554 $facebook_table_id = $this->db->insert_id();
5555 }
5556 else
5557 {
5558 $facebook_table_id = $exist_or_not[0]['id'];
5559 $where = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']);
5560 $this->basic->update_data('messenger_bot_user_info',$where,$data);
5561 }
5562 $this->session->set_userdata("messenger_bot_user_info",$facebook_table_id);
5563 $page_list = $this->messenger_bot_login->get_page_list($access_token);
5564 if(!empty($page_list))
5565 {
5566 foreach($page_list as $page)
5567 {
5568 $user_id = $this->user_id;
5569 $page_id = $page['id'];
5570 $page_cover = '';
5571 if(isset($page['cover']['source'])) $page_cover = $page['cover']['source'];
5572 $page_profile = '';
5573 if(isset($page['picture']['url'])) $page_profile = $page['picture']['url'];
5574 $page_name = '';
5575 if(isset($page['name'])) $page_name = $page['name'];
5576 $page_username = '';
5577 if(isset($page['username'])) $page_username = $page['username'];
5578 $page_access_token = '';
5579 if(isset($page['access_token'])) $page_access_token = $page['access_token'];
5580 $page_email = '';
5581 if(isset($page['emails'][0])) $page_email = $page['emails'][0];
5582 $data = array(
5583 'user_id' => $user_id,
5584 'messenger_bot_user_info_id' => $facebook_table_id,
5585 'page_id' => $page_id,
5586 'page_cover' => $page_cover,
5587 'page_profile' => $page_profile,
5588 'page_name' => $page_name,
5589 'username' => $page_username,
5590 'page_access_token' => $page_access_token,
5591 'page_email' => $page_email,
5592 'add_date' => date('Y-m-d')
5593 );
5594 $where=array();
5595 $where['where'] = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5596 $exist_or_not = $this->basic->get_data('messenger_bot_page_info',$where);
5597 if(empty($exist_or_not))
5598 {
5599 $this->basic->insert_data('messenger_bot_page_info',$data);
5600 }
5601 else
5602 {
5603 $where = array('messenger_bot_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']);
5604 $this->basic->update_data('messenger_bot_page_info',$where,$data);
5605 }
5606 }
5607 }
5608 $this->session->set_flashdata('success_message', 1);
5609 redirect('messenger_bot/facebook_config','location');
5610 exit();
5611 }
5612 else
5613 {
5614 $data['error'] = 1;
5615 $data['message'] = "<a href='".base_url("messenger_bot/facebook_config/")."'>".$this->lang->line("something went wrong, please try again.")."</a>";
5616 $data['body'] = "admin_login";
5617 $this->_viewcontroller($data);
5618 }
5619 }
5620 }
5621 // ======================FACEBOOK APP CONFIG==================================
5622 public function user_details_modal_bot()
5623 {
5624 if (empty($_POST['user_id_page_id'])) {
5625 die();
5626 }
5627
5628 $user_id_and_page_id = explode("-",$_POST['user_id_page_id']);
5629 $user_id = $user_id_and_page_id[0];
5630 $page_id = $user_id_and_page_id[1];
5631
5632 $table_name = "messenger_bot_subscriber";
5633 $where['where'] = array('user_id' => $user_id, 'page_id' => $page_id);
5634 $one_page_user_details = $this->basic->get_data($table_name,$where);
5635
5636 $html = '<script>
5637 $j(document).ready(function() {
5638 $("#user_data_for_inbox").DataTable();
5639 });
5640 </script>';
5641 $html .= "
5642 <div class='text-center' style='margin-top: -20px !important;'>
5643 <button class='btn btn-info download_subscriber' page_id='".$page_id."'><i class='fa fa-cloud-download'></i> ".$this->lang->line("Download subscriber list")."</button>
5644 </div>
5645 <table id='user_data_for_inbox' class='table table-striped table-bordered nowrap' cellspacing='0' width='100%''>
5646 <thead>
5647 <tr>
5648 <th class='text-center'>".$this->lang->line("picture")."</th>
5649 <th>".$this->lang->line("user name")."</th>
5650 <th class='text-center'>".$this->lang->line("gender")."</th>
5651 <th class='text-center'>".$this->lang->line("Subscribed at")."</th>
5652 <th class='text-center'>".$this->lang->line("status")."</th>
5653 </tr>
5654 </thead>
5655 <tbody>";
5656
5657 foreach ($one_page_user_details as $one_user)
5658 {
5659 $btn_id=$one_user['id'];
5660 $img_src=($one_user["image_path"]!="")?base_url($one_user["image_path"]):base_url("assets/images/avatar.png");
5661 $img="<img src='".$img_src."' class='img-circle' style='height:40px;width:40px;'>";
5662
5663 $html .= "<tr>
5664 <td class='text-center'>".$img."</td>
5665 <td style='vertical-align:middle !important'>".$one_user['first_name']." ".$one_user['last_name']."</td>
5666 <td class='text-center' style='vertical-align:middle !important'>".$one_user['gender']."</td>
5667 <td class='text-center' style='vertical-align:middle !important'>".date("jS M, y H:i:s",strtotime($one_user['subscribed_at']))."</td><td class='text-center'>";
5668 if($one_user['status'] == '1')
5669 {
5670 $html .= "<button id ='".$one_user['id']."-".$one_user['status']."' type='button' class='client_thread_subscribe_unsubscribe btn btn-danger btn-sm'>".$this->lang->line("Stop Bot")."</button>";//$one_user['permission'];
5671 }
5672 elseif ($one_user['status'] == '0')
5673 {
5674 $html .= "<button id ='".$one_user['id']."-".$one_user['status']."' type='button' class='client_thread_subscribe_unsubscribe btn btn-success btn-sm'>".$this->lang->line("Start Bot")."</button>";
5675 }
5676 $html .= "</td>
5677 </tr>";
5678 }
5679
5680 $html .= "</tbody>
5681 </table>
5682 ";
5683
5684 echo $html;
5685 }
5686 public function subscriber_list_download()
5687 {
5688 if(empty($_POST['page_id'])) {
5689 die();
5690 }
5691 $table_name = "messenger_bot_subscriber";
5692 $user_id = $this->user_id;
5693 $page_id = $this->input->post('page_id');
5694 $where['where'] = array('user_id' => $user_id, 'page_id' => $page_id);
5695 $one_page_user_details = $this->basic->get_data($table_name,$where);
5696
5697 if(empty($one_page_user_details))
5698 {
5699 $str = "<div class='alert alert-danger text-center'>".$this->lang->line("No data to download")."</div>";
5700 }
5701 else
5702 {
5703 $download_path=fopen("download/subscriber_download_{$this->user_id}.csv", "w");
5704 // make output csv file unicode compatible
5705 fprintf($download_path, chr(0xEF).chr(0xBB).chr(0xBF));
5706 /**Write header in csv file***/
5707 $write_data[]="User ID";
5708 $write_data[]="Page ID";
5709 $write_data[]="subscribe ID";
5710 // $write_data[]="Contact Group ID";
5711 $write_data[]="Locale";
5712 $write_data[]="First Name";
5713 $write_data[]="Last Name";
5714 $write_data[]="Gender";
5715 $write_data[]="Subscribed at";
5716 $write_data[]="Status";
5717 // $write_data[]="Paage Name";
5718 fputcsv($download_path, $write_data);
5719 foreach($one_page_user_details as $value)
5720 {
5721 $write_data=array();
5722 $write_data[]=$value['user_id'];
5723 $write_data[]=$value['page_id'];
5724 $write_data[]=$value['subscribe_id'];
5725 // $write_data[]=$value['contact_group_id'];
5726 $write_data[]=$value['locale'];
5727 $write_data[]=$value['first_name'];
5728 $write_data[]=$value['last_name'];
5729 $write_data[]=$value['gender'];
5730 $write_data[]=$value['subscribed_at'];
5731 $write_data[]=$value['status'];
5732 // $write_data[]=$page_info[0]['page_name'];
5733 fputcsv($download_path, $write_data);
5734 }
5735 $str = "<div class='download_box'><h2>".$this->lang->line('Your file is ready to download')."</h2>";
5736 $str .= '<i class="fa fa-2x fa-thumbs-o-up"style="color:black"></i><br><br>';
5737 $str .= "<a href='".base_url()."download/subscriber_download_".$this->user_id.".csv"."'". "title='Download' class='btn btn-warning btn-lg' style='width:200px;'><i class='fa fa-cloud-download' style='color:white'></i> ".$this->lang->line('Download')."</a></div>";
5738 }
5739 echo $str;
5740 }
5741
5742 public function delete_error_log($id=0)
5743 {
5744 if($id == 0) exit();
5745 $this->basic->delete_data("messenger_bot_reply_error_log",array("id"=>$id));
5746 redirect(base_url('messenger_bot/bot_list'),'location');
5747 }
5748 public function error_log_report()
5749 {
5750 if(empty($_POST['table_id'])) {
5751 die();
5752 }
5753 $user_id = $this->user_id;
5754 $page_table_id = $this->input->post('table_id');
5755 $table_name = "messenger_bot_reply_error_log";
5756 $select=array("messenger_bot_reply_error_log.*","bot_name");
5757 $join = array('messenger_bot'=>"messenger_bot_reply_error_log.bot_settings_id=messenger_bot.id,left");
5758 $where['where'] = array('messenger_bot_reply_error_log.user_id' => $user_id, 'messenger_bot_reply_error_log.page_id' => $page_table_id);
5759 $error_log_report_info = $this->basic->get_data($table_name,$where,$select,$join);
5760 $html = '<script>
5761 $j(document).ready(function() {
5762 $("#user_data_for_inbox").DataTable();
5763 });
5764 </script>';
5765 $html .= "
5766 <table id='user_data_for_inbox' class='table table-striped table-bordered' cellspacing='0' width='100%''>
5767 <thead>
5768 <tr>
5769 <th>".$this->lang->line("Bot Name")."</th>
5770 <th>".$this->lang->line("Error Message")."</th>
5771 <th>".$this->lang->line("Error Time")."</th>
5772 <th>".$this->lang->line("Actions")."</th>
5773 </tr>
5774 </thead>
5775 <tbody>";
5776 foreach ($error_log_report_info as $error_info)
5777 {
5778 $html .= "<tr>
5779 <td>".$error_info['bot_name']."</td>
5780 <td>".$error_info['error_message']."</td>
5781 <td>".date("jS M, y H:i:s",strtotime($error_info['error_time']))."</td>
5782 <td class='text-center'>
5783 <a title='Edit This Bot' class='orange' style='font-size:18px;;' href=".base_url('messenger_bot/edit_bot/').$error_info['bot_settings_id']."> <i class='fa fa-pencil'></i></a>
5784 <a title='Clear Error Log' href=".base_url('messenger_bot/delete_error_log/').$error_info['id']." class='red' style='font-size:18px;;'> <i class='fa fa-trash'></i></a>
5785
5786 </td>
5787 <td>";
5788 $html .= "</td>
5789 </tr>";
5790 }
5791 $html .= "</tbody>
5792 </table>
5793 ";
5794 echo $html;
5795 }
5796 public function client_subscribe_unsubscribe_status_change()
5797 {
5798 if (empty($_POST['client_subscribe_unsubscribe_status'])) {
5799 die();
5800 }
5801 $client_subscribe_unsubscribe = array();
5802 $post_val=$this->input->post('client_subscribe_unsubscribe_status');
5803 $client_subscribe_unsubscribe = explode("-",$post_val);
5804 $id = isset($client_subscribe_unsubscribe[0]) ? $client_subscribe_unsubscribe[0]: 0;
5805 $current_status = isset($client_subscribe_unsubscribe[1]) ? $client_subscribe_unsubscribe[1]: 0;
5806
5807 if($current_status=="1") $permission="0";
5808 else $permission="1";
5809
5810 $where = array
5811 (
5812 'id' => $id,
5813 'user_id' => $this->user_id
5814 );
5815 $data = array('status' => $permission);
5816
5817
5818 if($permission=="0")
5819 {
5820 $response = "<button id ='".$id."-".$permission."' type='button' class='client_thread_subscribe_unsubscribe btn btn-success'>Start Bot</button>";
5821 $this->basic->update_data("messenger_bot_subscriber",$where, $data);
5822 }
5823 else
5824 {
5825 $response = "<button id ='".$id."-".$permission."' type='button' class='client_thread_subscribe_unsubscribe btn btn-danger'>Stop Bot</button>";
5826 $this->basic->update_data("messenger_bot_subscriber",$where, $data);
5827 }
5828 echo $response;
5829 }
5830 public function edit_quick_email_reply($auto_id="",$page_id="")
5831 {
5832 if(!$this->basic->is_exist("messenger_bot",array("postback_id"=>"QUICK_REPLY_EMAIL_REPLY_BOT","page_id"=>$auto_id)))
5833 {
5834 $user_id=$this->user_id;
5835 $sql='INSERT INTO `messenger_bot` ( `user_id`, `page_id`, `fb_page_id`, `template_type`, `bot_type`, `keyword_type`, `keywords`, `message`, `buttons`, `images`, `audio`, `video`, `file`, `status`, `bot_name`, `postback_id`, `last_replied_at`, `is_template`) VALUES
5836 ("'.$user_id.'", "'.$auto_id.'", "'.$page_id.'", "text", "generic", "email-quick-reply","", \'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your email. We will keep you updated. Thank you for being with us."}}}\', "", "", "", "", "", "1", "QUICK REPLY EMAIL REPLY", "QUICK_REPLY_EMAIL_REPLY_BOT", "0000-00-00 00:00:00", "0");';
5837 $this->db->query($sql);
5838 $insert_id=$this->db->insert_id();
5839 $sql='INSERT INTO messenger_bot_postback(user_id,postback_id,page_id,use_status,status,messenger_bot_table_id,bot_name,is_template,template_jsoncode,template_name,template_for) VALUES
5840 ("'.$user_id.'","QUICK_REPLY_EMAIL_REPLY_BOT","'.$auto_id.'","0","1","'.$insert_id.'","QUICK REPLY EMAIL REPLY","1",\'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your email. We will keep you updated. Thank you for being with us."}}}\',"QUICK REPLY EMAIL REPLY","email-quick-reply")';
5841 $this->db->query($sql);
5842 }
5843 $postback_info = $this->basic->get_data("messenger_bot_postback",array("where"=>array("template_for"=>"email-quick-reply","user_id"=>$this->user_id)));
5844 $postback_id=isset($postback_info[0]['id'])?$postback_info[0]['id']:0;
5845 redirect(base_url('messenger_bot/edit_template/').$postback_id,'location');
5846 }
5847
5848 public function edit_quick_phone_reply($auto_id="",$page_id="")
5849 {
5850 if(!$this->basic->is_exist("messenger_bot",array("postback_id"=>"QUICK_REPLY_PHONE_REPLY_BOT","page_id"=>$auto_id)))
5851 {
5852 $user_id=$this->user_id;
5853 $sql='INSERT INTO `messenger_bot` ( `user_id`, `page_id`, `fb_page_id`, `template_type`, `bot_type`, `keyword_type`, `keywords`, `message`, `buttons`, `images`, `audio`, `video`, `file`, `status`, `bot_name`, `postback_id`, `last_replied_at`, `is_template`) VALUES
5854 ("'.$user_id.'", "'.$auto_id.'", "'.$page_id.'", "text", "generic", "phone-quick-reply","", \'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your phone. Thank you for being with us."}}}\', "", "", "", "", "", "1", "QUICK REPLY PHONE REPLY", "QUICK_REPLY_PHONE_REPLY_BOT", "0000-00-00 00:00:00", "0");';
5855 $this->db->query($sql);
5856 $insert_id=$this->db->insert_id();
5857 $sql='INSERT INTO messenger_bot_postback(user_id,postback_id,page_id,use_status,status,messenger_bot_table_id,bot_name,is_template,template_jsoncode,template_name,template_for) VALUES
5858 ("'.$user_id.'","QUICK_REPLY_PHONE_REPLY_BOT","'.$auto_id.'","0","1","'.$insert_id.'","QUICK REPLY PHONE REPLY","1",\'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your phone. Thank you for being with us."}}}\',"QUICK REPLY PHONE REPLY","phone-quick-reply")';
5859 $this->db->query($sql);
5860 }
5861 $postback_info = $this->basic->get_data("messenger_bot_postback",array("where"=>array("template_for"=>"phone-quick-reply","user_id"=>$this->user_id)));
5862 $postback_id=isset($postback_info[0]['id'])?$postback_info[0]['id']:0;
5863 redirect(base_url('messenger_bot/edit_template/').$postback_id,'location');
5864 }
5865
5866 public function edit_quick_location_reply($auto_id="",$page_id="")
5867 {
5868 if(!$this->basic->is_exist("messenger_bot",array("postback_id"=>"QUICK_REPLY_LOCATION_REPLY_BOT","page_id"=>$auto_id)))
5869 {
5870 $user_id=$this->user_id;
5871 $sql='INSERT INTO `messenger_bot` ( `user_id`, `page_id`, `fb_page_id`, `template_type`, `bot_type`, `keyword_type`, `keywords`, `message`, `buttons`, `images`, `audio`, `video`, `file`, `status`, `bot_name`, `postback_id`, `last_replied_at`, `is_template`) VALUES
5872 ("'.$user_id.'", "'.$auto_id.'", "'.$page_id.'", "text", "generic", "location-quick-reply","", \'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your location. Thank you for being with us."}}}\', "", "", "", "", "", "1", "QUICK REPLY LOCATION REPLY", "QUICK_REPLY_LOCATION_REPLY_BOT", "0000-00-00 00:00:00", "0");';
5873 $this->db->query($sql);
5874 $insert_id=$this->db->insert_id();
5875 $sql='INSERT INTO messenger_bot_postback(user_id,postback_id,page_id,use_status,status,messenger_bot_table_id,bot_name,is_template,template_jsoncode,template_name,template_for) VALUES
5876 ("'.$user_id.'","QUICK_REPLY_LOCATION_REPLY_BOT","'.$auto_id.'","0","1","'.$insert_id.'","QUICK REPLY LOCATION REPLY","1",\'{"1":{"recipient":{"id":"replace_id"},"message":{"template_type":"text","text":"Thanks, we have received your location. Thank you for being with us."}}}\',"QUICK REPLY LOCATION REPLY","location-quick-reply")';
5877 $this->db->query($sql);
5878 }
5879 $postback_info = $this->basic->get_data("messenger_bot_postback",array("where"=>array("template_for"=>"location-quick-reply","user_id"=>$this->user_id)));
5880 $postback_id=isset($postback_info[0]['id'])?$postback_info[0]['id']:0;
5881 redirect(base_url('messenger_bot/edit_template/').$postback_id,'location');
5882 }
5883
5884 protected function sdk_locale()
5885 {
5886 $config = array(
5887 'default'=> 'Default',
5888 'af_ZA' => 'Afrikaans',
5889 'ar_AR' => 'Arabic',
5890 'az_AZ' => 'Azerbaijani',
5891 'be_BY' => 'Belarusian',
5892 'bg_BG' => 'Bulgarian',
5893 'bn_IN' => 'Bengali',
5894 'bs_BA' => 'Bosnian',
5895 'ca_ES' => 'Catalan',
5896 'cs_CZ' => 'Czech',
5897 'cy_GB' => 'Welsh',
5898 'da_DK' => 'Danish',
5899 'de_DE' => 'German',
5900 'el_GR' => 'Greek',
5901 'en_GB' => 'English (UK)',
5902 'en_PI' => 'English (Pirate)',
5903 'en_UD' => 'English (Upside Down)',
5904 'en_US' => 'English (US)',
5905 'eo_EO' => 'Esperanto',
5906 'es_ES' => 'Spanish (Spain)',
5907 'es_LA' => 'Spanish',
5908 'et_EE' => 'Estonian',
5909 'eu_ES' => 'Basque',
5910 'fa_IR' => 'Persian',
5911 'fb_LT' => 'Leet Speak',
5912 'fi_FI' => 'Finnish',
5913 'fo_FO' => 'Faroese',
5914 'fr_CA' => 'French (Canada)',
5915 'fr_FR' => 'French (France)',
5916 'fy_NL' => 'Frisian',
5917 'ga_IE' => 'Irish',
5918 'gl_ES' => 'Galician',
5919 'he_IL' => 'Hebrew',
5920 'hi_IN' => 'Hindi',
5921 'hr_HR' => 'Croatian',
5922 'hu_HU' => 'Hungarian',
5923 'hy_AM' => 'Armenian',
5924 'id_ID' => 'Indonesian',
5925 'is_IS' => 'Icelandic',
5926 'it_IT' => 'Italian',
5927 'ja_JP' => 'Japanese',
5928 'ka_GE' => 'Georgian',
5929 'km_KH' => 'Khmer',
5930 'ko_KR' => 'Korean',
5931 'ku_TR' => 'Kurdish',
5932 'la_VA' => 'Latin',
5933 'lt_LT' => 'Lithuanian',
5934 'lv_LV' => 'Latvian',
5935 'mk_MK' => 'Macedonian',
5936 'ml_IN' => 'Malayalam',
5937 'ms_MY' => 'Malay',
5938 'nb_NO' => 'Norwegian (bokmal)',
5939 'ne_NP' => 'Nepali',
5940 'nl_NL' => 'Dutch',
5941 'nn_NO' => 'Norwegian (nynorsk)',
5942 'pa_IN' => 'Punjabi',
5943 'pl_PL' => 'Polish',
5944 'ps_AF' => 'Pashto',
5945 'pt_BR' => 'Portuguese (Brazil)',
5946 'pt_PT' => 'Portuguese (Portugal)',
5947 'ro_RO' => 'Romanian',
5948 'ru_RU' => 'Russian',
5949 'sk_SK' => 'Slovak',
5950 'sl_SI' => 'Slovenian',
5951 'sq_AL' => 'Albanian',
5952 'sr_RS' => 'Serbian',
5953 'sv_SE' => 'Swedish',
5954 'sw_KE' => 'Swahili',
5955 'ta_IN' => 'Tamil',
5956 'te_IN' => 'Telugu',
5957 'th_TH' => 'Thai',
5958 'tl_PH' => 'Filipino',
5959 'tr_TR' => 'Turkish',
5960 'uk_UA' => 'Ukrainian',
5961 'vi_VN' => 'Vietnamese',
5962 'zh_CN' => 'Chinese (China)',
5963 'zh_HK' => 'Chinese (Hong Kong)',
5964 'zh_TW' => 'Chinese (Taiwan)',
5965 );
5966 asort($config);
5967 return $config;
5968 }
5969
5970 public function remove_persistent_menu_locale($auto_id=0,$page_auto_id=0)
5971 {
5972 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
5973 redirect('home/login_page', 'location');
5974 $this->basic->delete_data("messenger_bot_persistent_menu",array("id"=>$auto_id,"user_id"=>$this->user_id));
5975 $this->session->set_flashdata('remove_persistent_menu_locale',1);
5976 redirect(base_url('messenger_bot/persistent_menu_list/'.$page_auto_id),'location');
5977 }
5978 public function remove_persistent_menu($page_auto_id=0)
5979 {
5980 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
5981 redirect('home/login_page', 'location');
5982
5983 $this->load->library("messenger_bot_login");
5984 $page_info=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_auto_id,'user_id'=>$this->user_id)));
5985 if(!isset($page_info[0])) exit();
5986 $page_access_token=$page_info[0]['page_access_token'];
5987 $response=$this->messenger_bot_login->delete_persistent_menu($page_access_token);
5988 if(!isset($response['error']))
5989 {
5990 $this->basic->update_data('messenger_bot_page_info',array("id"=>$page_auto_id,'user_id'=>$this->user_id),array("persistent_enabled"=>'0'));
5991 $this->basic->delete_data('messenger_bot_persistent_menu',array("page_id"=>$page_auto_id,'user_id'=>$this->user_id));
5992 $this->session->set_flashdata('perrem_success',1);
5993 $this->_delete_usage_log($module_id=197,$request=1);
5994 }
5995 else
5996 {
5997 $err_message=isset($response['error']['message'])?$response['error']['message']:$this->lang->line("something went wrong, please try again.");
5998
5999 $this->session->set_flashdata('perrem_success',0);
6000 $this->session->set_flashdata('perrem_message',$err_message);
6001 }
6002 redirect(base_url('messenger_bot/bot_list'),'location');
6003 }
6004 public function publish_persistent_menu($page_auto_id=0)
6005 {
6006 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
6007 redirect('home/login_page', 'location');
6008 $page_info=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_auto_id,'user_id'=>$this->user_id)));
6009 if(!isset($page_info[0])) exit();
6010 $page_access_token=$page_info[0]['page_access_token'];
6011 $is_already_persistent_enabled=$page_info[0]['persistent_enabled'];
6012 if($is_already_persistent_enabled=='0') // no need to check if it was already published and user is just editing menu
6013 {
6014 $status=$this->_check_usage($module_id=197,$request=1);
6015 if($status=="3")
6016 {
6017 $this->session->set_flashdata('per_success',0);
6018 $this->session->set_flashdata('per_message',$this->lang->line("You are not allowed to publish new persistent menu. Module limit has been exceeded."));
6019 $this->_insert_usage_log($module_id=197,$request=1);
6020 redirect(base_url('messenger_bot/persistent_menu_list/'.$page_auto_id),'location');
6021 }
6022 }
6023 $this->load->library("messenger_bot_login");
6024 $json_array=array();
6025 $menu_data=$this->basic->get_data("messenger_bot_persistent_menu",array("where"=>array("page_id"=>$page_auto_id,"user_id"=>$this->user_id)));
6026 foreach ($menu_data as $key => $value)
6027 {
6028 $temp=json_decode($value["item_json"],true);
6029 $temp2=isset($temp['call_to_actions'])?$temp['call_to_actions']:array();
6030
6031 if($this->session->userdata('user_type') == 'Member' && in_array(198,$this->module_access) && count($temp2)<3)
6032 {
6033 end($temp2);
6034 $key2 = key($temp2);
6035 $key2++;
6036 $copyright_text=$this->config->item("persistent_menu_copyright_text");
6037 if($copyright_text=="") $copyright_text=$this->config->item("product_name");
6038 $copyright_url=$this->config->item("persistent_menu_copyright_url");
6039 if($copyright_url=="") $copyright_url=base_url();
6040 $temp["call_to_actions"][$key2]["title"]=$copyright_text;
6041 $temp["call_to_actions"][$key2]["type"]="web_url";
6042 $temp["call_to_actions"][$key2]["url"]=$copyright_url;
6043 }
6044 $json_array["persistent_menu"][]=$temp;
6045 }
6046
6047 $json=json_encode($json_array);
6048
6049 $response=$this->messenger_bot_login->add_persistent_menu($page_access_token,$json);
6050
6051 if(!isset($response['error']))
6052 {
6053 if(!empty($postback_insert_data))
6054 $this->db->insert_batch('messenger_bot_postback',$postback_insert_data);
6055 $this->basic->update_data('messenger_bot_page_info',array("id"=>$page_auto_id,'user_id'=>$this->user_id),array("persistent_enabled"=>'1'));
6056 $this->session->set_flashdata('menu_success',1);
6057 if($is_already_persistent_enabled=='0') // no need to check if it was already published and user is just editing menu
6058 $this->_insert_usage_log($module_id=197,$request=1);
6059 redirect(base_url('messenger_bot/bot_list'),'location');
6060 }
6061 else
6062 {
6063 $err_message=isset($response['error']['message'])?$response['error']['message']:$this->lang->line("something went wrong, please try again.");
6064 $this->session->set_flashdata('per_success',0);
6065 $this->session->set_flashdata('per_message',$err_message);
6066 redirect(base_url('messenger_bot/persistent_menu_list/'.$page_auto_id),'location');
6067 }
6068 }
6069
6070 public function persistent_menu_list($page_auto_id=0)
6071 {
6072 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
6073 redirect('home/login_page', 'location');
6074
6075 $data['body'] = 'persistent_menu_list';
6076 $data['page_title'] = $this->lang->line('Persistent Menu List');
6077 $page_info=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_auto_id,'user_id'=>$this->user_id)));
6078 if(!isset($page_info[0])) exit();
6079
6080 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
6081 $data["menu_info"]=$this->basic->get_data("messenger_bot_persistent_menu",array("where"=>array("page_id"=>$page_auto_id,"user_id"=>$this->user_id)));
6082 $this->_viewcontroller($data);
6083 }
6084
6085 public function create_persistent_menu($page_auto_id=0)
6086 {
6087 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
6088 redirect('home/login_page', 'location');
6089
6090 $data['body'] = 'persistent_menu';
6091 $data['page_title'] = $this->lang->line('Persistent Menu');
6092 $page_info=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_auto_id,'user_id'=>$this->user_id)));
6093 if(!isset($page_info[0])) exit();
6094
6095 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
6096 $started_button_enabled = isset($page_info[0]["started_button_enabled"])?$page_info[0]["started_button_enabled"]:"0";
6097 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$page_auto_id)));
6098 $data['postback_ids'] = $postback_id_list;
6099 $data['page_auto_id'] = $page_auto_id;
6100 $data['started_button_enabled'] = $started_button_enabled;
6101 $data['locale']=$this->sdk_locale();
6102 $this->_viewcontroller($data);
6103 }
6104 public function create_persistent_menu_action()
6105 {
6106 if(!$_POST) exit();
6107 $post=$_POST;
6108 foreach ($post as $key => $value)
6109 {
6110 $$key=$value;
6111 }
6112 if($this->basic->is_exist("messenger_bot_persistent_menu",array("page_id"=>$page_table_id,"locale"=>$locale)))
6113 {
6114 echo json_encode(array('status'=>'0','message'=>$this->lang->line("persistent menu is already exists for this locale.")));
6115 exit();
6116 }
6117 $menu=array();
6118 $postback_insert_data=array();
6119 $only_postback=array();
6120 for($i=1;$i<=$level1_limit;$i++)
6121 {
6122 $level_title_temp="text_with_buttons_text_".$i;
6123 $level_type_temp="text_with_button_type_".$i;
6124 if($$level_title_temp=="") continue; // form gets everything but we need only filled data
6125 if($$level_type_temp=="post_back") $$level_type_temp="postback";
6126 $menu[$i]=array
6127 (
6128 "title"=>$$level_title_temp,
6129 "type"=> $$level_type_temp
6130 );
6131 if($$level_type_temp=="postback")
6132 {
6133 $level_postback_temp="text_with_button_post_id_".$i;
6134 // $$level_postback_temp=strtoupper($$level_postback_temp);
6135 $menu[$i]["payload"]=$$level_postback_temp;
6136 $single_postback_insert_data = array();
6137 $single_postback_insert_data['user_id'] = $this->user_id;
6138 $single_postback_insert_data['postback_id'] = $$level_postback_temp;
6139 $single_postback_insert_data['page_id'] = $page_table_id;
6140 $single_postback_insert_data['bot_name'] = '';
6141 $postback_insert_data[] = $single_postback_insert_data;
6142 $only_postback[]=$$level_postback_temp;
6143 }
6144 else if($$level_type_temp=="web_url")
6145 {
6146 $level_web_url_temp="text_with_button_web_url_".$i;
6147 $menu[$i]["url"]=$$level_web_url_temp;
6148 }
6149 else
6150 {
6151 for($j=1;$j<=$level2_limit;$j++)
6152 {
6153 $level2_title_temp="text_with_buttons_text_".$i."_".$j;
6154 $level2_type_temp="text_with_button_type_".$i."_".$j;
6155 if($$level2_title_temp=="") continue; // form gets everything but we need only filled data
6156 if($$level2_type_temp=="post_back") $$level2_type_temp="postback";
6157 $menu[$i]["call_to_actions"][$j]["title"]=$$level2_title_temp;
6158 $menu[$i]["call_to_actions"][$j]["type"]=$$level2_type_temp;
6159 if($$level2_type_temp=="postback")
6160 {
6161 $level2_postback_temp="text_with_button_post_id_".$i."_".$j;
6162 // $$level2_postback_temp=strtoupper($$level2_postback_temp);
6163 $menu[$i]["call_to_actions"][$j]["payload"]=$$level2_postback_temp;
6164 $single_postback_insert_data = array();
6165 $single_postback_insert_data['user_id'] = $this->user_id;
6166 $single_postback_insert_data['postback_id'] = $$level2_postback_temp;
6167 $single_postback_insert_data['page_id'] = $page_table_id;
6168 $single_postback_insert_data['bot_name'] = '';
6169 $postback_insert_data[] = $single_postback_insert_data;
6170 $only_postback[]=$$level2_postback_temp;
6171 }
6172 else if($$level2_type_temp=="web_url")
6173 {
6174 $level2_web_url_temp="text_with_button_web_url_".$i."_".$j;
6175 $menu[$i]["call_to_actions"][$j]["url"]=$$level2_web_url_temp;
6176 }
6177 else
6178 {
6179 for($k=1;$k<=$level3_limit;$k++)
6180 {
6181 $level3_title_temp="text_with_buttons_text_".$i."_".$j."_".$k;
6182 $level3_type_temp="text_with_button_type_".$i."_".$j."_".$k;
6183 if($$level3_title_temp=="") continue; // form gets everything but we need only filled data
6184 if($$level3_type_temp=="post_back") $$level3_type_temp="postback";
6185 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["title"]=$$level3_title_temp;
6186 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["type"]=$$level3_type_temp;
6187 if($$level3_type_temp=="postback")
6188 {
6189 $level3_postback_temp="text_with_button_post_id_".$i."_".$j."_".$k;
6190 // $$level3_postback_temp=strtoupper($$level3_postback_temp);
6191 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["payload"]=$$level3_postback_temp;
6192 $single_postback_insert_data = array();
6193 $single_postback_insert_data['user_id'] = $this->user_id;
6194 $single_postback_insert_data['postback_id'] = $$level3_postback_temp;
6195 $single_postback_insert_data['page_id'] = $page_table_id;
6196 $single_postback_insert_data['bot_name'] = '';
6197 $postback_insert_data[] = $single_postback_insert_data;
6198 $only_postback[]=$$level3_postback_temp;
6199 }
6200 else if($$level3_type_temp=="web_url")
6201 {
6202 $level3_web_url_temp="text_with_button_web_url_".$i."_".$j."_".$k;
6203 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["url"]=$$level3_web_url_temp;
6204 }
6205 }
6206 }
6207 }
6208 }
6209 }
6210 $menu_json_array=array();
6211 $menu_json_array["locale"]=$locale;
6212 $composer_input_disabled2='false';
6213 if($composer_input_disabled==='1') $composer_input_disabled2='true';
6214 $menu_json_array["composer_input_disabled"]=$composer_input_disabled2;
6215 $index=1;
6216 foreach ($menu as $key => $value)
6217 {
6218 $menu_json_array["call_to_actions"][$index]=$value;
6219 $index++;
6220 }
6221 $menu_json=json_encode($menu_json_array);
6222 $insert_data = array();
6223 $insert_data['page_id'] = $page_table_id;
6224 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token"));
6225 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
6226 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
6227 $this->db->trans_start();
6228 if(!empty($postback_insert_data)) $this->db->insert_batch('messenger_bot_postback',$postback_insert_data);
6229 $this->basic->insert_data("messenger_bot_persistent_menu",array("user_id"=>$this->user_id,"page_id"=>$page_table_id,"locale"=>$locale,"item_json"=>$menu_json,"composer_input_disabled"=>$composer_input_disabled,'poskback_id_json'=>json_encode($only_postback)));
6230 $this->db->trans_complete();
6231 if ($this->db->trans_status() === FALSE)
6232 echo json_encode(array('status'=>'0','message'=>$this->lang->line("something went wrong, please try again.")));
6233 else
6234 {
6235 $this->session->set_flashdata('per_success',1);
6236 echo json_encode(array('status'=>'1','message'=>$this->lang->line("persistent menu has been created successfully.")));
6237 }
6238 }
6239 public function edit_persistent_menu($id=0)
6240 {
6241 if($this->session->userdata('user_type') != 'Admin' && !in_array(197,$this->module_access))
6242 redirect('home/login_page', 'location');
6243
6244 $data['body'] = 'persistent_menu_edit';
6245 $data['page_title'] = $this->lang->line('Edit Persistent Menu');
6246 $xdata=$this->basic->get_data("messenger_bot_persistent_menu",array("where"=>array("id"=>$id,"user_id"=>$this->user_id)));
6247 if(!isset($xdata[0])) exit();
6248 $data['xdata']=$xdata[0];
6249 $page_auto_id=$xdata[0]["page_id"];
6250 $page_info=$this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_auto_id,'user_id'=>$this->user_id)));
6251 if(!isset($page_info[0])) exit();
6252
6253 $data['page_info'] = isset($page_info[0]) ? $page_info[0] : array();
6254 $started_button_enabled = isset($page_info[0]["started_button_enabled"])?$page_info[0]["started_button_enabled"]:"0";
6255 $postback_id_list = $this->basic->get_data('messenger_bot_postback',array('where'=>array('user_id'=>$this->user_id,'page_id'=>$page_auto_id)));
6256 $data['postback_ids'] = $postback_id_list;
6257 $data['page_auto_id'] = $page_auto_id;
6258 $data['started_button_enabled'] = $started_button_enabled;
6259 $data['locale']=$this->sdk_locale();
6260 $this->_viewcontroller($data);
6261 }
6262 public function edit_persistent_menu_action()
6263 {
6264 if(!$_POST) exit();
6265 $post=$_POST;
6266 foreach ($post as $key => $value)
6267 {
6268 $$key=$value;
6269 }
6270 if($this->basic->is_exist("messenger_bot_persistent_menu",array("page_id"=>$page_table_id,"locale"=>$locale,"id!="=>$auto_id)))
6271 {
6272 echo json_encode(array('status'=>'0','message'=>$this->lang->line("persistent menu is already exists for this locale.")));
6273 exit();
6274 }
6275 $menu=array();
6276 $postback_insert_data=array();
6277 $only_postback=array();
6278 $current_postbacks=json_decode($current_postbacks,true);
6279 $current_postbacks=array_map('strtoupper', $current_postbacks);
6280 for($i=1;$i<=$level1_limit;$i++)
6281 {
6282 $level_title_temp="text_with_buttons_text_".$i;
6283 $level_type_temp="text_with_button_type_".$i;
6284 if($$level_title_temp=="") continue; // form gets everything but we need only filled data
6285 if($$level_type_temp=="post_back") $$level_type_temp="postback";
6286 $menu[$i]=array
6287 (
6288 "title"=>$$level_title_temp,
6289 "type"=> $$level_type_temp
6290 );
6291 if($$level_type_temp=="postback")
6292 {
6293 $level_postback_temp="text_with_button_post_id_".$i;
6294 // $$level_postback_temp=strtoupper($$level_postback_temp);
6295 $menu[$i]["payload"]=$$level_postback_temp;
6296 $single_postback_insert_data = array();
6297 $single_postback_insert_data['user_id'] = $this->user_id;
6298 $single_postback_insert_data['postback_id'] = $$level_postback_temp;
6299 $single_postback_insert_data['page_id'] = $page_table_id;
6300 $single_postback_insert_data['bot_name'] = '';
6301 if(!in_array(strtoupper($$level_postback_temp), $current_postbacks))
6302 $postback_insert_data[] = $single_postback_insert_data;
6303 $only_postback[]=$$level_postback_temp;
6304 }
6305 else if($$level_type_temp=="web_url")
6306 {
6307 $level_web_url_temp="text_with_button_web_url_".$i;
6308 $menu[$i]["url"]=$$level_web_url_temp;
6309 }
6310 else
6311 {
6312 for($j=1;$j<=$level2_limit;$j++)
6313 {
6314 $level2_title_temp="text_with_buttons_text_".$i."_".$j;
6315 $level2_type_temp="text_with_button_type_".$i."_".$j;
6316 if($$level2_title_temp=="") continue; // form gets everything but we need only filled data
6317 if($$level2_type_temp=="post_back") $$level2_type_temp="postback";
6318 $menu[$i]["call_to_actions"][$j]["title"]=$$level2_title_temp;
6319 $menu[$i]["call_to_actions"][$j]["type"]=$$level2_type_temp;
6320 if($$level2_type_temp=="postback")
6321 {
6322 $level2_postback_temp="text_with_button_post_id_".$i."_".$j;
6323 // $$level2_postback_temp=strtoupper($$level2_postback_temp);
6324 $menu[$i]["call_to_actions"][$j]["payload"]=$$level2_postback_temp;
6325 $single_postback_insert_data = array();
6326 $single_postback_insert_data['user_id'] = $this->user_id;
6327 $single_postback_insert_data['postback_id'] = $$level2_postback_temp;
6328 $single_postback_insert_data['page_id'] = $page_table_id;
6329 $single_postback_insert_data['bot_name'] = '';
6330 if(!in_array(strtoupper($$level2_postback_temp), $current_postbacks))
6331 $postback_insert_data[] = $single_postback_insert_data;
6332 $only_postback[]=$$level2_postback_temp;
6333 }
6334 else if($$level2_type_temp=="web_url")
6335 {
6336 $level2_web_url_temp="text_with_button_web_url_".$i."_".$j;
6337 $menu[$i]["call_to_actions"][$j]["url"]=$$level2_web_url_temp;
6338 }
6339 else
6340 {
6341 for($k=1;$k<=$level3_limit;$k++)
6342 {
6343 $level3_title_temp="text_with_buttons_text_".$i."_".$j."_".$k;
6344 $level3_type_temp="text_with_button_type_".$i."_".$j."_".$k;
6345 if($$level3_title_temp=="") continue; // form gets everything but we need only filled data
6346 if($$level3_type_temp=="post_back") $$level3_type_temp="postback";
6347 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["title"]=$$level3_title_temp;
6348 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["type"]=$$level3_type_temp;
6349 if($$level3_type_temp=="postback")
6350 {
6351 $level3_postback_temp="text_with_button_post_id_".$i."_".$j."_".$k;
6352 // $$level3_postback_temp=strtoupper($$level3_postback_temp);
6353 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["payload"]=$$level3_postback_temp;
6354 $single_postback_insert_data = array();
6355 $single_postback_insert_data['user_id'] = $this->user_id;
6356 $single_postback_insert_data['postback_id'] = $$level3_postback_temp;
6357 $single_postback_insert_data['page_id'] = $page_table_id;
6358 $single_postback_insert_data['bot_name'] = '';
6359 if(!in_array(strtoupper($$level3_postback_temp), $current_postbacks))
6360 $postback_insert_data[] = $single_postback_insert_data;
6361 $only_postback[]=$$level3_postback_temp;
6362 }
6363 else if($$level3_type_temp=="web_url")
6364 {
6365 $level3_web_url_temp="text_with_button_web_url_".$i."_".$j."_".$k;
6366 $menu[$i]["call_to_actions"][$j]["call_to_actions"][$k]["url"]=$$level3_web_url_temp;
6367 }
6368 }
6369 }
6370 }
6371 }
6372 }
6373 $menu_json_array=array();
6374 $menu_json_array["locale"]=$locale;
6375 $composer_input_disabled2='false';
6376 if($composer_input_disabled==='1') $composer_input_disabled2='true';
6377 $menu_json_array["composer_input_disabled"]=$composer_input_disabled2;
6378 $index=1;
6379 foreach ($menu as $key => $value)
6380 {
6381 $menu_json_array["call_to_actions"][$index]=$value;
6382 $index++;
6383 }
6384 $menu_json=json_encode($menu_json_array);
6385 $insert_data = array();
6386 $insert_data['page_id'] = $page_table_id;
6387 $messenger_bot_user_info_id = $this->basic->get_data("messenger_bot_page_info",array("where"=>array("id"=>$page_table_id)),array("messenger_bot_user_info_id","page_access_token"));
6388 $page_access_token = $messenger_bot_user_info_id[0]['page_access_token'];
6389 $messenger_bot_user_info_id = $messenger_bot_user_info_id[0]["messenger_bot_user_info_id"];
6390
6391 $this->db->trans_start();
6392 if(!empty($postback_insert_data)) $this->db->insert_batch('messenger_bot_postback',$postback_insert_data);
6393 $this->basic->update_data("messenger_bot_persistent_menu",array("id"=>$auto_id,"user_id"=>$this->user_id),array("locale"=>$locale,"item_json"=>$menu_json,"composer_input_disabled"=>$composer_input_disabled,'poskback_id_json'=>json_encode($only_postback)));
6394 $this->db->trans_complete();
6395 if ($this->db->trans_status() === FALSE)
6396 echo json_encode(array('status'=>'0','message'=>$this->lang->line("something went wrong, please try again.")));
6397 else
6398 {
6399 $this->session->set_flashdata('per_update_success',1);
6400 echo json_encode(array('status'=>'1','message'=>$this->lang->line("persistent menu has been updated successfully.")));
6401 }
6402 }
6403
6404 public function configuration()
6405 {
6406 if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') != 'Admin') {
6407 redirect('home/login_page', 'location');
6408 }
6409
6410 $data['body'] = "edit_config";
6411 $data['page_title'] = $this->lang->line('general settings')." : ".$this->lang->line('messenger bot');
6412 $this->_viewcontroller($data);
6413 }
6414
6415 public function edit_config()
6416 {
6417 if ($_SERVER['REQUEST_METHOD'] === 'GET') {
6418 redirect('home/access_forbidden', 'location');
6419 }
6420 if ($_POST)
6421 {
6422 $this->form_validation->set_rules('backup_mode', '<b>'.$this->lang->line("Backup Mode").'</b>','trim');
6423 $this->form_validation->set_rules('persistent_menu_copyright_text', '<b>'.$this->lang->line("persistent menu copyright text").'</b>','trim');
6424 $this->form_validation->set_rules('persistent_menu_copyright_url', '<b>'.$this->lang->line("persistent menu copyright URL").'</b>','trim');
6425 $this->form_validation->set_rules('has_manage_page_approval', '<b>'.$this->lang->line("User login type").'</b>','trim');
6426 // go to config form page if validation wrong
6427 if ($this->form_validation->run() == false)
6428 {
6429 return $this->configuration();
6430 }
6431 else
6432 {
6433 $backup_mode=addslashes(strip_tags($this->input->post('backup_mode', true)));
6434 $persistent_menu_copyright_text=addslashes(strip_tags($this->input->post('persistent_menu_copyright_text', true)));
6435 $persistent_menu_copyright_url=addslashes(strip_tags($this->input->post('persistent_menu_copyright_url', true)));
6436 $has_manage_page_approval=addslashes(strip_tags($this->input->post('has_manage_page_approval', true)));
6437 // writing application/config/my_config
6438 $app_my_config_data = "<?php ";
6439 $app_my_config_data.= "\n\$config['webhook_verify_token'] = '".$this->config->item('webhook_verify_token')."';\n";
6440 if($backup_mode == 'yes') $mode_to_write = 1;
6441 else $mode_to_write = 0;
6442 $app_my_config_data.= "\$config['bot_backup_mode'] = '$mode_to_write';\n";
6443
6444 if($persistent_menu_copyright_text!="")
6445 $app_my_config_data.= "\$config['persistent_menu_copyright_text'] = '$persistent_menu_copyright_text';\n";
6446 if($persistent_menu_copyright_url!="")
6447 $app_my_config_data.= "\$config['persistent_menu_copyright_url'] = '$persistent_menu_copyright_url';\n";
6448 $app_my_config_data.= "\$config['has_manage_page_approval'] = '$has_manage_page_approval';";
6449 file_put_contents(APPPATH.'modules/'.strtolower($this->router->fetch_class()).'/config/messenger_bot_config.php', $app_my_config_data, LOCK_EX);
6450
6451 $admin_info = $this->basic->get_data("users",array("where"=>array('user_type'=>'Admin')),array('id'));
6452 $admin_ids = array();
6453 foreach($admin_info as $value)
6454 {
6455 array_push($admin_ids, $value['id']);
6456 }
6457
6458 // Messenger Bot
6459 if($this->basic->is_exist("modules",$where=array('id'=>200)))
6460 {
6461 $admin_app_info = $this->basic->get_data("messenger_bot_config",array("where_in"=>array("user_id"=>$admin_ids)),array("id"));
6462 $admin_app_ids = array();
6463 foreach($admin_app_info as $apps)
6464 {
6465 array_push($admin_app_ids, $apps['id']);
6466 }
6467 if($mode_to_write == 1)
6468 {
6469 if(!empty($admin_app_ids))
6470 {
6471 $this->db->where_in('messenger_bot_config_id', $admin_app_ids);
6472 $this->db->where_not_in('user_id', $admin_ids);
6473 $this->db->update("messenger_bot_user_info",array("need_to_delete"=>"1"));
6474 }
6475 }
6476 else
6477 {
6478 if(!empty($admin_app_ids))
6479 {
6480 $this->db->where_in('messenger_bot_config_id', $admin_app_ids);
6481 $this->db->where_not_in('user_id', $admin_ids);
6482 $this->db->update("messenger_bot_user_info",array("need_to_delete"=>"0"));
6483 }
6484 }
6485 }
6486 // Messenger Bot
6487
6488 $this->session->set_flashdata('success_message', 1);
6489 redirect('messenger_bot/configuration', 'location');
6490 }
6491 }
6492 }
6493 public function cron_job()
6494 {
6495 if($this->session->userdata('user_type') != 'Admin')
6496 redirect('home/login_page', 'location');
6497
6498 $data['body'] = "cron_job";
6499 $data['page_title'] = 'cron job';
6500 $api_data=$this->basic->get_data("native_api",array("where"=>array("user_id"=>$this->session->userdata("user_id"))));
6501 $data["api_key"]="";
6502 if(count($api_data)>0) $data["api_key"]=$api_data[0]["api_key"];
6503 $this->_viewcontroller($data);
6504 }
6505 function download_profile_pic($api_key){
6506
6507 $this->api_key_check($api_key);
6508 $subscriber_info = $this->basic->get_data('messenger_bot_subscriber',array('where'=>array('is_image_download'=>'0')),$select='',$join='',$limit=10);
6509
6510 foreach($subscriber_info as $info){
6511
6512 $profile_pic_url=$info['profile_pic'];
6513 $subscribe_id=$info['subscribe_id'];
6514 $subscribe_auto_id=$info['id'];
6515
6516 $upload_path="upload/subscriber_pic";
6517
6518 if(!file_exists($upload_path))
6519 mkdir($upload_path,0755);
6520
6521 $user_pic_name=$upload_path."/".$subscribe_id.".png";
6522
6523
6524 $content= @file_get_contents($profile_pic_url);
6525
6526 if($content===FALSE){
6527
6528 $this->basic->update_data("messenger_bot_subscriber",array("id"=>$subscribe_auto_id),array("is_image_download"=>"1"));
6529
6530 }
6531 else{
6532 file_put_contents($user_pic_name,$content);
6533 $this->basic->update_data("messenger_bot_subscriber",array("id"=>$subscribe_auto_id),array("is_image_download"=>"1","image_path"=>$user_pic_name));
6534 }
6535 }
6536
6537 }
6538 private function api_key_check($api_key="")
6539 {
6540 $user_id="";
6541 if($api_key!="")
6542 {
6543 $explde_api_key=explode('-',$api_key);
6544 $user_id="";
6545 if(array_key_exists(0, $explde_api_key))
6546 $user_id=$explde_api_key[0];
6547 }
6548 if($api_key=="")
6549 {
6550 echo "API Key is required.";
6551 exit();
6552 }
6553 if(!$this->basic->is_exist("native_api",array("api_key"=>$api_key,"user_id"=>$user_id)))
6554 {
6555 echo "API Key does not match with any user.";
6556 exit();
6557 }
6558 if(!$this->basic->is_exist("users",array("id"=>$user_id,"status"=>"1","deleted"=>"0","user_type"=>"Admin")))
6559 {
6560 echo "API Key does not match with any authentic user.";
6561 exit();
6562 }
6563 }
6564
6565
6566}