<?php

namespace addons\fastim\library;

/**
 * 一些变量
 */
class CommonCode
{

    /**
     * FA用户转im用户的认证标志
     * 结合此标志对已登录的FA用户或管理员的`token`加密稍作修改，供fastim-ws自动登录使用
     * @var [type]
     */
    public static $imAuthSign = '117A5B966AE9828E0C5FCE69A5A29FF8';

    // IM游客默认昵称前缀
    public static $imTouristNicknamePrefix = '游客 ';

    // 自动回复消息的前缀
    public static $busyReplyPrefix = '[自动回复] ';

    // 缺省/最大群成员数
    public static $groupMaxUser = 500;

    // 需要进行json编码和解码的消息类型
    public static $messageJsonTypes = [
        'file',
        'link',
        'system',
        'group_apply',
        'group_invitation',
        'kbs_list',
        'group_chat_notice',
        'voice',
        'group_notice',
        'friend_apply'
    ];

    // 客服知识库收录提示
    public static $kbsIncluded    = '看看这些内容对您有帮助么？';
    public static $kbsNotIncluded = '非常抱歉，知识库尚未收录此问题~';
    public static $kbsManualCSR   = '您可以点击以下按钮，联系人工客服代表~';

    // 当用户向智能客服发送以下消息时，不经过知识库处理，直接进入人工客服转接流程
    public static $manualCSRKeywords = [
        '人工',
        '人工客服',
        '真人',
        '机器人？'
    ];

    /**
     * 构建IM游客昵称
     * @param int $suffix 昵称后缀
     * @return str 游客昵称
     */
    public static function buildTouristNickname($suffix)
    {
        return self::$imTouristNicknamePrefix . $suffix;
    }

    /**
     * 非专有消息类型，如：`好友申请`专有于`新朋友`
     * @param boolean $sqlSpeciallyUse SQL组装专用
     * @param boolean $expand 额外要加入的消息类型
     * @return str|array In-sql|非专有消息类型列表
     */
    public static function nonPrivilegedMessage($sqlSpeciallyUse = false, $expand = [])
    {
        $nonPrivilegedMessageArr = [
            'default',
            'image',
            'audio',
            'video',
            'file',
            'link',
            'group_chat_notice',
            'voice'
        ];
        if ($expand) {
            $nonPrivilegedMessageArr = array_merge($nonPrivilegedMessageArr, $expand);
        }

        if ($sqlSpeciallyUse) {
            foreach ($nonPrivilegedMessageArr as $key => &$value) {
                $value = "'" . $value . "'";
            }
            $nonPrivilegedMessageArr = implode(',', $nonPrivilegedMessageArr);
            $nonPrivilegedMessageArr = "IN (" . $nonPrivilegedMessageArr . ")";
        }

        return $nonPrivilegedMessageArr;
    }
}