Commit graph

1001 commits

Author SHA1 Message Date
Amir Sarabadani 66abf96b79 Fix static cache access
Currently, DT is making more than 30 exact queries back to back in every
request. It is clear the caching is completely broken.

It is because when the properties don't exist (majority of the cases),
it returns an empty array making the caching noop.

Tested in mwdebug1002 and it fixes the issue.

Bug: T364693
Change-Id: I182ae121999df1a04cfb7399bc49891587a37074
2024-05-13 09:49:11 +00:00
Bartosz Dziewoński efe2f4b3d8 Fix PHP getTitleFromUrl() when $wgArticlePath is '/$1'
In this case, the generated regexp would match the '/local' part in
the generated URL. Prefixing 'https://local' is no longer necessary
since 10899af666.

Add tests for this, and some tests to cover T261711 as well.

Bug: T358321
Change-Id: Idf54deba13f30b799b7b8d17de1897bc90f95701
2024-05-11 16:46:03 +00:00
Paladox de53dd3689 Fix "Argument #3 ($isSectionEditable) must be of type bool, null given"
On master, this was removed with [0], but this is a breaking change.

[0] f8b76afef3

Change-Id: I33fd737735f4e3d96180ddbc0f76896f6d18f18c
2024-02-09 13:48:12 +00:00
jenkins-bot f9f9bf11f3 Merge "Always pass whole OutputPage (as IContextSource) to postprocess functions" 2023-10-09 18:05:54 +00:00
jenkins-bot f8b757bcae Merge "ThreadItemStore: Fix rows with itr_items_id=0 corrupted by T339882" 2023-10-09 15:34:55 +00:00
Ed Sanders 4447b6d201 Always pass whole OutputPage (as IContextSource) to postprocess functions
Change-Id: I07b312b8c00f9b5d20e285874ed0a0153949dd18
2023-10-09 15:41:28 +01:00
jenkins-bot eef701da1e Merge "Add null check for str_starts_with" 2023-10-06 19:37:12 +00:00
Umherirrender 3aadcace2b Add null check for str_starts_with
Only needed for phan, under php8.1 this internal
function is deprecated about null.
The property $subscriptionName is not null when $subscriptionTitle is
not null and current code is safe, but phan cannot see the dependency
between both properties

Change-Id: I9e67309ec25a70c5de91d7f3e8f18447f205a4e4
2023-10-06 18:49:28 +02:00
Kosta Harlan 351891a063 overflow menu: Display menu next to comments on mobile
Why:

- We want to provide contextual actions adjacent to comments, not just
  topic headings.

What:

- Consolidate the logic for embedding the overflow menu button HTML into
  a function, and add this for both topic and comment items.
- For this patch, this is done only for mobile; in a follow-up patch, we
  can add support for desktop
- This doesn't use a feature flag as 1) no one is implementing the
  DiscussionTools hook yet, 2) the 'edit' menu item is disabled at the
  comment level. Merging this change would be a no-op until an extension
  implements the DiscussionToolsAddOverflowMenuItemsHook.

Bug: T342251
Change-Id: I15a151f151e2fa04398876b559d93d45c42f6ef6
2023-10-05 15:50:38 +01:00
Kosta Harlan c6c7dd2fb0 overflow menu: Add hooks for registering and interacting with items
Why:

- We want to allow extensions to register interactive menu items in the
  overflow menu.

What:

- Create a PHP hook to allow extensions to provide menu items
  for rendering in the overflow menu
  - The hook allows for registering resource loader modules required by
    the menu item
  - The hook passes in some contextual information, like the thread
    item data, context source object, and if the page is editable
- Create a JS hook that fires when a user selects one of the menu items
- Example implementation: Ie9afbedb4f24cbd75eb48bb21dc9f6d8d732d853

Misc:

- Remove b/c code that existed to handle a transitional period where
  JSON encoded overflow menu data did not necessarily exist in the
  parser cache
- Rename code instances of ellipsis button / data / menu to refer to
  "overflow menu"
  - Some renames will have to wait until parser cache is updated; these
    are noted with TODOs

Bug: T342251
Change-Id: I5f2a51791f8ba7619d1399a4b93111e9bb44e172
2023-10-05 15:50:33 +01:00
jenkins-bot 70c62667ce Merge "Turn comment timestamps into permalinks" 2023-10-02 21:06:09 +00:00
Bartosz Dziewoński 9fb16a40dc HookUtils: Fix checking page props
Follow-up to b4def00ed0.

