Extension:WSStats

Version 1.0.8 will be the last release for MediaWiki Version 1.35.x

Version 2.0.0 is for MediaWiki version 1.39.x.

WSStats extension counts pageviews by user using the before page display hook. There is no client JavaScript run or any trackers installed.


 * Version 2.0.0 : REL 1.39 only. Added statistics for Special Pages. Lua equivalent functions for statistics. Special Page added.
 * Version 1.0.8 : Removed global references
 * Version 1.0.7 : Added statistics over time for pages
 * Version 1.0.6 : Fixed path to sql tables
 * Version 1.0.5 : Rewrote database queries to use MW database abstraction layer. extension manifest 2 and all user input is validated.
 * Version 1.0.4 : Security fix! Unhandled user input. Update to 1.0.4 as soon as possible.
 * Version 1.0.3 : Top X list changed as it no longer shows deleted pages
 * Version 1.0.2 : Catched request for title on a non-existing page
 * Version 1.0.1 : Code clean-up and i18n messages added
 * Version 1.0.0 : Added support for setting limit and export as WSArrays
 * Version 0.8.2 : Added support for filtering only unique visitors
 * Version 0.8.1 : adminlinks added
 * Version 0.8.0 : Clean Up
 * Version 0.1.9 : Fetch Title changes
 * Version 0.1.8 : Removed dbprefix class variable
 * Version 0.1.7 : Show top visited pages with date range. Show as csv option
 * Version 0.1.6 : Filter results on user or anonymous
 * Version 0.1.5 : Added more configuration options
 * Version 0.1.3 : Fixed error in MySQL
 * Version 0.1.2 : Skip usergroup results
 * Version 0.1.1 : Initial release

Upgrading
If you are upgrading from a version before 2.0, then you must visit the Special Page : Special:WSStats. If the database tables need updating, it will show you there and you can update the tables. You will have to update the tables for statistics to be accurate. This is because we now allow to get statistics based on page titles, while the previous version of WSStats did not store titles.

Configuration parameters
By default Anonymous users and sysops are skipped from stats recording. To change this add following to LocalSettings.php..

Start with:

Allow statistics for anonymous users..

By default Special Pages are counted as well. To omit Special pages set the following :

Skip users in the following groups..

Skip page with certain text in their referer url. Default action=edit and veaction=edit are ignored. This configuration option is case sensitive.

Using the parser functions
To retrieve statistics you can use the following parser function :

Ask number of hits for page id : 9868

This returns a number

You can also ask for statistics based on title, instead of Page Id's.

Ask number of hits for page with title : Main Page

This returns a number

''About dates. Dates are in a format of YYYY-MM-DD. Internally WSStats works with Date and Time. This means a date of 2023-10-30 will internally become 2023-10-30 00:00:00. You can also search by date and time. See the example about this.''

Ask number of hits for page id : 714 since start date 2018-09-01

This returns a number

Ask number of hits for page id : 714 since start date 2018-02-01 and end date 2018-09-08

This returns a number

You can also get statistics based on date and time Get number of hits for page id : 714 from start date 2023-10-30 14:00:00 and end date 2023-10-30 16:00:00

This returns a number

Filter results on registered users or anonymous users

This returns a number

This returns a number

Get the top ten pages sorted by hits

This returns a table

Get the top ten pages sorted by hits in a date range

This returns a table from 2018-02-01 00:00:00 up to 2018-02-08 00:00:00 ( so not including 2018-02-08 )

Get the top ten pages sorted by hits and show as csv

This returns a string with the results comma seperated (e.g. 1230;51,1;17,921)

Get the top ten pages sorted by hits and insert in a WSArrays variable

''This returns an empty string and sets the WSArray key. Nothing happens when the WSArrays extension is not installed''

Get the result from WSArrays:
 * name= }}

Get statistics of one page during a time period and limit to 100 results

New since version 1.0.7

This returns a table

For all queries you can add a unique identifier to only return unique views

This returns a table

This returns a table

For all top ten stats queries you can add limit to get less or more than ten results

This returns a table

Using the lua functions
New in version 2.0

There are two Lua function you can use.

For the parser function that returns a table ( {{#wsstats:stats.. ) you can use wsstats.stats.

For the parser function that returns a number ( {{wsstats:... ) you can use wsstats.stat;

All the arguments are the same as for the parser functions, except :


 * start date = startDate
 * end date = endDate

Example
If you create a Module called WSStats and you add the following content : lua local p = {}

function p.stats(frame) stats = mw.wsstats.stats( frame.args ) return stats

end

function p.stat(frame) stat = mw.wsstats.stat( frame.args ) return stat

end

return p

You can then do calls like : // returns a Lua table

Date format to use

If no statistics the result will be 0