');
$text = preg_replace("/\<(blockquote|strong|pre|ol|ul|li|em|p|s|u).*?\>/is", "<$1>", $text); // 不用去除a标签,上面已经处理过了
$text = preg_replace("/\[:IMAGE:(.*?):(.*?):(.*?):(.*?):(.*?):\]/i", "
", $text);
$text = preg_replace("/\[:@:(.*?):(.*?):\]/i", "@$2", $text);
$text = preg_replace("/\[:#:(.*?):(.*?):\]/i", "#$2", $text);
return preg_replace("/^(<\/p>)+|(
<\/p>)+$/i", "", $text);
}
/**
* 发送消息
* @param int $dialog_id 会话ID(即 聊天室ID)
* @param int $reply_id 回复ID
* @param string $type 消息类型
* @param array $msg 发送的消息
* @param int $sender 发送的会员ID(默认自己,0为系统)
* @return array
*/
public static function sendMsg($dialog_id, $reply_id, $type, $msg, $sender = 0)
{
$dialogMsg = self::createInstance([
'dialog_id' => $dialog_id,
'reply_id' => $reply_id,
'userid' => $sender ?: User::userid(),
'type' => $type,
'msg' => $msg,
'read' => 0,
]);
AbstractModel::transaction(function () use ($dialogMsg) {
$dialog = WebSocketDialog::find($dialogMsg->dialog_id);
if (empty($dialog)) {
throw new ApiException('获取会话失败');
}
$dialog->last_at = Carbon::now();
$dialog->save();
$dialogMsg->send = 1;
$dialogMsg->dialog_type = $dialog->type;
$dialogMsg->key = $dialogMsg->generateMsgKey();
$dialogMsg->save();
});
Task::deliver(new WebSocketDialogMsgTask($dialogMsg->id));
return Base::retSuccess('发送成功', $dialogMsg);
}
}