function keywords() { return WxReplyKeyword::find(0, 100, "item_id='{$this->id}'"); }
function auto_reply($xml) { $from = $xml->FromUserName; $to = $xml->ToUserName; $type = $xml->MsgType; $item = null; if ($type == 'text') { $t = trim($xml->Content); $t = Db::escape($t); $kw = WxReplyKeyword::findOne("type='equal' and keyword='{$t}'", 'id desc'); if ($kw) { $item = WxReplyItem::get($kw->item_id); } else { $kws = WxReplyKeyword::find(0, 1000, "type='contain'", 'id desc'); foreach ($kws as $kw) { if (stripos($t, $kw->keyword) !== false) { $item = WxReplyItem::get($kw->item_id); break; } } } } else { if ($type == 'event') { $t = $xml->Event; $t = Db::escape($t); if ($t == 'CLICK') { $t = $xml->EventKey; $t = Db::escape($t); $kw = WxReplyKeyword::findOne("type='click' and keyword='{$t}'", 'id desc'); } else { $kw = WxReplyKeyword::findOne("type='event' and keyword='{$t}'", '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, 1); if ($reply_list) { $this->send_reply_list($to, $from, $reply_list, $wrap); } return true; } return false; }