Bug: T347878
Change-Id: Ia834b0f8d5cf48fce85e83af48d9fdcc789fc8e2
2023-10-02 16:59:57 +02:00
Ed Sanders b63884f561 Turn comment timestamps into permalinks
Bug: T275729
Change-Id: Ica9cfd9743a67fce170e8b078016fa79bf6fbb84
2023-10-02 14:53:47 +01:00
jenkins-bot 82bab7a4e6 Merge "Show new topics subscription button on history pages" 2023-09-26 17:40:55 +00:00
jenkins-bot e0b34b46d8 Merge "HookUtils: Fetch all needed props in one query" 2023-09-24 00:12:58 +00:00
Bartosz Dziewoński b4def00ed0 HookUtils: Fetch all needed props in one query
Bug: T347123
Change-Id: I54e5dfeb8ee07f0c3b6df4bffd2c6112cc1ad145
2023-09-23 06:35:49 +02:00
Bartosz Dziewoński 19fa706693 Action::getPageTitle() should return a Message
Bug: T343994
Change-Id: Ice968d8a5651a21260b9389526b4f7694b3deca8
2023-09-21 22:17:15 +02:00
Bartosz Dziewoński e825084546 SpecialPage::getDescription() should return a Message
Bug: T343994
Change-Id: I9902a7f0c2c74c34a887e4429f1de857bd087d28
2023-09-21 22:10:57 +02:00
Bartosz Dziewoński 97dbe19a34 ThreadItemStore: Fix rows with itr_items_id=0 corrupted by T339882
In T339882 we thought that these rows are harmless, but for the
specific case of itr_items_id that's not true.

Bug: T343859
Change-Id: Iebfa583d7d4b00a59291f91ec84c41241d5469d4
2023-09-21 03:51:48 +02:00
Bartosz Dziewoński 6b633803c8 ThreadItemStore: Add details to row insertion exceptions
Bug: T343859
Change-Id: Ic0d741c192f42a3bd54276259820f25edcb0705b
2023-09-14 19:05:04 +00:00
Bartosz Dziewoński 70ff6fa463 SubscriptionStore: Tweak comment to fix Gerrit syntax highlighting
For some reason this apostrophe is treated like the start of a string
by Gerrit's syntax highlighting, messing up the whole file. It annoys
me very much.

Change-Id: Ie1ce88eefda6ae2a8a73237556affba4cbc6db4b
2023-09-14 17:58:16 +02:00
Bartosz Dziewoński 5d92dccafc TopicSubscriptionsPager: Handle invalid titles
This approach is borrowed from PageQueryPage in MediaWiki core,
and used in a few other places as well.

Bug: T345648
Change-Id: I7fbc3c3c1133da78eb9f15de9b2a51a90bcd1980
2023-09-05 23:40:52 +00:00
jenkins-bot 3a9bbd66a8 Merge "Hide ellipsis menu when the section is uneditable" 2023-09-05 22:44:49 +00:00
Ed Sanders 2c44828564 Hide ellipsis menu when the section is uneditable
Bug: T316388
Change-Id: I4a4f0888245ffa0c74935d24d8a64d2ed78080b7
2023-09-06 00:30:35 +02:00
jenkins-bot a1f2185a0f Merge "Acquire a temporary user username before previewing" 2023-08-30 13:15:05 +00:00
Ed Sanders 7dff37e354 Show new topics subscription button on history pages
Bug: T345096
Change-Id: I5da6ac0bca900f9fe3482d247d20aaf24feb61f2
2023-08-28 19:54:56 +01:00
Rajashree Talukdar bc495dfd10 DiscussionToolsDebug: check whether the given page exists
Check whether the page given to DiscussionToolsDebug exists or not.
Without the check, it throws Wikimedia\Assert\PreconditionException.
Add 'exists' => true in the getFormFields() array.

Bug: T338480
Change-Id: I57222f60cb5c5645e6bc97b86be22c502c85d650
2023-08-26 21:42:59 +05:30
jenkins-bot 3583d7367a Merge "Fix exception trying to store comments transcluded from special pages" 2023-08-24 16:36:40 +00:00
Bartosz Dziewoński 5c612862a1 Acquire a temporary user username before previewing
When rendering a preview of the comment in order to check whether it's
signed, use the previously acquired temporary user username for the
signature.

Depends-On: Iec8a15dadd595bed0f7e54f907fbb8e192b45cf3
Bug: T331397
Change-Id: I7aeb1cc4c107ed752dc805405780a7609a6d4d3c
2023-08-22 23:42:32 +02:00
Bartosz Dziewoński dd58d07ff5 Fix exception trying to store comments transcluded from special pages
Bug: T344622
Change-Id: I57dbd088dff15ac2cd9998663d7eac60dccd0dec
2023-08-21 19:02:42 +02:00
Umherirrender b160472953 Use namespace MediaWiki\Request\DerivativeRequest
Bug: T321681
Change-Id: Ia9e4557af6fc958d2c3e61cb876958540d25674b
2023-08-20 01:39:56 +02:00
Umherirrender fd0de6b09a Use namespaced Title
Bug: T321681
Change-Id: I66a498679d0743b7740887c636eca001efc170cd
2023-08-19 20:16:15 +02:00
gerritbot dfb413ed81 Replace some moved Title class uses, now MediaWiki\Title\Title
Bug: T321681
Change-Id: I688fe73f46ecc2bbd8f4c59fc42b8e85fadf7689
2023-08-19 04:14:36 +00:00
Umherirrender 1a8ee0f3d1 Call IDatabase::insertId only when a row was inserted
As docs says on IDatabase::insertId

