When MWEchoNotifUser::getGlobalMemcKey does not find a global user,
MWEchoNotifUser::getCountsAndTimestamps can return null for 'global' key
Just fall back to the local count/timestamp
Bug: T317330
Change-Id: Ie11b0c93c0a45fb1f873bd26788beaa3d0c6a9d7
Added PreferencesGetIconHook to add an icon on the Special:Preferences section.
Bug: T317419
Depends-On: I6d5730d47e7595b1705787995fe5db2fe734d7f5
Change-Id: Ia5eefad09f533f4654bbda123b4588f246bc1ace
This should result in no visual change to Echo, but allows
us to change the Vector implementation here.
Removes all styling when vectorvisualenhancementnext=1
is enabled.
Bug: T257143
Change-Id: Ice602ba246b51252ff0527a531aa4d5d3baee64e
EventLogging::logEvent() overwrides the $revId parameter when the schema
has been migrated to the Event Platform. Add a note and use a $revId of
-1 to make this consistent with other calls to EventLogging::logEvent()
for schemas that have been migrated to the Event Platform [0].
[0] https://codesearch.wmcloud.org/search/?q=%3A%3AlogEvent%5C(%20%27%5Cw%2B%27%2C%20-1
Bug: T318263
Change-Id: I5fa515d853326307619b044d25c2f672bcb6de63
The compare with DEFAULT_TS_DB does not work, because postgres using
different timestamp format on the database
Bug: T244898
Change-Id: I81fe88f78d94499ae9082a4fb6b1191bd432f977
I kept the "watchlist-change" and "minor-watchlist-change" rules
separate for now since while those are the same pattern the $bundleString
prefix isn't exactly the event type.
Change-Id: I360849870793d7730385dec0f57c92cdabf549d1
It is declared to be able to, but is not checked here expecting an array, resulting in `PHP Notice: Trying to access array offset on value of type bool` if false.
Change-Id: I8b3ebdd3b5e6fea9c84816b890198194951ea5c0
The code would repeatedly read primary, always getting
the same result. Let's avoid this and do the query
at most once.
Change-Id: I4c09b92cac5e4dc7fd8d36f9751be4f9149181cb
MediaWiki does not use foreign keys in the database schema
Additional changes to the schema:
- Mysql and sqlite creates index for each foreign keys, keep the index
to allow fast joins with this columns by explicit statement on new
wikis
- Explicit create statement for the UNIQUE index on column
eps_token_sha256 to make the index more visible on the sql file
- Rename existing index to match the prefix for existing indexes
Bug: T306473
Change-Id: I4bd29a6d0f9515e1a678c2a967799b90ef22f7b9
Replaced WikiPage::newFromID with newFromTitle,
because a Title object exists and could be reused
Bug: T297688
Change-Id: Ide30f259477ed8e0b48df31f5a23cafeb38d7316
Extensions using Phan need to be updated simultaneously with core due
to T308443.
Bug: T308718
Depends-On: Id08a220e1d6085e2b33f3f6c9d0e3935a4204659
Change-Id: I08d1a4122d1c8052d1cdfc6f8249abdaa80067a7
The notification icon was previously server rendered without the
`mw-ui-button` and `mw-ui-quiet` classes and then these classes were
added when the JS kicked in which resulted in a 1px layout shift as
`mw-ui-button` applied a 1px border. `mw-ui-quiet` is needed to make the
border transparent.
Change-Id: If44919798815eb6959e6dd9873db5f0bc533d742
As far as I can tell, EchoIteratorDecorator is functionally identical to
IteratorDecorator from includes/libs/iterators/ in core, so why have a
separate copy? (EchoIteratorDecorator does pass through the return value
of next() or rewind(), if any, but there shouldn't be any per the
Iterator interface.)
Change-Id: Ic763ec19c15f67d9c9b42ebffb88c52b9056ed22
Instead, prepare for UserIdentity being returned by the
UserGroupsChanged hook instead of a User
(If0b3533804aa750faed1d5f96bac98129639586d), check that the user is
local, and convert to User with a UserFactory.
Bug: T255309
Change-Id: I9e246022e7dd15ea1979dbe87b5ab0eedbbde117
Remove sql patches, mention the gerrit change to check version
- Drop field etp_user in Ib57510e6b0e9202a7e035f8ea59955dca8a0b24a
- Add index echo_notification_event in
I99fc31a62b37259d7000577583c8e8a599e400f9
- Maintenance script RemoveOrphanedEvents in
Id42a893be81176f37d9d5e3fd7e850d3a6d42e10
- Add field event_deleted in Iacd098573efd92bb1e3fcd7da4cd40cea9522f15
- Add index echo_notification_user_read_timestamp in
Iacd098573efd92bb1e3fcd7da4cd40cea9522f15
- Add index echo_target_page_page_event in
Iacd098573efd92bb1e3fcd7da4cd40cea9522f15
- Add index echo_event_page_id in
I15abd7c901df58f7eb9e5476d58a1bc12835645e
Change-Id: I227801f850bb9d60488b5dd8b1f84c4c22708f5d
The default timestamp of 00000000000000 cannot represent as timestamp,
because it gets a negative timestamp -00011130000000
This is needed for proper cross-RDBMS support
This reapply a change from I46206e0b3a687dff3168a81cf0020e669133e876,
reverted with I1c8c409b7820512b3e31246a7f3d8c1cf4db209c.
Bug: T244898
Change-Id: I109b783de0a8d60ccb161b280ce5fa09e145017b
Make buttons match the style guide a bit more closely:
* Use bold text
* Add border-radius
* Tweak padding
Change-Id: Idc929f2b7846c71c9a3011376402aaee65b32dcf
This is needed for proper cross-RDBMS support
This reapply a change from I46206e0b3a687dff3168a81cf0020e669133e876,
reverted with I1c8c409b7820512b3e31246a7f3d8c1cf4db209c.
Bug: T244898
Change-Id: I8b1387aff18d88088a993bc099165e9882658ac0
This reverts commit 4eb8fa23e4.
Reason for revert:
Wikimedia\Timestamp\ConvertibleTimestamp::getTimestamp:
The timestamp cannot be represented in the specified format
Bug: T304307
Change-Id: I1c8c409b7820512b3e31246a7f3d8c1cf4db209c
Comments has been duplicating these methods for quite some time for no real reason other than that they're private here.
Duplicating these methods appears to be necessary if and when working with extensions where users can be @mentioned but which are
not implemented as ContentHandler subclasses or otherwise related to regular wikitext pages.
Change-Id: I9c097bab9c5eed8f2399c86897b1f8968126c765
Moved the factory deeper into the code right before the one usage it
still needed a full user object
Narrow done method arguments from User to UserIdentity
and use the identity directly
Change-Id: Ic118f23ef504c7fda892480df61ea68c10915f78
The form UI currently allows selecting Special/Media pages, even though these notifications are not applicable on those pages.
Also:
- Update some comments regarding LoadUserOptions hook
- Remove $titleFactory as MultiTitleFilter doesn't require it any longer
Change-Id: I74f7b0091cb5f47c34a54958656e2bce20a394ec
The section titles are wikitext extracted from inside heading markup
like `== … ==`, so start-of-line markup like `*` should not be parsed.
Bug: T299572
Change-Id: Ie3995b943e5fe20ad86041d6be755f14f32eb01e
$user->saveSettings() happens in AuthManager after the LocalUserCreated
hook finishes running.
Bug: T199393
Change-Id: I1e1826c9f304d7b6c8f3663196a48267a0af0bae
The global function wfWikiID() is deprecated since 1.35 and it's usages
should be replaced with WikiMap::getCurrentWikiId().
Bug: T298059
Change-Id: Ia8cbc992eb80ee6d531cf11bdf2bc06181bce8b0
Replace User::getOption() with UserOptionsLookup::getOption() since this method will be hard-deprecated.
Bug: T296083
Change-Id: I0ecdc63b0344bc4c24196cc5edb3d02b6a7ed615
* Use LinksUpdateComplete instead of the unusual hook
LinksUpdateAfterInsert, which I want to deprecate.
* Fix the fixme regarding revert detection in link events. It's not
pretty but I confirmed that it works with undo and rollback.
Bug: T297011
Change-Id: Ic0092a55e85a3db78db98f1a3dfdce74a7fa2b29
Fixes mapper parsing errors in Logstash because most other producers
generate the response field as an object.
Bug: T239458
Change-Id: I95436dce23efde7f4aa460007187a7544cc36462
If the page is deleted, we won't be able to find it (easily) in
WatchlistChangePresentationModel. Luckily there's support for using
backup data for constructing the title; we just need to pass along the
DBKey and namespace data in the extra params for the event.
Bug: T286192
Change-Id: I8e46de9599a213d9c22ce7bbedefa00528887f59
Without the default the preference is never deleted from the database,
even it was disabled by the user.
Bug: T291748
Change-Id: Id7c79d8e8f0de4f1d3d624a16fc3783fbded7f49
This reverts commit 393aace621.
Reason for revert: namespacing reverted in I1d358d178a3999e82e7a25e17851c3cf60d7ddaa.
Change-Id: If4f7ddf51cbd63dc782e61b389b3f45effc13299
The MWNamespace class has been deprecated in favor of the NamespaceInfo
service. All methods in the MWNamespace should be replaced with the
equivalent methods of the NamespaceInfo service.
Bug: T291389
Change-Id: I396c50c7537b21b2f88dd9433180a8317c5c27f3
explode always returns an array with one item, even for the empty string
Filter out every possible empty string
Change-Id: I0cf0794c0f3e0eedab7e5626e973d8458b28e46a
This extension already depends on MW 1.37, so all these methods exist.
Bug: T254646
Depends-On: I9a90b4f74eb65cd9e20ae9faa6d1949be96543c0
Change-Id: Iebfdd33d3a967c87fbf87382a010a01da5cd4fc8
talk-alert copies the mytalk link but does not disable the icon.
In future this will cause an unexpected icon to appear on the
message bar which is not wanted.
Change-Id: Icd585ad846275a140eb08edf99e1b27257484941
Using 'text' in skins must provide a string,
not a message (see Skin->makeLink)
Avoid also global state by using the SkinTemplate as ContextSource for
the message
Change-Id: Ie736487023d7aeb31cdb1829ba59adeb0ba2b022
It's an attribute, so it is definitely the manager's
responsibility. Unit test case included.
(EchoDataOutputFormatter really calls for becoming a service.)
Change-Id: If2658dd8c107246158cd93cbb233d8af62fd4424
Previously, ApiEchoNotifications returned only events which were
enabled for the `web` notifier type. With this change, the notifier
type or types to consider can be specified by argument to the new
`notifiertypes` parameter.
This change is required so that the apps can request notification
content from the API for push notifications.
Bug: T287909
Change-Id: I2d1155e113f2defb0f02416a7a659c3ee162d3a6
This hook is no longer called in MW 1.36+ by core, and this
extension already requires MW 1.37+
See I5124789fac333a664b73b4b4a1e801ecc0a618ca
Change-Id: I420c2a231cc1c7d6a350a1f04f7c7d4fd942b377
At the moment we support a maximum of 10 tokens per user for subscribing
to push notifications, stored as a basic list that runs out when the
limit is reached. There may, however, be some edge cases where an app
registers a token and then forgets to unregister it (and repeats this 10
times), after which time it will be unable to register any new token.
This changes the token list to behave more like a circular buffer, by
simply deleting the oldest token before inserting the new one. This way
an app could register a new token even in the rare case of forgetting
the previous ten.
Change-Id: I387de63460882e4e56d1aa6db1f78d73a0495208
I believe this is a bug. Individual user's option ($userNotifyTypes)
should not influence the options for all users ($notifyTypes).
This piece of code was first introduced in
I51600bbb26594323831d22bc35d34587ff146d47.
Change-Id: I32d56891ac68e82734813280505b4a57d5427f8c