Matthias Schmidt [Wed, 14 Apr 2021 05:42:21 +0000 (07:42 +0200)]
Merge branch '5.3'
Matthias Schmidt [Wed, 14 Apr 2021 05:38:54 +0000 (07:38 +0200)]
Merge pull request #4102 from WoltLab/devtools_open_archive
Open archive in `DevtoolsPackageArchive` only once
Matthias Schmidt [Tue, 13 Apr 2021 15:06:56 +0000 (17:06 +0200)]
Only create one `DevtoolsPackageArchive` object in `DevtoolsProject`
Tim Düsterhus [Tue, 13 Apr 2021 14:59:42 +0000 (16:59 +0200)]
Correctly handle a missing .htaccess in the tmp/ folder
see
be81c8401ba16bd1f84fe95f8ca71c372cf548ec
Matthias Schmidt [Tue, 13 Apr 2021 14:41:02 +0000 (16:41 +0200)]
Merge branch '5.3'
Matthias Schmidt [Tue, 13 Apr 2021 14:36:24 +0000 (16:36 +0200)]
Merge pull request #4118 from WoltLab/db_fk_future_tables
Properly handle foreign keys referencing tables created later on
Matthias Schmidt [Tue, 13 Apr 2021 14:21:54 +0000 (16:21 +0200)]
Properly handle foreign keys referencing tables created later on
If a foreign key of the first table references a table to be created later on, this foreign key can only be created once the referenced table was created.
Tim Düsterhus [Tue, 13 Apr 2021 14:20:01 +0000 (16:20 +0200)]
Matthias Schmidt [Tue, 13 Apr 2021 14:01:45 +0000 (16:01 +0200)]
Check if foreign key references unknown database table
Alexander Ebert [Tue, 13 Apr 2021 12:13:03 +0000 (14:13 +0200)]
Merge branch '5.3' of https://github.com/WoltLab/WCF into 5.3
Alexander Ebert [Tue, 13 Apr 2021 12:12:54 +0000 (14:12 +0200)]
Avoid one disk write with every request
Matthias Schmidt [Tue, 13 Apr 2021 12:12:49 +0000 (14:12 +0200)]
Fix code style after merge
Matthias Schmidt [Tue, 13 Apr 2021 12:08:45 +0000 (14:08 +0200)]
Merge branch '5.3'
Matthias Schmidt [Tue, 13 Apr 2021 12:03:37 +0000 (14:03 +0200)]
Merge branch '5.2' into 5.3
Matthias Schmidt [Tue, 13 Apr 2021 12:02:59 +0000 (14:02 +0200)]
Fix `reloadPageOnSuccess` from different clipboard actions for same object type
If there are multiple clipboard action classes for the same object type, for example in case a plugin adds further clipboard actions, only the `reloadPageOnSuccess` data of the first clipboard action instance is used instead of collecting the data from all relevant clipboard action instances.
See #2584
Alexander Ebert [Tue, 13 Apr 2021 11:27:32 +0000 (13:27 +0200)]
Merge pull request #4116 from WoltLab/html-processing-performance
Improve the performance of the HTMLOutputProcessor
Alexander Ebert [Mon, 12 Apr 2021 20:14:20 +0000 (22:14 +0200)]
Use `XPath::query()` for its superior performance
Alexander Ebert [Mon, 12 Apr 2021 20:01:30 +0000 (22:01 +0200)]
Use `XPath::query()` for its superior performance
Alexander Ebert [Mon, 12 Apr 2021 19:42:29 +0000 (21:42 +0200)]
`XPath::query()` is much more efficient than `getElementByTagName()`
The test document with ~8k elements took ~0.6s using `getElementsByTagName(*)`, but only 0.03s using `query("//*")`
Alexander Ebert [Mon, 12 Apr 2021 17:30:02 +0000 (19:30 +0200)]
Inline calls in `removeNode()` to improve the simplified-html/plain performance
Alexander Ebert [Mon, 12 Apr 2021 17:21:21 +0000 (19:21 +0200)]
Avoid updates to DOMNodeList for childNodes
Alexander Ebert [Mon, 12 Apr 2021 17:20:54 +0000 (19:20 +0200)]
Avoid live updates to DOMNodeList
The DOMNodeList is a live collection that is updated whenever an item is removed. This can have a significant performance impact when removing a large set of nodes.
Marcel Werk [Mon, 12 Apr 2021 15:03:22 +0000 (17:03 +0200)]
Merge branch '5.2' into 5.3
Marcel Werk [Mon, 12 Apr 2021 15:00:29 +0000 (17:00 +0200)]
Merge branch '3.1' into 5.2
Marcel Werk [Mon, 12 Apr 2021 14:59:49 +0000 (16:59 +0200)]
Updated Google's address in the privacy policy
Alexander Ebert [Mon, 12 Apr 2021 12:59:27 +0000 (14:59 +0200)]
Release 5.3.6
Matthias Schmidt [Mon, 12 Apr 2021 12:23:12 +0000 (14:23 +0200)]
Stop using `self` return type in form builder (#4115)
… for compatibility with PHP versions < 7.4.
WoltLab [Mon, 12 Apr 2021 12:17:23 +0000 (12:17 +0000)]
Updating minified JavaScript files
Alexander Ebert [Mon, 12 Apr 2021 11:38:18 +0000 (13:38 +0200)]
Merge pull request #4113 from WoltLab/event-all
Add the update of wcf1_event_listener to update_com.woltlab.wcf_5.3.php
Tim Düsterhus [Mon, 12 Apr 2021 10:55:11 +0000 (12:55 +0200)]
Merge branch '5.3'
Tim Düsterhus [Mon, 12 Apr 2021 10:09:58 +0000 (12:09 +0200)]
Add the update of wcf1_event_listener to update_com.woltlab.wcf_5.3.php
… and restore update_com.woltlab.wcf_5.3.3_db.php for the users that upgraded
from 5.2.x to 5.3.3+.
Alexander Ebert [Mon, 12 Apr 2021 10:07:15 +0000 (12:07 +0200)]
Merge branch '5.2' into 5.3
Alexander Ebert [Mon, 12 Apr 2021 10:05:22 +0000 (12:05 +0200)]
Merge pull request #4112 from WoltLab/user-option-title
Use UserOption::getTitle() where possible
Tim Düsterhus [Mon, 12 Apr 2021 09:57:46 +0000 (11:57 +0200)]
Use UserOption::getTitle() in userOptionList.tpl
This one was missed in the previous commit.
Tim Düsterhus [Mon, 12 Apr 2021 09:53:43 +0000 (11:53 +0200)]
Use UserOption::getTitle() where possible
Not all places could be adjusted for compatibility reasons, as the `Option`
super class does not have the `getTitle()` method and as the prefix is given
explicitly.
Helper methods for the description should also be added.
see #4107
Alexander Ebert [Mon, 12 Apr 2021 09:37:06 +0000 (11:37 +0200)]
Merge branch '5.2' into 5.3
Alexander Ebert [Mon, 12 Apr 2021 09:36:52 +0000 (11:36 +0200)]
Merge branch '3.1' into 5.2
Alexander Ebert [Mon, 12 Apr 2021 09:36:26 +0000 (11:36 +0200)]
Reset the assignment cache on group deletion
Fixes #4045
Alexander Ebert [Mon, 12 Apr 2021 09:13:26 +0000 (11:13 +0200)]
Typo + ES5-incompatible syntax
Sascha Moser [Sat, 10 Apr 2021 09:18:03 +0000 (11:18 +0200)]
Add Buck to spiderList.xml
User-Agent: `Buck/2.2; (+https://app.hypefactors.com/media-monitoring/about.html)`
see #3111
Sascha Moser [Fri, 9 Apr 2021 17:28:00 +0000 (19:28 +0200)]
Add ZoominfoBot to spiderList.xml
User-Agent: `ZoominfoBot (zoominfobot at zoominfo dot com)`
see #3111
Matthias Schmidt [Mon, 12 Apr 2021 04:16:20 +0000 (06:16 +0200)]
Fix SCSS code style
Matthias Schmidt [Mon, 12 Apr 2021 04:12:23 +0000 (06:12 +0200)]
Merge branch '5.3'
Alexander Ebert [Sun, 11 Apr 2021 16:24:54 +0000 (18:24 +0200)]
Logical separation of attachments in messages and signatures
Fixes #3835
Matthias Schmidt [Sun, 11 Apr 2021 15:43:56 +0000 (17:43 +0200)]
Use consistent title for flood control delay time
Close #3801
Matthias Schmidt [Sun, 11 Apr 2021 11:06:32 +0000 (13:06 +0200)]
Consistently use "entered" in English phrases instead of "given"
See #3801
Matthias Schmidt [Sun, 11 Apr 2021 10:57:21 +0000 (12:57 +0200)]
Add missing url attribute for message share buttons' container
See #4108
Alexander Ebert [Sat, 10 Apr 2021 14:02:36 +0000 (16:02 +0200)]
Hide the quote tooltip while dragging the touch selection
Alexander Ebert [Sat, 10 Apr 2021 13:35:47 +0000 (15:35 +0200)]
Improved the behavior of page action buttons on mobile
Alexander Ebert [Sat, 10 Apr 2021 12:35:53 +0000 (14:35 +0200)]
Work-around for the scroll position when inserting quotes on iOS
Alexander Ebert [Fri, 9 Apr 2021 16:48:41 +0000 (18:48 +0200)]
Detection of pasted blob uris in iOS
Alexander Ebert [Fri, 9 Apr 2021 15:34:56 +0000 (17:34 +0200)]
Block the form submit if one or more editors are still in source code mode
Alexander Ebert [Fri, 9 Apr 2021 14:38:22 +0000 (16:38 +0200)]
Detection of repeated mentions with the first mention at index 0
Alexander Ebert [Fri, 9 Apr 2021 14:29:44 +0000 (16:29 +0200)]
Work-around for the HTML entity in notifications for reactions
Matthias Schmidt [Fri, 9 Apr 2021 12:36:50 +0000 (14:36 +0200)]
Revert "Do not encode link in `Ui/Message/Share/Dialog`"
This reverts commit
e1fc63b48550f147b2c331949bf1bc438adf8dbb.
Matthias Schmidt [Fri, 9 Apr 2021 12:29:50 +0000 (14:29 +0200)]
Do not encode link in `Ui/Message/Share/Dialog`
It is already encoded in the template.
Matthias Schmidt [Fri, 9 Apr 2021 11:54:30 +0000 (13:54 +0200)]
Add `Ui/Message/Share/Dialog` as reusable share dialog module (#4108)
* Add `Ui/Message/Share/Dialog` as reusable share dialog module
Close #4026
* Apply suggestions from code review
* Apply suggestions from code review
Alexander Ebert [Fri, 9 Apr 2021 10:14:42 +0000 (12:14 +0200)]
Avoid the use of gradients involving the `transparent` keyboard
Alexander Ebert [Fri, 9 Apr 2021 10:07:10 +0000 (12:07 +0200)]
Use a separate shadow link for embedded content
Avoid conflicts with complex HTML inside the excerpt similar to how articles work.
Alexander Ebert [Fri, 9 Apr 2021 09:14:36 +0000 (11:14 +0200)]
Implement `_dialogSubmit()` for confirmation dialogs
See #3234
Tim Düsterhus [Fri, 9 Apr 2021 08:49:47 +0000 (10:49 +0200)]
Merge pull request #4110 from WoltLab/xars-oof
Set X-Auto-Response-Suppress: OOF header on all mail
Tim Düsterhus [Fri, 9 Apr 2021 08:43:57 +0000 (10:43 +0200)]
Set X-Auto-Response-Suppress: OOF header on all mail
I was not able to think of a case where out-of-office notifications would be
desired in response to an email sent by WoltLab Suite, so onto all emails it
goes.
Resolves #4104
Matthias Schmidt [Fri, 9 Apr 2021 07:31:12 +0000 (09:31 +0200)]
Consistently use "The entered X" in English phrases (#4109)
See #3801
Matthias Schmidt [Fri, 9 Apr 2021 06:46:02 +0000 (08:46 +0200)]
Merge branch '5.3'
Joshua Rüsweg [Wed, 7 Apr 2021 10:50:45 +0000 (12:50 +0200)]
Merge pull request #4103 from WoltLab/acp-user-email-search
Add acp user email search
Joshua Rüsweg [Wed, 7 Apr 2021 10:50:37 +0000 (12:50 +0200)]
Fix codestyle
Co-authored-by: Tim Düsterhus <duesterhus@woltlab.com>
joshuaruesweg [Wed, 7 Apr 2021 10:49:03 +0000 (12:49 +0200)]
Remove German language tag for spider URL
See
2f4ab6f10ee34601a2931307cc6cc1601943fcd7
Tim Düsterhus [Wed, 7 Apr 2021 10:47:55 +0000 (12:47 +0200)]
Merge pull request #4100 from SoftCreatR/patch-2
Add support for youtube shorts
Marcel Werk [Wed, 7 Apr 2021 10:01:50 +0000 (12:01 +0200)]
Merge branch '5.3'
Marcel Werk [Wed, 7 Apr 2021 09:54:07 +0000 (11:54 +0200)]
Merge branch '5.2' into 5.3
Marcel Werk [Wed, 7 Apr 2021 09:53:54 +0000 (11:53 +0200)]
Lack of filtering of content from ignored users
Tim Düsterhus [Wed, 7 Apr 2021 08:14:52 +0000 (10:14 +0200)]
Merge branch '5.3'
Tim Düsterhus [Wed, 7 Apr 2021 07:18:44 +0000 (09:18 +0200)]
Merge pull request #4105 from WoltLab/notification-markAllAsRead
Attempt to prevent deadlocks involving marking all notifications as read
Tim Düsterhus [Tue, 6 Apr 2021 14:24:49 +0000 (16:24 +0200)]
Attempt to prevent deadlocks involving marking all notifications as read
The previous implementation, UPDATEing all rows with a specific userID, needed
to create pretty coarse locks on the `userID` INDEX. Specifically it also
created gap locks, preventing concurrent *creation* of INDEX records that would
have been matched.
My current understanding of MySQL's locking behavior is that the `confirmTime`
being part of the INDEX is what caused the issue:
The `userID` INDEX includes the columns userID, eventID, objectID and
confirmTime. Now consider the following:
Thread 1: Marks all notifications for userID = A as read.
Thread 2: Marks objects X, Y and Z for userID A as read.
Thread 1 will lock all existing notifications for userID = A as well as all
insertions into the `userID` INDEX with that specific userID. This includes
marking notifications as read, because this will delete the old index record
and insert a new index record with an updated confirmTime.
Thread 2 will lock the specific notifications for userID = A as well as all
insertions into the `userID` INDEX with that specific userID and objectIDs.
This includes marking notifications as read, because this will delete the old
index record and insert a new index record with an updated confirmTime.
Now consider the following timeline:
T1: Locks the gaps for userID = A.
T2: Locks the gaps for userID = A, objects X, Y, Z.
These locks are allowed to coexist:
> Gap locks in InnoDB are “purely inhibitive”, which means that their only
> purpose is to prevent other transactions from inserting to the gap.
(https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html)
T1: Wants to UPDATE the confirmTime for userID = A, object X.
-> This is prevented by the gap lock held by T2, thus T1 waits.
T2: Wants to UPDATE the confirmTime for userID = A, object X.
-> This is prevented by the gap lock held by T1, thus T2 waits.
Now we have a deadlock.
As the current query needs to UPDATE a large number of rows it is fairly slow,
holding the locks for a long time and also needing to update the rows
one-by-one. This gives other threads enough opportunity to run in-between,
wreaking havoc.
Fix this issue by first selecting the exact notifications we need to mark as
read using a simple SELECT. This SELECT should not be able to deadlock with
concurrent write statements.
Afterwards we update the notifications based off a condition matching specific
rows within the PRIMARY KEY. As these must match existing rows only, no gap
locks will be needed, thus reducing the chance to block concurrent threads.
Additionally we only need to update a very small number of rows (should be less
than 50 in the vast majority of cases), reducing the time spent in the query,
further closing the window for concurrent requests and possibly making the
process faster due to less rows being updated (and thus needing to be written
to disk).
Tim Düsterhus [Tue, 6 Apr 2021 12:57:48 +0000 (14:57 +0200)]
Update to Guzzle 7.3
Tim Düsterhus [Tue, 6 Apr 2021 10:20:40 +0000 (12:20 +0200)]
Merge pull request #4098 from netzhuffle/patch-4
Fix param type for handleException
joshuaruesweg [Sun, 4 Apr 2021 20:23:09 +0000 (22:23 +0200)]
Add acp user email search
joshuaruesweg [Sun, 4 Apr 2021 19:49:45 +0000 (21:49 +0200)]
Add meta tags for trophy page
joshuaruesweg [Sun, 4 Apr 2021 15:29:33 +0000 (17:29 +0200)]
Add PetalBot
joshuaruesweg [Sun, 4 Apr 2021 15:13:58 +0000 (17:13 +0200)]
Add Googlebot-Video
joshuaruesweg [Sun, 4 Apr 2021 15:11:36 +0000 (17:11 +0200)]
Add WoltLab Suite bot
joshuaruesweg [Sun, 4 Apr 2021 15:02:20 +0000 (17:02 +0200)]
Add meta tags for CategoryArticleListPage
Matthias Schmidt [Wed, 31 Mar 2021 12:30:53 +0000 (14:30 +0200)]
Open archive in `DevtoolsPackageArchive` only once
Close #3961
Matthias Schmidt [Wed, 31 Mar 2021 11:33:12 +0000 (13:33 +0200)]
Fix code style
Matthias Schmidt [Wed, 31 Mar 2021 11:16:37 +0000 (13:16 +0200)]
Fix code style
Matthias Schmidt [Wed, 31 Mar 2021 11:15:21 +0000 (13:15 +0200)]
Merge branch '5.3'
Marcel Werk [Wed, 31 Mar 2021 09:16:59 +0000 (11:16 +0200)]
Preview images and cover photos were exported twice
Marcel Werk [Tue, 30 Mar 2021 17:54:29 +0000 (19:54 +0200)]
Remove/replace nbsp when copying code to the clipboard
Matthias Schmidt [Tue, 30 Mar 2021 16:44:40 +0000 (18:44 +0200)]
Merge branch '5.3'
Marcel Werk [Tue, 30 Mar 2021 16:39:32 +0000 (18:39 +0200)]
Cover photo deletion was not saved properly
Marcel Werk [Tue, 30 Mar 2021 13:24:21 +0000 (15:24 +0200)]
Always fetch package information using the default language
Matthias Schmidt [Tue, 30 Mar 2021 13:08:34 +0000 (15:08 +0200)]
Improve `Ui/Object/Action` implementation (#4101)
* Improve `Ui/Object/Action` implementation
1. The `objectAction` callback of `Ui/Object/Action/Handler` no gets the whole `data: ObjectActionData` data structure instead of each element separately.
2. `ObjectActionData` now also contains the container element.
3. Add support for `data-object-action-handler` for action buttons. The default actions ignore actions triggered by buttons with such attributes. Instead, custom handlers can react to specific actions by checking for the value of this attribute.
* Use `insertAdjacentElement` in `Ui/Object/Action/Delete`
Co-authored-by: Alexander Ebert <ebert@woltlab.com>
Marcel Werk [Tue, 30 Mar 2021 13:08:03 +0000 (15:08 +0200)]
Fixed missing language variables for error messages
Marcel Werk [Tue, 30 Mar 2021 13:04:08 +0000 (15:04 +0200)]
Removed obsolete language variables
Marcel Werk [Mon, 29 Mar 2021 16:24:45 +0000 (18:24 +0200)]
Merge branch '5.2' into 5.3
Marcel Werk [Mon, 29 Mar 2021 16:24:08 +0000 (18:24 +0200)]
Merge branch '3.1' into 5.2
Marcel Werk [Mon, 29 Mar 2021 16:23:50 +0000 (18:23 +0200)]
Update the user rank after users change their profile
Matthias Schmidt [Mon, 29 Mar 2021 14:13:03 +0000 (16:13 +0200)]
Fix identifier of DOM change listener in `Ui/Object/Action`
Marcel Werk [Mon, 29 Mar 2021 13:52:14 +0000 (15:52 +0200)]
Removed obsolete Chrome workaround for dialogs with scrollbars
Marcel Werk [Sun, 28 Mar 2021 12:29:18 +0000 (14:29 +0200)]
Removed obsolete whitespaces