Jetpack_Tracks_Client::get_anon_id PHP Метод

get_anon_id() статический публичный Метод

Grabs the user's anon id from cookies, or generates and sets a new one
static public get_anon_id ( ) : string
Результат string An anon id for the user
    static function get_anon_id()
    {
        static $anon_id = null;
        if (!isset($anon_id)) {
            // Did the browser send us a cookie?
            if (isset($_COOKIE['tk_ai']) && preg_match('#^[A-Za-z0-9+/=]{24}$#', $_COOKIE['tk_ai'])) {
                $anon_id = $_COOKIE['tk_ai'];
            } else {
                $binary = '';
                // Generate a new anonId and try to save it in the browser's cookies
                // Note that base64-encoding an 18 character string generates a 24-character anon id
                for ($i = 0; $i < 18; ++$i) {
                    $binary .= chr(mt_rand(0, 255));
                }
                $anon_id = 'jetpack:' . base64_encode($binary);
                if (!headers_sent()) {
                    setcookie('tk_ai', $anon_id);
                }
            }
        }
        return $anon_id;
    }

Usage Example

Пример #1
0
function jetpack_tracks_get_identity($user_id)
{
    // Meta is set, and user is still connected.  Use WPCOM ID
    $wpcom_id = get_user_meta($user_id, 'jetpack_tracks_wpcom_id', true);
    if ($wpcom_id && Jetpack::is_user_connected($user_id)) {
        return array('_ut' => 'wpcom:user_id', '_ui' => $wpcom_id);
    }
    // User is connected, but no meta is set yet.  Use WPCOM ID and set meta.
    if (Jetpack::is_user_connected($user_id)) {
        $wpcom_user_data = Jetpack::get_connected_user_data($user_id);
        add_user_meta($user_id, 'jetpack_tracks_wpcom_id', $wpcom_user_data['ID'], true);
        return array('_ut' => 'wpcom:user_id', '_ui' => $wpcom_user_data['ID']);
    }
    // User isn't linked at all.  Fall back to anonymous ID.
    $anon_id = get_user_meta($user_id, 'jetpack_tracks_anon_id', true);
    if (!$anon_id) {
        $anon_id = Jetpack_Tracks_Client::get_anon_id();
        add_user_meta($user_id, 'jetpack_tracks_anon_id', $anon_id, false);
    }
    if (!isset($_COOKIE['tk_ai']) && !headers_sent()) {
        setcookie('tk_ai', $anon_id);
    }
    return array('_ut' => 'anon', '_ui' => $anon_id);
}