示例#1
0
 function reset_keywords($new_kws_str, $type = 'equal')
 {
     $ks = $this->keywords();
     $old_kws = array();
     foreach ($ks as $k) {
         $old_kws[] = $k->keyword;
     }
     $ps = explode(',', $new_kws_str);
     $kws = array();
     foreach ($ps as $p) {
         $p = trim($p);
         if (strlen($p)) {
             $kws[$p] = $p;
         }
     }
     $to_del = array_diff($old_kws, $kws);
     foreach ($to_del as $k) {
         Db::escape($k);
         $sql = "delete from wx_reply_keywords where item_id='{$this->id}' and keyword='{$k}'";
         Db::query($sql);
     }
     $to_add = array_diff($kws, $old_kws);
     foreach ($to_add as $k) {
         WxReplyKeyword::save(array('type' => $type, 'keyword' => $k, 'item_id' => $this->id));
     }
     $sql = "update " . WxReplyKeyword::table() . " set type='{$type}' where item_id='{$this->id}'";
     Db::update($sql);
 }
示例#2
0
 function reply_channel_subscribe($xml)
 {
     $from = $xml->FromUserName;
     $to = $xml->ToUserName;
     $type = $xml->MsgType;
     $event = strtolower($xml->Event);
     $event_key = $xml->EventKey;
     $ticket = $xml->Ticket;
     $in_event = array(WxReplyKeyword::EVENT_TYPE_SCAN, WxReplyKeyword::EVENT_TYPE_SUBSCRIBE);
     if ($type == WxReplyKeyword::KEYWORD_TYPE_EVENT && in_array($event, $in_event)) {
         $channel_info = WxReplyKeyword::check_wechat_subscribe_scene_id($event_key);
         if (!$channel_info) {
             return false;
         }
         $channel_id = $channel_info->id;
         $wx_channel_info = WxChannelInfo::get($channel_id);
         if (!$wx_channel_info || $wx_channel_info->status != WxChannelInfo::STATUS_YES || $wx_channel_info->qrcode_ticket != $ticket) {
             return false;
         }
         $keyword = WxReplyKeyword::CHANNEL_SUBSCRIBE_PREFIE . $channel_id;
         $where = "type = '{$type}' and keyword = '{$keyword}'";
         $kw = WxReplyKeyword::findOne($where, 'id desc');
         if ($kw) {
             $item = WxReplyItem::get($kw->item_id);
             if ($item) {
                 $wrap = $item->type == 'news' ? true : false;
                 $str = $item->content;
                 $reply_list = @json_decode($str, true);
                 if ($reply_list) {
                     $this->send_reply_list($to, $from, $reply_list, $wrap);
                 }
                 Logger::info("扫描渠道关注二维码, 粉丝关注事件, 自动回复成功, 微信openid : {$from} ,服务号微信id {$to} 渠道ID {$channel_info->id}");
                 return true;
             }
         }
     }
     return false;
 }
示例#3
0
 function delete($ctx)
 {
     $id = intval($_GET['id']);
     try {
         Db::begin();
         WxReplyItem::delete($id);
         WxReplyKeyword::deleteByWhere("item_id='{$id}'");
         Db::commit();
     } catch (Exception $e) {
         Db::rollback();
     }
     _redirect($this->_list_url());
     return;
 }