function avatar($user_name, $uid = 0, $size = 120)
{
    global $_G;
    if (!$user_name) {
        return '/assets/global/images/avatar.png';
    }
    if ($uid > 0 && $uid == $_G['uid']) {
        if ($_G['member']['picurl']) {
            return $_G['member']['picurl'];
        }
    }
    $name = $uid;
    if (!$uid) {
        $name = $_G['uid'];
    }
    if (!$uid) {
        $name = cutstr(md5($user_name), 5, '');
    }
    $path = '/assets/' . $_G['setting']['template'] . '/avatars/' . $name . '.png';
    if (file_exists(ROOT_PATH . $path)) {
        return $path;
    }
    $dir = dirname(ROOT_PATH . $path);
    if (!is_dir($dir)) {
        dmkdir($dir);
    }
    $atavar_type = $_G['setting']['avatar_type'];
    if ($atavar_type == 1) {
        if (!class_exists('MDAvtars')) {
            require_once ROOT_PATH . "web/lib/md_avtars/MaterialDesign.Avatars.class.php";
        }
        $Avatar = new MDAvtars($user_name, $size);
        $Avatar->Save(ROOT_PATH . $path, $size);
        $Avatar->Free();
    } elseif ($atavar_type == 2) {
        if (!class_exists('Identicon')) {
            require_once ROOT_PATH . "web/lib/generator_avatar/Identicon.php";
        }
        $identicon = new Identicon();
        $identicon->save($user_name, ROOT_PATH . $path, $size);
    }
    return $path;
}