GitHub/WoltLab/WCF.git
2 months agoApply the code formatter to the test script
Alexander Ebert [Sat, 22 Jun 2024 13:40:41 +0000 (15:40 +0200)]
Apply the code formatter to the test script

2 months agoPromote HTTPS from being a recommendation to an requirement
Alexander Ebert [Sat, 22 Jun 2024 13:39:09 +0000 (15:39 +0200)]
Promote HTTPS from being a recommendation to an requirement

2 months agoAdd a check for the secure context on the index page
Alexander Ebert [Sat, 22 Jun 2024 13:28:58 +0000 (15:28 +0200)]
Add a check for the secure context on the index page

2 months agoVerify the HTTPS support within the system check
Alexander Ebert [Sat, 22 Jun 2024 12:43:04 +0000 (14:43 +0200)]
Verify the HTTPS support within the system check

2 months agoRemove files for the upgrade 5.5 → 6.0
Alexander Ebert [Sat, 22 Jun 2024 12:08:12 +0000 (14:08 +0200)]
Remove files for the upgrade 5.5 → 6.0

2 months agoAdd a workaround for the migration of the spider data
Alexander Ebert [Sat, 22 Jun 2024 12:07:51 +0000 (14:07 +0200)]
Add a workaround for the migration of the spider data

Fixes #5941

2 months agoRemove files for the upgrade 5.5 → 6.0
Alexander Ebert [Sat, 22 Jun 2024 12:02:34 +0000 (14:02 +0200)]
Remove files for the upgrade 5.5 → 6.0

2 months agoAdd a chunk-based progress tracking
Alexander Ebert [Fri, 21 Jun 2024 12:46:27 +0000 (14:46 +0200)]
Add a chunk-based progress tracking

There will be no progress bar if there is only a single chunk to be uploaded.

2 months agoImprove visuals of selects when used in the sidebar
Marcel Werk [Thu, 20 Jun 2024 13:58:05 +0000 (15:58 +0200)]
Improve visuals of selects when used in the sidebar

Closes #5924

2 months agoMerge branch '6.0'
Alexander Ebert [Wed, 19 Jun 2024 12:51:28 +0000 (14:51 +0200)]
Merge branch '6.0'

2 months agoRelease 6.0.16 6.0.16
Alexander Ebert [Wed, 19 Jun 2024 10:38:49 +0000 (12:38 +0200)]
Release 6.0.16

2 months agoMerge branch '5.5' into 6.0
Alexander Ebert [Wed, 19 Jun 2024 10:37:24 +0000 (12:37 +0200)]
Merge branch '5.5' into 6.0

2 months agoRelease 5.5.22 5.5.22
Alexander Ebert [Wed, 19 Jun 2024 10:31:51 +0000 (12:31 +0200)]
Release 5.5.22

2 months agoMerge branch '5.4' into 5.5
Alexander Ebert [Wed, 19 Jun 2024 10:30:58 +0000 (12:30 +0200)]
Merge branch '5.4' into 5.5

2 months agoRelease 5.4.34 5.4 5.4.34
Alexander Ebert [Wed, 19 Jun 2024 10:23:32 +0000 (12:23 +0200)]
Release 5.4.34

2 months agoFix the missing error message
Alexander Ebert [Wed, 19 Jun 2024 10:23:03 +0000 (12:23 +0200)]
Fix the missing error message

2 months agoCheck for disallowed BB codes in the content
Cyperghost [Mon, 17 Jun 2024 10:27:59 +0000 (12:27 +0200)]
Check for disallowed BB codes in the content

2 months agoMerge pull request #5946 from WoltLab/bugfix/article-bb-code-permission
Olaf Braun [Tue, 18 Jun 2024 17:01:07 +0000 (19:01 +0200)]
Merge pull request #5946 from WoltLab/bugfix/article-bb-code-permission

Check for disallowed BB codes in the content

2 months agoRelease 6.0.15 6.0.15
Alexander Ebert [Tue, 18 Jun 2024 15:38:15 +0000 (17:38 +0200)]
Release 6.0.15

