Go to file
Umherirrender dc84f149bc SpecialGadgetUsage: Fix query for postgres (and improve for mariadb)
The column user_properties.up_value is a text based type in all rdbms.
postgres does not autoconvert strings to numbers, so SUM( up_value )
gives an error when running on postgres.
The use of SUM( up_value ) is also problematic on mariadb/sqlite, as
up_value can be set to any number via the Action API's options module.
This value goes into the sum and produce a wrong result. Using a
non-number value allows to remove the value from the sum and that also
produce a wrong result.

Change the query to exclude the rows which disables a gadget and just
count the "active" ones. Typically there are only rows to disable a
gadget, when the gadget is marked as default, but default gadget are
displayed with the message 'gadgetusage-default' and does not needs to
be counted. In case a gadget was default in the past, there could always
such rows, so be safe and exclude them. That means it is safe to only
count for "active" gadget option usage.
This also allows to remove the up_value condition on the join to
querycachetwo as only rows to enable a gadget are now selected and get
joined to find the active users.

For the join condition use an assoc array, as for database condition the
database class is quoting the value of that array, if that is a string.
In postgres the " is used to quote columns or tables, but not values,
that gives a query error on postgres about the condition.
fixed when using the array style and not "raw" sql.

Define the condition only once as it should be the same for both
queries. Use the new IDatabase::expr function to write that sql piece.

Change-Id: I8dfc3fd5adc4c4bdabceaab20c4b37ffd48e6bee
2024-01-08 18:59:45 +01:00
.phan Use HookHandlers for CodeEditor hook 2023-08-16 05:30:40 +00:00
i18n Localisation updates from https://translatewiki.net. 2024-01-05 09:12:47 +01:00
includes SpecialGadgetUsage: Fix query for postgres (and improve for mariadb) 2024-01-08 18:59:45 +01:00
tests/phpunit Use namespaced classes 2024-01-06 17:45:07 +01:00
.eslintrc.json build: Update linters 2023-07-01 14:26:21 +01:00
.gitignore Fix typos, update gitignore with OS tempfiles 2020-03-11 21:24:22 +05:30
.gitreview Whoops, track not trace 2016-10-24 17:02:35 -07:00
.phpcs.xml Add missing @var and improve documentation 2020-12-18 00:21:49 +01:00
CODE_OF_CONDUCT.md build: Updating mediawiki/phan-taint-check-plugin to 1.3.0 2018-08-19 12:48:57 +00:00
composer.json build: Add --allow-polyfill-parser to phan command 2023-12-13 03:06:33 +00:00
COPYING Add COPYING 2014-01-16 02:31:28 +00:00
extension.json Use namespaced classes 2024-01-06 17:45:07 +01:00
Gadgets.alias.php Translate Gadget aliases and namespaces into Uzbek (uz) 2023-05-17 12:21:47 +02:00
Gadgets.namespaces.php Add Sicilian namespace translations 2023-05-26 14:01:57 +02:00
Gruntfile.js build: Update linters 2023-07-01 14:26:21 +01:00
package-lock.json build: Update linters 2023-07-01 14:26:21 +01:00
package.json build: Update linters 2023-07-01 14:26:21 +01:00
README.md Make repo configuration independent of ObjectFactory specs 2023-12-12 13:15:31 +00:00

Gadgets

The Gadgets extension provides a way for users to pick JavaScript or CSS based "gadgets" that other wiki users provide.

See https://www.mediawiki.org/wiki/Extension:Gadgets for more documentation.

The Gadgets extension was originally written by Daniel Kinzler in 2007 and is released under the GNU General Public Licence (GPL).

Prerequisites

This version of Gadgets requires MediaWiki 1.27 or later. To get a version compatible with an earlier MediaWiki release, visit ExtensionDistributor/Gadgets.

Installing

Copy the Gadgets directory into the extensions folder of your MediaWiki installation. Then add the following lines to your LocalSettings.php file (near the end):

wfLoadExtension( 'Gadgets' );

Usage

See https://www.mediawiki.org/wiki/Extension:Gadgets#Usage

Caveats

  • Gadgets do not apply to Special:Preferences, Special:UserLogin and Special:ResetPass so users can always disable any broken gadgets they may have enabled, and malicious gadgets will be unable to steal passwords.

Configuration

  • $wgGadgetsRepo: configures which GadgetRepo implementation will be used to source gadgets from. Currently, "definition" mode is the recommended setting and default. The "json" mode is not ready for production usage yet.
  • $wgSpecialGadgetUsageActiveUsers: configures whether or not to show active user stats on Special:GadgetUsage. True by default.