EBernhardson has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/246144

Change subject: Move Schema:Search from CirrusSearch
......................................................................

Move Schema:Search from CirrusSearch

This schema was broken when the hook it used to inject into
pages was changed. To get it back into action on all pages
regardless of current varnish cache it is being moved into
this repository as part of ext.wikimediaEvents.

I additionally did some light refactoring to reduce the
dependencies that are loaded for all users and made them
only load for the 1 in 1000 users chosen to participate in
the schema.

Bug: T115031
Change-Id: Ie486d5eb902b0dc0c76dcb85f2366fd4d655ba57
---
M WikimediaEvents.php
A modules/ext.wikimediaEvents.search.js
2 files changed, 60 insertions(+), 1 deletion(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikimediaEvents 
refs/changes/44/246144/1

diff --git a/WikimediaEvents.php b/WikimediaEvents.php
index 67e9018..544a92e 100644
--- a/WikimediaEvents.php
+++ b/WikimediaEvents.php
@@ -103,9 +103,10 @@
                        'ext.wikimediaEvents.searchSuggest.js',
                        'ext.wikimediaEvents.statsd.js',
                        'ext.wikimediaEvents.searchSatisfaction.js',
+                       'ext.wikimediaEvents.search.js',
                ),
                'dependencies' => array(
-                       'mediawiki.user', // needed by searchSuggest.js
+                       'mediawiki.user', // needed by search.js, 
searchSuggest.js
                        'mediawiki.Uri', // needed by searchSatisfaction.js
                ),
                'localBasePath' => __DIR__ . '/modules',
diff --git a/modules/ext.wikimediaEvents.search.js 
b/modules/ext.wikimediaEvents.search.js
new file mode 100644
index 0000000..63716d4
--- /dev/null
+++ b/modules/ext.wikimediaEvents.search.js
@@ -0,0 +1,58 @@
+/*global mw:true */
+( function ( $ ) {
+       'use strict';
+
+       var sessionStartTime, defaults,
+               getRandomToken = function () {
+                       return mw.user.generateRandomSessionId() + ( new Date() 
).getTime().toString();
+               },
+               oneIn = function ( populationSize ) {
+                       var rand = parseInt( 
mw.user.generateRandomSessionId().slice( 0, 13 ), 16 );
+                       return rand % populationSize === 0;
+               },
+               isLoggingEnabled = mw.config.get( 
'wgCirrusSearchEnableSearchLogging' );
+
+       // For 1 in a 1000 users the metadata about interaction
+       // with the search form (absent search terms) is event logged.
+       // See https://meta.wikimedia.org/wiki/Schema:Search
+       if ( !isLoggingEnabled || !oneIn( 1000 ) ) {
+               return;
+       }
+
+       depsPromise = mw.loader.using( [
+               'schema.Search',
+               'ext.eventLogging',
+       ] );
+
+       defaults = {
+               platform: 'desktop',
+               userSessionToken: getRandomToken(),
+               searchSessionToken: getRandomToken()
+       };
+
+       mw.trackSubscribe( 'mediawiki.searchSuggest', function ( topic, data ) {
+               var loggingData = {
+                       action: data.action
+               };
+
+               if ( data.action === 'session-start' ) {
+                       // update session token if it's a new search
+                       defaults.searchSessionToken = getRandomToken();
+                       sessionStartTime = this.timeStamp;
+               } else if ( data.action === 'impression-results' ) {
+                       loggingData.numberOfResults = data.numberOfResults;
+                       loggingData.resultSetType = data.resultSetType;
+                       loggingData.timeToDisplayResults = Math.round( 
this.timeStamp - sessionStartTime );
+               } else if ( data.action === 'click-result' ) {
+                       loggingData.clickIndex = data.clickIndex;
+                       loggingData.numberOfResults = data.numberOfResults;
+               } else if ( data.action === 'submit-form' ) {
+                       loggingData.numberOfResults = data.numberOfResults;
+               }
+               loggingData.timeOffsetSinceStart = Math.round( this.timeStamp - 
sessionStartTime ) ;
+               $.extend( loggingData, defaults );
+               depsPromise.then( function () {
+                       mw.eventLog.logEvent( 'Search', loggingData );
+               } );
+       } );
+}( jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/246144
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie486d5eb902b0dc0c76dcb85f2366fd4d655ba57
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikimediaEvents
Gerrit-Branch: wmf/1.27.0-wmf.2
Gerrit-Owner: EBernhardson <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to