Change-Id: I4a61ce625c4f31316bb9eee83f293a438bac2e0e
2023-08-16 20:54:09 +02:00
jenkins-bot ca800cf631 Merge "Use UpdateQueryBuilder and InsertQueryBuilder" 2023-08-16 18:50:19 +00:00
jenkins-bot d28b11383e Merge "Make ApiDiscussionToolsEdit non-internal, add 'tags'" 2023-08-16 17:00:37 +00:00
Martin Urbanec 16ac49fe61 Make ApiDiscussionToolsEdit non-internal, add 'tags'
What:
Growth wants to use ApiDiscussionToolsEdit to
post questions on behalf of new users (to make use
of the auto-subscribing logic DiscussionTools has).

This seems like a good moment to make the API
non-internal.

What:
* Add support for 'tags' parameter
  (this doesn't actually work w/o the depends-on)
* Add autosubscribe parameter to give more control
  to callers over whether autosubscription is used.
* Remove isInternal()

Bug: T343339
Bug: T333632
Depends-On: I0ac60ca8473fe28461b2da60f9911baac4994388
Change-Id: I39727de40557d2494f4d60bf224490caaedfdee1
2023-08-16 16:52:38 +00:00
jenkins-bot a7b703c589 Merge "Use HookHandlers for BetaFeatures hook" 2023-08-16 08:51:41 +00:00
jenkins-bot de9ad429ee Merge "Use HookHandlers for Echo hook" 2023-08-16 05:26:09 +00:00
Umherirrender e5cbc838a8 Use HookHandlers for BetaFeatures hook
Bug: T273303
Change-Id: I685eb618b7ca2dc5b10bc5f08bfd235f682ff3c5
2023-08-16 05:23:25 +00:00
Umherirrender 3515751592 Use HookHandlers for Echo hook
Bug: T273303
Depends-On: Iffa2b409502b4269c9746e0304feb4aaee37a86e
Change-Id: I489a37b7b377b874ab3384bdc071e9c63701345a
2023-08-16 00:39:43 +02:00
jenkins-bot a6ffd38185 Merge "Remove 'internal' flag from ApiDiscussionToolsSubscribe/GetSubscriptions" 2023-08-15 16:03:24 +00:00
jenkins-bot b52bff0257 Merge "Handle Parsoid resource limit exceeded exceptions" 2023-08-14 13:33:49 +00:00
C. Scott Ananian 0de3f468c3 Remove unnecessary use of Parser
Change-Id: Ib86ed6300ae85d7d69557a11bbd8f7b409e11d6c
2023-08-12 00:23:49 +02:00
Arlo Breault 3d9585acbe Handle Parsoid resource limit exceeded exceptions
Parsoid can be expected to throw limit exceeded exceptions so a more
graceful response should be provided.

Bug: T325298
Change-Id: I6bedc7639a68311d5247331d5e53f88c004ebc5e
2023-08-11 18:06:26 -04:00
Bartosz Dziewoński 505aef8a60 Use UpdateQueryBuilder and InsertQueryBuilder
Change-Id: I8d8377a0ad3472d193b1bf9b20c8966bb6b34dd7
2023-08-11 21:59:03 +02:00
Ed Sanders db53ae0a48 Remove 'internal' flag from ApiDiscussionToolsSubscribe/GetSubscriptions
Bug: T329474
Change-Id: Ie8e745fc83a320134d3790012311c4b35c7f3934
2023-08-07 15:14:58 +01:00
Bartosz Dziewoński a783b9371f ThreadItemStore: Ignore duplicates caused by duplicate executions
For some unknown reason our updates are being processed more than once
at the same time. Ignore or work around the "duplicate entry" errors
caused by that.

Bug: T323080
Bug: T341811
Change-Id: Iaae1dc2d5ed5bf4ac6760fb1d39dc21f2af89e9a
2023-08-04 18:56:36 +00:00
Bartosz Dziewoński 66b1ca1578 ApiDiscussionToolsPreview: Add missing documentation messages
Bug: T342634
Change-Id: If550d6ccf6fb8256d2f252d796f8bc4651dc8f7b
2023-08-04 20:55:13 +02:00
jenkins-bot f86bd42f01 Merge "Enable automatic topic subscriptions for autocreate accounts" 2023-08-01 16:38:27 +00:00