2 months agoRemove SVG from the list of safe file extensions
Alexander Ebert [Tue, 18 Jun 2024 09:20:32 +0000 (11:20 +0200)]
Remove SVG from the list of safe file extensions

Serving SVG from untrusted sources directly can be a security issue. SVG can contain JavaScript code that is executed when the file is opened in a standalone tab.

2 months agoMerge pull request #5944 from WoltLab/comment-backend-overhaul
Marcel Werk [Mon, 17 Jun 2024 12:52:19 +0000 (14:52 +0200)]
Merge pull request #5944 from WoltLab/comment-backend-overhaul

Comment backend overhaul

2 months agoMerge pull request #5945 from WoltLab/bugfix/signature-attachment
Olaf Braun [Mon, 17 Jun 2024 12:51:04 +0000 (14:51 +0200)]
Merge pull request #5945 from WoltLab/bugfix/signature-attachment

Extra check that the user also has the right to upload attachment when editing a user

2 months agoAdd link to migration guide
Marcel Werk [Mon, 17 Jun 2024 12:50:33 +0000 (14:50 +0200)]
Add link to migration guide

2 months agoMerge pull request #5947 from WoltLab/delete-files-after-attachment-deleted
Olaf Braun [Mon, 17 Jun 2024 12:25:34 +0000 (14:25 +0200)]
Merge pull request #5947 from WoltLab/delete-files-after-attachment-deleted

Also delete the associated file when an attachment is deleted

2 months agoAlso delete the associated file when an attachment is deleted
Cyperghost [Mon, 17 Jun 2024 11:29:42 +0000 (13:29 +0200)]
Also delete the associated file when an attachment is deleted

2 months agoCheck for disallowed BB codes in the content
Cyperghost [Mon, 17 Jun 2024 10:27:59 +0000 (12:27 +0200)]
Check for disallowed BB codes in the content

2 months agoAlso check that the current user has the right to upload file attachments
Cyperghost [Mon, 17 Jun 2024 10:08:36 +0000 (12:08 +0200)]
Also check that the current user has the right to upload file attachments

3 months agoSimplify the generation of HTML node identifiers
Alexander Ebert [Sun, 16 Jun 2024 11:31:00 +0000 (13:31 +0200)]
Simplify the generation of HTML node identifiers

We do not to generate completely random identifiers, the original intention was to prevent collisions with existing tag names.

Using a per-request random prefix together with a counter is sufficient to generate unique tag names without paying the CSPRNG tax for ever node.

3 months agoRemove obsolete code
Marcel Werk [Sun, 16 Jun 2024 11:30:09 +0000 (13:30 +0200)]
Remove obsolete code

3 months agoFix indentation
Marcel Werk [Sun, 16 Jun 2024 11:29:57 +0000 (13:29 +0200)]
Fix indentation

3 months agoIncrease the grace period for temporary attachments for logged-in users
Alexander Ebert [Sat, 15 Jun 2024 10:25:02 +0000 (12:25 +0200)]
Increase the grace period for temporary attachments for logged-in users

3 months agoRemove the additional secret for files
Alexander Ebert [Sat, 15 Jun 2024 10:13:47 +0000 (12:13 +0200)]
Remove the additional secret for files

It serves no real purpose. Guessing the SHA-256 hash is impossible due to entropy and if you *know* the hash then you pretty much know the file contents too.

There is no imaginable scenario where leaking the hash would not also leak the secret.

3 months agoMerge branch '6.0'
Alexander Ebert [Sat, 15 Jun 2024 09:42:10 +0000 (11:42 +0200)]
Merge branch '6.0'

3 months agoApply suggestions from code review
Marcel Werk [Fri, 14 Jun 2024 16:38:10 +0000 (18:38 +0200)]
Apply suggestions from code review

3 months agoRelease 6.0.15 dev 1 6.0.15_dev_1
Alexander Ebert [Fri, 14 Jun 2024 16:31:02 +0000 (18:31 +0200)]
Release 6.0.15 dev 1

3 months agoUpdating minified JavaScript files
WoltLab [Fri, 14 Jun 2024 16:18:07 +0000 (16:18 +0000)]
Updating minified JavaScript files

