/** * Annotate the event with all relevant info. * @param mixed $event Object or (flat) array * @return mixed The transformed event array or WP_Error on failure. */ static function validate_and_sanitize($event) { $event = (object) $event; // Required if (!$event->_en) { return new WP_Error('invalid_event', 'A valid event must be specified via `_en`', 400); } // delete non-routable addresses otherwise geoip will discard the record entirely if (property_exists($event, '_via_ip') && preg_match('/^192\\.168|^10\\./', $event->_via_ip)) { unset($event->_via_ip); } $validated = array('browser_type' => Jetpack_Tracks_Client::BROWSER_TYPE, '_aua' => Jetpack_Tracks_Client::get_user_agent()); $_event = (object) array_merge((array) $event, $validated); // If you want to blacklist property names, do it here. // Make sure we have an event timestamp. if (!isset($_event->_ts)) { $_event->_ts = Jetpack_Tracks_Client::build_timestamp(); } return $_event; }