/** * Procedurally build a Tracks Event Object. * NOTE: Use this only when the simpler tracks_record_event() function won't work for you. * @param $identity WP_user object * @param string $event_name The name of the event * @param array $properties Custom properties to send with the event * @param int $event_timestamp_millis The time in millis since 1970-01-01 00:00:00 when the event occurred * @return \Tracks_Event|\WP_Error */ function tracks_build_event_obj($user, $event_name, $properties = array(), $event_timestamp_millis = false) { $anon_id = get_user_meta($user->ID, 'jpo_tracks_anon_id', true); if (!$anon_id) { $anon_id = Tracks_Client::get_anon_id(); add_user_meta($user->ID, 'jpo_tracks_anon_id', $anon_id, false); } if (!isset($_COOKIE['tk_ai']) && !headers_sent()) { setcookie('tk_ai', $anon_id); } $identity = array('_ut' => 'anon', '_ui' => $anon_id); $properties['user_lang'] = $user->get('WPLANG'); $blog_details = array('blog_lang' => isset($properties['blog_lang']) ? $properties['blog_lang'] : get_bloginfo('language')); $timestamp = $event_timestamp_millis !== false ? $event_timestamp_millis : round(microtime(true) * 1000); $timestamp_string = is_string($timestamp) ? $timestamp : number_format($timestamp, 0, '', ''); return new Tracks_Event(array_merge($blog_details, (array) $properties, $identity, array('_en' => $event_name, '_ts' => $timestamp_string))); }
function 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 = 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); }