Aude has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/356784 )

Change subject: Update Wikidata - Fix default echo notification preference
......................................................................

Update Wikidata - Fix default echo notification preference

Bug: T166657
Change-Id: I24fdcce33e756f8cfe72f24ce5392b0b139cd95a
---
M composer.lock
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php
M vendor/composer/installed.json
5 files changed, 162 insertions(+), 110 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/84/356784/1

diff --git a/composer.lock b/composer.lock
index 931e9f8..0a41020 100644
--- a/composer.lock
+++ b/composer.lock
@@ -935,7 +935,7 @@
             "support": {
                 "irc": "irc://irc.freenode.net/wikidata"
             },
-            "time": "2017-05-05 19:40:03"
+            "time": "2017-05-05T19:40:03+00:00"
         },
         {
             "name": "wikibase/constraints",
@@ -1000,7 +1000,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2017-05-11 12:45:23"
+            "time": "2017-05-10T14:34:52+00:00"
         },
         {
             "name": "wikibase/data-model",
@@ -1405,7 +1405,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/989/";
             },
-            "time": "2017-05-08 09:23:39"
+            "time": "2017-05-08T09:23:39+00:00"
         },
         {
             "name": "wikibase/serialization-javascript",
@@ -1454,12 +1454,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "939eada2a2ac3f67171e851d11f3b691167d81de"
+                "reference": "de5c06f858d4d6e1543b6101ee8488d457e9f750"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/939eada2a2ac3f67171e851d11f3b691167d81de";,
-                "reference": "939eada2a2ac3f67171e851d11f3b691167d81de",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/de5c06f858d4d6e1543b6101ee8488d457e9f750";,
+                "reference": "de5c06f858d4d6e1543b6101ee8488d457e9f750",
                 "shasum": ""
             },
             "require": {
@@ -1534,7 +1534,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2017-05-09T13:33:41+00:00"
+            "time": "2017-06-01T16:50:44+00:00"
         },
         {
             "name": "wikibase/wikimedia-badges",
@@ -1585,7 +1585,7 @@
             "support": {
                 "irc": "irc://irc.freenode.net/wikidata"
             },
-            "time": "2017-05-05 19:40:03"
+            "time": "2017-05-05T19:40:03+00:00"
         },
         {
             "name": "wikimedia/assert",
@@ -1637,7 +1637,7 @@
             "version": "v1.0.5",
             "source": {
                 "type": "git",
-                "url": "https://gerrit.wikimedia.org/r/p/purtle";,
+                "url": "https://github.com/wikimedia/purtle.git";,
                 "reference": "4fd41eb7d8db551c0c4895fd1a917240907d7244"
             },
             "require": {
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index 646bbc0..850a46e 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -458,7 +458,7 @@
 
                // These hooks should only be run if we use the Echo extension
                if ( class_exists( EchoEvent::class ) ) {
-                       $wgHooks['UserGetDefaultOptions'][] = 
EchoNotificationsHandlers::class . '::onUserGetDefaultOptions';
+                       $wgHooks['LocalUserCreated'][] = 
EchoNotificationsHandlers::class . '::onLocalUserCreated';
                        $wgHooks['WikibaseHandleChange'][] = 
EchoNotificationsHandlers::class . '::onWikibaseHandleChange';
                }
 
diff --git 
a/extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php 
b/extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php
index 35842dc..3c0ff36 100644
--- a/extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php
+++ b/extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php
@@ -165,22 +165,24 @@
        }
 
        /**
-        * Handler for UserGetDefaultOptions hook
-        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/UserGetDefaultOptions
-        *
-        * @param bool[] &$defaultOptions Array of preference keys and their 
default values.
+        * Handler for LocalUserCreated hook.
+        * @see https://www.mediawiki.org/wiki/Manual:Hooks/LocalUserCreated
+        * @param User $user User object that was created.
+        * @param bool $autocreated True when account was auto-created
         */
-       public static function onUserGetDefaultOptions( array &$defaultOptions 
) {
+       public static function onLocalUserCreated( User $user, $autocreated ) {
                $self = self::newFromGlobalState();
-               $self->doUserGetDefaultOptions( $defaultOptions );
+               $self->doLocalUserCreated( $user, $autocreated );
        }
 
        /**
-        * @param bool[] &$defaultOptions
+        * @param User $user
+        * @param bool $autocreated
         */
-       public function doUserGetDefaultOptions( array &$defaultOptions ) {
+       public function doLocalUserCreated( User $user, $autocreated ) {
                if ( $this->sendEchoNotification === true ) {
-                       
$defaultOptions['echo-subscriptions-web-wikibase-action'] = true;
+                       $user->setOption( 
'echo-subscriptions-web-wikibase-action', true );
+                       $user->saveSettings();
                }
        }
 
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php
index c120e44..c32418a 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php
@@ -5,6 +5,7 @@
 use EchoEvent;
 use MediaWikiTestCase;
 use Title;
+use User;
 use Wikibase\ChangeRow;
 use Wikibase\Client\Hooks\EchoNotificationsHandlers;
 use Wikibase\Client\RepoLinker;
@@ -219,4 +220,53 @@
                }
        }
 
+       public function localUserCreatedProvider() {
+               return [
+                       'disabled no auto' => [
+                               'enabled' => false,
+                               'times' => 0,
+                               'auto' => false,
+                       ],
+                       'disabled auto' => [
+                               'enabled' => false,
+                               'times' => 0,
+                               'auto' => true,
+                       ],
+                       'enabled no auto' => [
+                               'enabled' => true,
+                               'times' => 1,
+                               'auto' => false,
+                       ],
+                       'enabled auto' => [
+                               'enabled' => true,
+                               'times' => 1,
+                               'auto' => true,
+                       ]
+               ];
+       }
+
+       /**
+        * @dataProvider localUserCreatedProvider
+        */
+       public function testLocalUserCreated( $enabled, $times, $auto ) {
+               $handlers = new EchoNotificationsHandlers(
+                       $this->repoLinker,
+                       'enwiki',
+                       $enabled,
+                       '',
+                       'repoSiteName'
+               );
+
+               $user = $this->getMockBuilder( User::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $user->expects( $this->exactly( $times ) )
+                       ->method( 'setOption' );
+               $user->expects( $this->exactly( $times ) )
+                       ->method( 'saveSettings' );
+
+               $handlers->doLocalUserCreated( $user, $auto );
+       }
+
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 6cd183c..65ad147 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -162,7 +162,7 @@
         "version_normalized": "1.0.5.0",
         "source": {
             "type": "git",
-            "url": "https://gerrit.wikimedia.org/r/p/purtle";,
+            "url": "https://github.com/wikimedia/purtle.git";,
             "reference": "4fd41eb7d8db551c0c4895fd1a917240907d7244"
         },
         "require": {
@@ -1583,96 +1583,6 @@
         }
     },
     {
-        "name": "wikibase/wikibase",
-        "version": "dev-wmf/1.30.0-wmf.1",
-        "version_normalized": "dev-wmf/1.30.0-wmf.1",
-        "source": {
-            "type": "git",
-            "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "939eada2a2ac3f67171e851d11f3b691167d81de"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/939eada2a2ac3f67171e851d11f3b691167d81de";,
-            "reference": "939eada2a2ac3f67171e851d11f3b691167d81de",
-            "shasum": ""
-        },
-        "require": {
-            "data-values/common": "^0.3.0",
-            "data-values/data-types": "^1.0.0",
-            "data-values/data-values": "^1.0.0",
-            "data-values/geo": "^1.2.1",
-            "data-values/interfaces": "^0.2.0|^0.1.5",
-            "data-values/javascript": "^0.8.3",
-            "data-values/number": "^0.8.2",
-            "data-values/serialization": "^1.2.0",
-            "data-values/time": "^0.8.4",
-            "data-values/value-view": "^0.19.1",
-            "diff/diff": "^2.0.0",
-            "php": ">=5.5.9",
-            "wikibase/data-model": "^7.0.0",
-            "wikibase/data-model-javascript": "^3.0.1",
-            "wikibase/data-model-serialization": "^2.1.0",
-            "wikibase/data-model-services": "^3.7.0",
-            "wikibase/internal-serialization": "^2.2.0",
-            "wikibase/javascript-api": "^2.2.0",
-            "wikibase/serialization-javascript": "^2.0.8",
-            "wikimedia/purtle": "^1.0.3"
-        },
-        "conflict": {
-            "mediawiki/mediawiki": "<1.25"
-        },
-        "require-dev": {
-            "jakub-onderka/php-console-highlighter": "0.3.2",
-            "jakub-onderka/php-parallel-lint": ">=0.3 <0.10",
-            "wikibase/wikibase-codesniffer": "^0.1.0"
-        },
-        "time": "2017-05-09T13:33:41+00:00",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "client/includes/",
-                "client/WikibaseClient.hooks.php",
-                "client/tests/phpunit/MockClientStore.php",
-                "lib/includes/",
-                "lib/WikibaseLib.hooks.php",
-                "lib/maintenance/",
-                "repo/includes/",
-                "repo/maintenance/",
-                "repo/Wikibase.hooks.php"
-            ],
-            "psr-4": {
-                "Wikibase\\Client\\": "client/includes",
-                "Wikibase\\Client\\Tests\\": "client/tests/phpunit/includes",
-                "Wikibase\\Lib\\": "lib/includes",
-                "Wikibase\\Lib\\Tests\\": "lib/tests/phpunit",
-                "Wikibase\\Repo\\": "repo/includes",
-                "Wikibase\\Repo\\Tests\\": "repo/tests/phpunit/includes",
-                "Wikibase\\View\\": "view/src",
-                "Wikibase\\View\\Tests\\": "view/tests/phpunit"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "authors": [
-            {
-                "name": "The Wikidata team"
-            }
-        ],
-        "description": "Structured data repository for MediaWiki",
-        "homepage": "http://wikiba.se";,
-        "keywords": [
-            "wikibase",
-            "wikibaseclient",
-            "wikibaselib",
-            "wikibaserepo",
-            "wikidata"
-        ]
-    },
-    {
         "name": "wikibase/constraints",
         "version": "dev-wmf/1.30.0-wmf.1",
         "version_normalized": "dev-wmf/1.30.0-wmf.1",
@@ -1738,5 +1648,95 @@
         "support": {
             "issues": "https://phabricator.wikimedia.org/project/profile/1202/";
         }
+    },
+    {
+        "name": "wikibase/wikibase",
+        "version": "dev-wmf/1.30.0-wmf.1",
+        "version_normalized": "dev-wmf/1.30.0-wmf.1",
+        "source": {
+            "type": "git",
+            "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
+            "reference": "de5c06f858d4d6e1543b6101ee8488d457e9f750"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/de5c06f858d4d6e1543b6101ee8488d457e9f750";,
+            "reference": "de5c06f858d4d6e1543b6101ee8488d457e9f750",
+            "shasum": ""
+        },
+        "require": {
+            "data-values/common": "^0.3.0",
+            "data-values/data-types": "^1.0.0",
+            "data-values/data-values": "^1.0.0",
+            "data-values/geo": "^1.2.1",
+            "data-values/interfaces": "^0.2.0|^0.1.5",
+            "data-values/javascript": "^0.8.3",
+            "data-values/number": "^0.8.2",
+            "data-values/serialization": "^1.2.0",
+            "data-values/time": "^0.8.4",
+            "data-values/value-view": "^0.19.1",
+            "diff/diff": "^2.0.0",
+            "php": ">=5.5.9",
+            "wikibase/data-model": "^7.0.0",
+            "wikibase/data-model-javascript": "^3.0.1",
+            "wikibase/data-model-serialization": "^2.1.0",
+            "wikibase/data-model-services": "^3.7.0",
+            "wikibase/internal-serialization": "^2.2.0",
+            "wikibase/javascript-api": "^2.2.0",
+            "wikibase/serialization-javascript": "^2.0.8",
+            "wikimedia/purtle": "^1.0.3"
+        },
+        "conflict": {
+            "mediawiki/mediawiki": "<1.25"
+        },
+        "require-dev": {
+            "jakub-onderka/php-console-highlighter": "0.3.2",
+            "jakub-onderka/php-parallel-lint": ">=0.3 <0.10",
+            "wikibase/wikibase-codesniffer": "^0.1.0"
+        },
+        "time": "2017-06-01T16:50:44+00:00",
+        "type": "mediawiki-extension",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "client/includes/",
+                "client/WikibaseClient.hooks.php",
+                "client/tests/phpunit/MockClientStore.php",
+                "lib/includes/",
+                "lib/WikibaseLib.hooks.php",
+                "lib/maintenance/",
+                "repo/includes/",
+                "repo/maintenance/",
+                "repo/Wikibase.hooks.php"
+            ],
+            "psr-4": {
+                "Wikibase\\Client\\": "client/includes",
+                "Wikibase\\Client\\Tests\\": "client/tests/phpunit/includes",
+                "Wikibase\\Lib\\": "lib/includes",
+                "Wikibase\\Lib\\Tests\\": "lib/tests/phpunit",
+                "Wikibase\\Repo\\": "repo/includes",
+                "Wikibase\\Repo\\Tests\\": "repo/tests/phpunit/includes",
+                "Wikibase\\View\\": "view/src",
+                "Wikibase\\View\\Tests\\": "view/tests/phpunit"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "GPL-2.0+"
+        ],
+        "authors": [
+            {
+                "name": "The Wikidata team"
+            }
+        ],
+        "description": "Structured data repository for MediaWiki",
+        "homepage": "http://wikiba.se";,
+        "keywords": [
+            "wikibase",
+            "wikibaseclient",
+            "wikibaselib",
+            "wikibaserepo",
+            "wikidata"
+        ]
     }
 ]

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I24fdcce33e756f8cfe72f24ce5392b0b139cd95a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.30.0-wmf.1
Gerrit-Owner: Aude <aude.w...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to