3 months agoAdd a proper error message for incompatible Plugin-Store packages
Alexander Ebert [Fri, 14 Jun 2024 11:26:59 +0000 (13:26 +0200)]
Add a proper error message for incompatible Plugin-Store packages

Fixes #5800
See https://www.woltlab.com/community/thread/306394-error-message-when-trying-to-install-a-package-by-storecode/

3 months agoFix phpdoc
Marcel Werk [Fri, 14 Jun 2024 11:02:06 +0000 (13:02 +0200)]
Fix phpdoc

3 months agoRemove obsolete guest dialog code
Marcel Werk [Fri, 14 Jun 2024 11:01:46 +0000 (13:01 +0200)]
Remove obsolete guest dialog code

3 months agoMade use of the new backend methods
Marcel Werk [Fri, 14 Jun 2024 11:01:30 +0000 (13:01 +0200)]
Made use of the new backend methods

3 months agoAdd typescript methods for requesting the new backend
Marcel Werk [Fri, 14 Jun 2024 11:00:51 +0000 (13:00 +0200)]
Add typescript methods for requesting the new backend

3 months agoAdd helper method to get a comment manager by id
Marcel Werk [Fri, 14 Jun 2024 10:56:19 +0000 (12:56 +0200)]
Add helper method to get a comment manager by id

3 months agoRemove/deprecate obsolete code
Marcel Werk [Fri, 14 Jun 2024 10:54:30 +0000 (12:54 +0200)]
Remove/deprecate obsolete code

3 months agoAdd RPC controller
Marcel Werk [Fri, 14 Jun 2024 10:54:06 +0000 (12:54 +0200)]
Add RPC controller

3 months agoAdd commands
Marcel Werk [Fri, 14 Jun 2024 10:53:14 +0000 (12:53 +0200)]
Add commands

3 months agoAdd PSR-14 events
Marcel Werk [Fri, 14 Jun 2024 10:50:28 +0000 (12:50 +0200)]
Add PSR-14 events

3 months agoFilter out restricted permissions in enterprise mode
Alexander Ebert [Fri, 14 Jun 2024 10:21:24 +0000 (12:21 +0200)]
Filter out restricted permissions in enterprise mode

3 months agoAdd a check that no attachment files have been deleted
Cyperghost [Fri, 14 Jun 2024 07:30:29 +0000 (09:30 +0200)]
Add a check that no attachment files have been deleted

3 months agoMake the URL filter a bit more lenient
Alexander Ebert [Thu, 13 Jun 2024 12:25:25 +0000 (14:25 +0200)]
Make the URL filter a bit more lenient

See https://www.woltlab.com/community/thread/305951-link-umwandlung-funktioniert-nicht-wenn-protokoll-im-text-steht/

3 months agoFix the overflow handling of the code box header
Alexander Ebert [Thu, 13 Jun 2024 12:02:31 +0000 (14:02 +0200)]
Fix the overflow handling of the code box header

See https://www.woltlab.com/community/thread/306288-erroneous-placement-of-icons-in-code-box-title-on-mobile/

3 months agoProperly handle possible NULL values for option values
Alexander Ebert [Thu, 13 Jun 2024 11:09:26 +0000 (13:09 +0200)]
Properly handle possible NULL values for option values

See https://www.woltlab.com/community/thread/306690-explode-passing-null-to-parameter-2-string-of-type-string-is-deprecated/

3 months agoPrevent scrolling when defocusing a reaction overlay
Alexander Ebert [Thu, 13 Jun 2024 11:02:19 +0000 (13:02 +0200)]
Prevent scrolling when defocusing a reaction overlay

See https://www.woltlab.com/community/thread/306559-scrolling-the-page-up-while-holding-the-reaction-button/

3 months agoNo longer add the description with the limits for uploading via the description....
Cyperghost [Thu, 13 Jun 2024 10:03:43 +0000 (12:03 +0200)]
No longer add the description with the limits for uploading via the description. This information is already available in the template

3 months agoIt Was only necessary for testing
Cyperghost [Thu, 13 Jun 2024 09:26:59 +0000 (11:26 +0200)]
It Was only necessary for testing

3 months agoMerge branch '6.0'
Alexander Ebert [Wed, 12 Jun 2024 12:40:14 +0000 (14:40 +0200)]
Merge branch '6.0'

3 months agoDo not focus the editor when resetting it
Alexander Ebert [Wed, 12 Jun 2024 12:39:48 +0000 (14:39 +0200)]
Do not focus the editor when resetting it

See https://www.woltlab.com/community/thread/306677-js-fehler-beim-antworten-auf-kommentare/

3 months agoFixes the problem if `maxHeight` and or `maxWidth` have the value `-1`. In this case...
Cyperghost [Wed, 12 Jun 2024 10:12:21 +0000 (12:12 +0200)]
Fixes the problem if `maxHeight` and or `maxWidth` have the value `-1`. In this case, the images were scaled anyway.

3 months agoFix wrong object type when deleting comment responses
Marcel Werk [Tue, 11 Jun 2024 13:10:02 +0000 (15:10 +0200)]
Fix wrong object type when deleting comment responses

3 months agoMerge pull request #5943 from WoltLab/bugfix/wysiwyg-form-field-attachment
Olaf Braun [Mon, 10 Jun 2024 10:08:13 +0000 (12:08 +0200)]
Merge pull request #5943 from WoltLab/bugfix/wysiwyg-form-field-attachment

Bugfix with WysiwygAttachmentFormField and FileProcessor

3 months agoMerge pull request #5942 from WoltLab/upload-pipeline-update-database
Olaf Braun [Mon, 10 Jun 2024 10:07:52 +0000 (12:07 +0200)]
Merge pull request #5942 from WoltLab/upload-pipeline-update-database

Add missing database columns for `wcf1_attachment`

3 months agoSimplify the usage of the helper function
Alexander Ebert [Mon, 10 Jun 2024 10:03:21 +0000 (12:03 +0200)]
Simplify the usage of the helper function

3 months agoFixes the problem that when using the WysiwygFormField with attachments, the `objectI...
Cyperghost [Mon, 10 Jun 2024 09:38:32 +0000 (11:38 +0200)]
Fixes the problem that when using the WysiwygFormField with attachments, the `objectID` can be `null` if it is not an EditForm.

3 months agoAdd missing database columns for `wcf1_attachment`, that are installed by the databas...
Cyperghost [Mon, 10 Jun 2024 08:51:30 +0000 (10:51 +0200)]
Add missing database columns for `wcf1_attachment`, that are installed by the database pip

3 months agoUse a helper function instead of a property
Alexander Ebert [Sun, 9 Jun 2024 19:53:59 +0000 (21:53 +0200)]
Use a helper function instead of a property

Using a property was a dumb idea because it breaks the promise of having the entire request data be made available through the parameters passed to `__invoke()`.

3 months agoFix the deletion of attachments through the file API
Alexander Ebert [Sun, 9 Jun 2024 19:28:59 +0000 (21:28 +0200)]
Fix the deletion of attachments through the file API

3 months agoAdd a helper attribute for object hydration
Alexander Ebert [Sun, 9 Jun 2024 19:25:20 +0000 (21:25 +0200)]
Add a helper attribute for object hydration

3 months agoRemove superfluous columns
Alexander Ebert [Sun, 9 Jun 2024 19:24:58 +0000 (21:24 +0200)]
Remove superfluous columns

Those columns were incorrectly copied and should not exist on `wcf1_file_temporary`.

3 months agoImprove the handling of server errors
Alexander Ebert [Sun, 9 Jun 2024 19:24:29 +0000 (21:24 +0200)]
Improve the handling of server errors

3 months agoMigrate the important workers to the linear rebuild worker
Alexander Ebert [Sun, 9 Jun 2024 10:56:24 +0000 (12:56 +0200)]
Migrate the important workers to the linear rebuild worker

3 months agoEnforce a consistent processing by id
Alexander Ebert [Sun, 9 Jun 2024 10:31:12 +0000 (12:31 +0200)]
Enforce a consistent processing by id

3 months agoMerge pull request #5939 from WoltLab/rebuild-html-performance
Alexander Ebert [Sat, 8 Jun 2024 11:46:04 +0000 (13:46 +0200)]
Merge pull request #5939 from WoltLab/rebuild-html-performance

Runtime and rebuild performance improvements

3 months agoMerge pull request #5940 from WoltLab/guest-token
Marcel Werk [Sat, 8 Jun 2024 11:45:24 +0000 (13:45 +0200)]
Merge pull request #5940 from WoltLab/guest-token

Guest tokens

3 months agoGuest tokens
Marcel Werk [Sat, 8 Jun 2024 11:34:57 +0000 (13:34 +0200)]
Guest tokens

3 months agoMerge branch '6.0'
Alexander Ebert [Sat, 8 Jun 2024 11:34:52 +0000 (13:34 +0200)]
Merge branch '6.0'

3 months agoMerge branch '5.5' into 6.0
Alexander Ebert [Sat, 8 Jun 2024 11:33:54 +0000 (13:33 +0200)]
Merge branch '5.5' into 6.0

3 months agoMerge pull request #5932 from SoftCreatR/bugfix/log-recursive
Alexander Ebert [Sat, 8 Jun 2024 11:33:15 +0000 (13:33 +0200)]
Merge pull request #5932 from SoftCreatR/bugfix/log-recursive

Disable log directory recursion

3 months agoChange template name to shared version
Marcel Werk [Sat, 8 Jun 2024 11:15:20 +0000 (13:15 +0200)]
Change template name to shared version

3 months agoMerge branch 'master' of https://github.com/WoltLab/WCF
Marcel Werk [Sat, 8 Jun 2024 11:13:31 +0000 (13:13 +0200)]
Merge branch 'master' of https://github.com/WoltLab/WCF

3 months agoRemove obsolete jquery code for the captcha registration
Marcel Werk [Sat, 8 Jun 2024 11:13:09 +0000 (13:13 +0200)]
Remove obsolete jquery code for the captcha registration

3 months agoConvert `captchaQuestion` to a shared template
Marcel Werk [Sat, 8 Jun 2024 11:02:20 +0000 (13:02 +0200)]
Convert `captchaQuestion` to a shared template

3 months agoInline the call to `DatabaseObject::__get()`
Alexander Ebert [Wed, 17 Apr 2024 17:02:20 +0000 (19:02 +0200)]
Inline the call to `DatabaseObject::__get()`

See eaf3ce8100824d6c805b6d588b67d02bb58a18b7

3 months agoImprove the runtime performance of `|date`
Alexander Ebert [Wed, 17 Apr 2024 17:01:10 +0000 (19:01 +0200)]
Improve the runtime performance of `|date`

See 75f848c4f07ef00dfa0b191665f40d8a81fa2d0c

3 months agoInline the call to `DatabaseObject::__get()`
Alexander Ebert [Tue, 16 Apr 2024 15:48:34 +0000 (17:48 +0200)]
Inline the call to `DatabaseObject::__get()`

`User::__get()` is called very often on each request, easily stacking up thousands of calls.

On a well populated board list this can easily account for up to 1% of runtime. Inlining the check against `$data` cuts down the time spent inside by up to 2/3.

3 months agoReuse the `\IntlDateFormatter`
Alexander Ebert [Mon, 15 Apr 2024 13:35:47 +0000 (15:35 +0200)]
Reuse the `\IntlDateFormatter`

Constructing the object every time is a rather expensive process.

The test for a page with 96 calls to the `|time` modifier showed an average of 8ms spent inside the `execute()` method.

The optimized version showed a consistent runtime of around 1.3ms.

3 months agoImprove the rebuild of users
Alexander Ebert [Fri, 12 Apr 2024 20:29:03 +0000 (22:29 +0200)]
Improve the rebuild of users

The regular query using `LIMIT` and `OFFSET` is painfully slow with large datasets.

Rebuilding 500k users previously took about 3 hours, afterwards the same action can be carried out in about 20 minutes.

3 months agoImprove the rebuild of user activity points
Alexander Ebert [Thu, 11 Apr 2024 16:23:38 +0000 (18:23 +0200)]
Improve the rebuild of user activity points

The previous implementation relied on `LIMIT … OFFSET …` which has an incredibly poor performance on large data sets. Changing this to `BETWEEN` yields a consistently low latency.

In the previous implementation, up to 92% of the request was spent fetching the target rows.

For a test with 500k records this cut down the time to rebuild from 2:30h down to 20m.

3 months agoCache the list of source and block BBCodes
Alexander Ebert [Thu, 11 Apr 2024 13:35:07 +0000 (15:35 +0200)]
Cache the list of source and block BBCodes

These methods exist in the hot path for the BBCode processing and are called often, but are known to have a static result at runtime.

Caching the result shows latency improvements of up to 3%.

3 months agoCache the list of known HTML tag handlers
Alexander Ebert [Thu, 11 Apr 2024 13:33:14 +0000 (15:33 +0200)]
Cache the list of known HTML tag handlers

The `\class_exists()` call for handlers that do not exist always go through the autoloaders.

For large sets of documents this change improves the request latency by up to 2%.

3 months agoImprove the parsing performance of HTML 5
Alexander Ebert [Thu, 11 Apr 2024 13:31:15 +0000 (15:31 +0200)]
Improve the parsing performance of HTML 5

LibXML handles HTML5 documents poorly and raises a lot of errors that are propagated to PHP and eventually get suppressed by the `@` operator.

This change will prevent LibXML from propagating the errors, allowing us to discard them without going through PHP.

For medium to large size messages this speeds up the `loadHTML()` call by 30-60%. For large sets of messages this can yield a latency reduction for the request of up to 5%.

3 months agoMerge pull request #5905 from WoltLab/upload-pipeline-v2
Alexander Ebert [Sat, 8 Jun 2024 10:23:07 +0000 (12:23 +0200)]
Merge pull request #5905 from WoltLab/upload-pipeline-v2

Upload Pipeline v2

3 months agoMark the legacy file system methods as deprecated
Alexander Ebert [Fri, 7 Jun 2024 16:30:10 +0000 (18:30 +0200)]
Mark the legacy file system methods as deprecated

3 months agoAdd support for copying files
Alexander Ebert [Fri, 7 Jun 2024 16:18:51 +0000 (18:18 +0200)]
Add support for copying files

3 months agoRemove legacy methods for attachment handling
Alexander Ebert [Fri, 7 Jun 2024 15:17:54 +0000 (17:17 +0200)]
Remove legacy methods for attachment handling

3 months agoReplace references to the old JS for attachments
Alexander Ebert [Fri, 7 Jun 2024 15:13:09 +0000 (17:13 +0200)]
Replace references to the old JS for attachments

3 months agoAdd the SQL structure to the DDL PIP
Alexander Ebert [Sun, 2 Jun 2024 11:16:51 +0000 (13:16 +0200)]
Add the SQL structure to the DDL PIP

3 months agoCreate a WebP variant of the source file
Alexander Ebert [Sat, 1 Jun 2024 12:38:11 +0000 (14:38 +0200)]
Create a WebP variant of the source file

3 months agoImprove the eTag handling of file downloads
Alexander Ebert [Sat, 25 May 2024 13:16:56 +0000 (15:16 +0200)]
Improve the eTag handling of file downloads

3 months agoMigrate attachments to the new file upload API
Alexander Ebert [Sat, 25 May 2024 13:12:42 +0000 (15:12 +0200)]
Migrate attachments to the new file upload API

3 months agoAdd a new worker implementation with a linear, predictable runtime
Alexander Ebert [Sat, 25 May 2024 13:12:05 +0000 (15:12 +0200)]
Add a new worker implementation with a linear, predictable runtime

3 months agoAdd an option to limit the maximum file size
Alexander Ebert [Sun, 19 May 2024 11:12:22 +0000 (13:12 +0200)]
Add an option to limit the maximum file size