GitHub/WoltLab/WCF.git
2 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Fri, 21 Jan 2022 12:47:22 +0000 (13:47 +0100)]
Merge branch '5.2' into 5.3

2 years agoRelease 5.2.18 5.2.18
Alexander Ebert [Fri, 21 Jan 2022 12:30:34 +0000 (13:30 +0100)]
Release 5.2.18

2 years agoStop using `|encodeJSON`
Tim Düsterhus [Thu, 20 Jan 2022 10:50:19 +0000 (11:50 +0100)]
Stop using `|encodeJSON`

(cherry picked from commit ab1e34de9ca94dc44b20d0b4d58eca2bad80d9d3)

2 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Fri, 21 Jan 2022 12:27:41 +0000 (13:27 +0100)]
Merge branch '3.1' into 5.2

2 years agoRelease 3.1.26 3.1.26
Alexander Ebert [Fri, 21 Jan 2022 12:06:52 +0000 (13:06 +0100)]
Release 3.1.26

2 years agoAdd missing JSON encoding of the PAGE_TITLE in `ampArticle.tpl`
Tim Düsterhus [Thu, 20 Jan 2022 10:50:47 +0000 (11:50 +0100)]
Add missing JSON encoding of the PAGE_TITLE in `ampArticle.tpl`

This does not need to be fixed in any current branch, because the broken-ness
of `|encodeJSON` will result in broken metadata one way or another.

(cherry picked from commit bba7f1706e30761e55954a5a4be569e5bb55a6c4)

2 years agoStop using `|encodeJSON`
Tim Düsterhus [Thu, 20 Jan 2022 10:50:19 +0000 (11:50 +0100)]
Stop using `|encodeJSON`

(cherry picked from commit ab1e34de9ca94dc44b20d0b4d58eca2bad80d9d3)

2 years agoAdd `|json` template modifier
Tim Düsterhus [Thu, 20 Jan 2022 10:48:16 +0000 (11:48 +0100)]
Add `|json` template modifier

(cherry picked from commit e178fa84dc06861c5aba3d14e03161c5396fe9a7)

2 years agoRelease 5.3.17 5.3.17
Alexander Ebert [Wed, 19 Jan 2022 13:10:10 +0000 (14:10 +0100)]
Release 5.3.17

2 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Wed, 19 Jan 2022 13:00:57 +0000 (14:00 +0100)]
Merge branch '5.2' into 5.3

2 years agoRelease 5.2.17 5.2.17
Alexander Ebert [Wed, 19 Jan 2022 12:55:01 +0000 (13:55 +0100)]
Release 5.2.17

2 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Wed, 19 Jan 2022 12:50:25 +0000 (13:50 +0100)]
Merge branch '3.1' into 5.2

2 years agoRelease 3.1.25 3.1.25
Alexander Ebert [Wed, 19 Jan 2022 12:46:00 +0000 (13:46 +0100)]
Release 3.1.25

2 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 19 Jan 2022 12:29:21 +0000 (13:29 +0100)]
Merge branch '5.2' into 5.3

2 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Wed, 19 Jan 2022 12:29:10 +0000 (13:29 +0100)]
Merge branch '3.1' into 5.2

2 years agoMerge branch 'encode-js-quot' into 3.1
Tim Düsterhus [Wed, 19 Jan 2022 12:27:40 +0000 (13:27 +0100)]
Merge branch 'encode-js-quot' into 3.1

2 years agoMerge pull request #4642 from WoltLab/php-ddl-app-install
Tim Düsterhus [Wed, 19 Jan 2022 08:48:30 +0000 (09:48 +0100)]
Merge pull request #4642 from WoltLab/php-ddl-app-install

Fix the replacing of WCF_N in PHP DDL during app installation

2 years agoFix the replacing of WCF_N in PHP DDL during app installation
Tim Düsterhus [Tue, 18 Jan 2022 11:36:04 +0000 (12:36 +0100)]
Fix the replacing of WCF_N in PHP DDL during app installation

During app installation the newly installed app might not yet be stored within
the application cache, thus failing to replace the `1` within the table
structure definition.

Fix this by setting the `skipCache` parameter to `true`. This will increase the
number of database queries, because applications will be checked once for each
defined table and for each defined FOREIGN KEY, but I don't see a simple fix
for this issue that avoids this increase in query count. Specifically we cannot
simply reset the application cache after inserting the application into
wcf1_application.

2 years agoEncode the double quote (`"`) in StringUtil::encodeJS()
Tim Düsterhus [Tue, 4 Jan 2022 10:50:50 +0000 (11:50 +0100)]
Encode the double quote (`"`) in StringUtil::encodeJS()

`encodeJSON()` is currently broken, because while it HTML-encodes the double
quote, it does not actually add the backslash in front of it. Depending on
whether the HTML entity is interpreted by the browser in that specific location
or not, this either results in an incorrect string (with a literal `"`
instead of `"`) or in a syntax error (because the `"` ends the string
prematurely).

The latter might even allow for the injection of JavaScript, if `encodeJSON` is
used in a `<script>` tag that is not just LD-JSON metadata.

Fix this issue by escaping the double quote in `encodeJS` which is used
internally by `encodeJSON`. This should not cause issues, as an escaped double
quote is valid syntax within a JavaScript string.

2 years agoRelease 5.3.16 5.3.16
Alexander Ebert [Wed, 22 Dec 2021 14:46:57 +0000 (15:46 +0100)]
Release 5.3.16

2 years agoCast `$length` to an actual `int` in TLengthDatabaseTableColumn::length()
mutec [Sun, 28 Nov 2021 10:49:39 +0000 (11:49 +0100)]
Cast `$length` to an actual `int` in TLengthDatabaseTableColumn::length()

When the object is being initialized from the existing structure in the
database, the length will be passed as a string and was previously stored as-is
within the object.

This violates the existing PHPDoc type declaration and breaks consumers that
use a strict comparison (`===`) to check the length, notably
`YearDatabaseTableColumn`.

Fix this by casting the passed parameter to an actual `int`. This should be
adjusted to a proper parameter type in a future version.

Resolves #4594

[Tim: Adjusted commit message]

2 years agoRelease 5.3.15 5.3.15
Alexander Ebert [Tue, 30 Nov 2021 14:41:50 +0000 (15:41 +0100)]
Release 5.3.15

2 years agoUpdating minified JavaScript files
WoltLab [Tue, 30 Nov 2021 14:34:02 +0000 (14:34 +0000)]
Updating minified JavaScript files

2 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Tue, 30 Nov 2021 14:31:49 +0000 (15:31 +0100)]
Merge branch '5.2' into 5.3

2 years agoRelease 5.2.16 5.2.16
Alexander Ebert [Tue, 30 Nov 2021 13:33:28 +0000 (14:33 +0100)]
Release 5.2.16

2 years agoUpdating minified JavaScript files
WoltLab [Tue, 30 Nov 2021 13:26:57 +0000 (13:26 +0000)]
Updating minified JavaScript files

2 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Tue, 30 Nov 2021 13:25:15 +0000 (14:25 +0100)]
Merge branch '3.1' into 5.2

2 years agoUpdating minified JavaScript files 3.1.24
WoltLab [Tue, 30 Nov 2021 12:57:10 +0000 (12:57 +0000)]
Updating minified JavaScript files

2 years agoFixed suffix declaration in XSD
Sascha Greuel [Tue, 30 Nov 2021 10:23:56 +0000 (11:23 +0100)]
Fixed suffix declaration in XSD

As of now, a suffix is only allowed for option categories, which is wrong,
because a suffix can only be applied to an option itself.

Resolves #4596

2 years agoRelease 3.1.24
Alexander Ebert [Tue, 30 Nov 2021 10:01:51 +0000 (11:01 +0100)]
Release 3.1.24

2 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Wed, 10 Nov 2021 18:22:29 +0000 (19:22 +0100)]
Merge branch '5.2' into 5.3

2 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Wed, 10 Nov 2021 18:22:18 +0000 (19:22 +0100)]
Merge branch '3.1' into 5.2

2 years agoIncorrect reset of the timer to show the loading indicator
Alexander Ebert [Wed, 10 Nov 2021 18:21:40 +0000 (19:21 +0100)]
Incorrect reset of the timer to show the loading indicator

The missing reset caused repeated calls to `show()` being effectively ignored, because the check `_timeoutShow === null` would be always true if the callback was cancelled before.

See https://community.woltlab.com/thread/293232-ajaxstatus-wird-nach-einem-fehlerhaften-request-nicht-wieder-angezeigt/

2 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Thu, 4 Nov 2021 14:35:33 +0000 (15:35 +0100)]
Merge branch '5.2' into 5.3

2 years agoFix error message for `foreignColumnChange` in PHP DDL API
Tim Düsterhus [Thu, 4 Nov 2021 14:34:47 +0000 (15:34 +0100)]
Fix error message for `foreignColumnChange` in PHP DDL API

2 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Tue, 2 Nov 2021 12:36:47 +0000 (13:36 +0100)]
Merge branch '5.2' into 5.3

2 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Tue, 2 Nov 2021 12:34:12 +0000 (13:34 +0100)]
Merge branch '3.1' into 5.2

2 years agoMerge pull request #4574 from WoltLab/supportexpiry-31
Tim Düsterhus [Tue, 2 Nov 2021 12:31:07 +0000 (13:31 +0100)]
Merge pull request #4574 from WoltLab/supportexpiry-31

Notify users of the expiring support

2 years agoNotify users of the expiring support
Tim Düsterhus [Tue, 2 Nov 2021 11:11:50 +0000 (12:11 +0100)]
Notify users of the expiring support

This effectively is 14a6db14f1ac63da83098dc648288ae07df62e80 combined with
637c1ca28225918a1a07680b7759c02565cd4c50.

2 years agoRegenerate composer autoloader
Tim Düsterhus [Tue, 26 Oct 2021 12:56:26 +0000 (14:56 +0200)]
Regenerate composer autoloader

2 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Thu, 14 Oct 2021 13:14:54 +0000 (15:14 +0200)]
Merge branch '5.2' into 5.3

2 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Thu, 14 Oct 2021 13:11:44 +0000 (15:11 +0200)]
Merge branch '3.1' into 5.2

2 years agoFix EmailNewActivationCodeForm
Tim Düsterhus [Thu, 14 Oct 2021 13:10:10 +0000 (15:10 +0200)]
Fix EmailNewActivationCodeForm

This got broken, because it inherits from RegisterNewActivationForm and the “is
already enabled” validation was moved into a dedicated method within there. This
is a perfect example of why one should never inherit from controllers …

see f394421c0cc7e8879007092e40e540b2fd1118c1

2 years agoMerge pull request #4531 from WoltLab/http-request-timeout
Tim Düsterhus [Tue, 28 Sep 2021 13:58:46 +0000 (15:58 +0200)]
Merge pull request #4531 from WoltLab/http-request-timeout

Configure emergency timeout in HTTPRequest

2 years agoCast the Redis port to int
Tim Düsterhus [Tue, 28 Sep 2021 13:13:42 +0000 (15:13 +0200)]
Cast the Redis port to int

The `Redis::connect()` method expects the `$port` parameter to be an integer.
PHP will automatically cast numeric strings to an integer, but error out with
an TypeError if the string is not a well-formed number. This TypeError will not
be caught in an `catch(\Exception $e)` block, because TypeError does not
inherit Exception.

Perform an explicit cast to ensure the fallback to DiskCacheSource works.

2 years agoConfigure emergency timeout in HTTPRequest
Tim Düsterhus [Tue, 28 Sep 2021 12:31:33 +0000 (14:31 +0200)]
Configure emergency timeout in HTTPRequest

The connect and read timeouts might not reliably trigger in all cases.
Configure a large overall timeout to ensure PHP workers will terminate
eventually.

see 2dbd5654cb9faff45bb51df9a2f3834bd320cc00

2 years agoMerge pull request #4497 from max-m/patch-categoryMultiSelectOptionType
Marcel Werk [Tue, 21 Sep 2021 14:53:14 +0000 (16:53 +0200)]
Merge pull request #4497 from max-m/patch-categoryMultiSelectOptionType

Make `categoryMultiSelectOptionType.tpl` behave like `categoryOptionList.tpl`

2 years agoIncorrect gradient value in Safari
Alexander Ebert [Mon, 20 Sep 2021 15:48:31 +0000 (17:48 +0200)]
Incorrect gradient value in Safari

https://community.woltlab.com/thread/292475-mainmenushowprevious-mainmenushownext-safari-farbunterschied-fehler/

2 years agoMake `categoryMultiSelectOptionType.tpl` behave like `categoryOptionList.tpl`
Maximilian Mader [Tue, 14 Sep 2021 16:19:15 +0000 (18:19 +0200)]
Make `categoryMultiSelectOptionType.tpl` behave like `categoryOptionList.tpl`

Currently the `categoryMultiSelectOptionType.tpl` outputs nodes of depth 0 and depth 1,
but article categories for example can be nested deeper than that.
The `categoryOptionList.tpl` as used by the category add forms handles arbitrary nesting levels already,
so I’ve ported the template logic over to the multi select option template.

The maximum nesting depth in the `AbstractCategoryMultiSelectOptionType.class.php` has been changed
to the default value (-1) to allow for infinite nesting depths.

2 years agoMerge pull request #4496 from mutec/tagfieldfdp1
Alexander Ebert [Sat, 11 Sep 2021 15:05:59 +0000 (17:05 +0200)]
Merge pull request #4496 from mutec/tagfieldfdp1

fix id of `CustomFormDataProcessor` in `TagFormField`

2 years agofix id of `CustomFormDataProcessor` in `TagFormField`
mutec [Fri, 10 Sep 2021 14:49:57 +0000 (16:49 +0200)]
fix id of `CustomFormDataProcessor` in `TagFormField`

the id was `acl` which seems to be a copy paste-mistake

2 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Thu, 9 Sep 2021 09:58:00 +0000 (11:58 +0200)]
Merge branch '5.2' into 5.3

2 years agoMerge pull request #4493 from WoltLab/5.3-aclformfieldcleanup
Alexander Ebert [Thu, 9 Sep 2021 09:47:02 +0000 (11:47 +0200)]
Merge pull request #4493 from WoltLab/5.3-aclformfieldcleanup

Reset ACL field values within form cleanup

2 years agoRelease 5.3.14 5.3.14
Alexander Ebert [Wed, 8 Sep 2021 12:13:30 +0000 (14:13 +0200)]
Release 5.3.14

2 years agoIncorrect use of spaces for indentation in <5.4
Alexander Ebert [Wed, 8 Sep 2021 12:05:13 +0000 (14:05 +0200)]
Incorrect use of spaces for indentation in <5.4

2 years agoSandbox `foreachVars` in templates
Alexander Ebert [Sun, 8 Aug 2021 09:29:26 +0000 (11:29 +0200)]
Sandbox `foreachVars` in templates

Nesting the same template inside a `foreach` loop that is also accessed inside the nested call will overwrite the values from the outer template due to identical identifiers being used.

The sandbox did not protected `$this->foreachVars` despite being stateful.

See #4431
Fixes #4444

2 years agoReset ACL field values within form cleanup
joshuaruesweg [Wed, 8 Sep 2021 11:53:42 +0000 (13:53 +0200)]
Reset ACL field values within form cleanup

2 years agoRemove empty lines
joshuaruesweg [Wed, 8 Sep 2021 11:51:29 +0000 (13:51 +0200)]
Remove empty lines

3 years agoMerge pull request #4491 from Fighter456/devtools-language-fix
Joshua Rüsweg [Sat, 4 Sep 2021 10:24:10 +0000 (12:24 +0200)]
Merge pull request #4491 from Fighter456/devtools-language-fix

Fix miswording in language variable of devtools

3 years agoFix miswording in language variable of devtools
Dennis Kraffczyk [Sat, 4 Sep 2021 10:11:50 +0000 (12:11 +0200)]
Fix miswording in language variable of devtools

The german language variable `wcf.acp.pip.page.name.description` uses the word `Boxname` but is used in the `PagePackageInstallationPlugin`.

3 years agoNew link format for Facebook videos
Marcel Werk [Thu, 2 Sep 2021 13:54:36 +0000 (15:54 +0200)]
New link format for Facebook videos

3 years agoRelease 5.3.13 5.3.13
Alexander Ebert [Tue, 31 Aug 2021 12:49:21 +0000 (14:49 +0200)]
Release 5.3.13

3 years agoUpdating minified JavaScript files
WoltLab [Tue, 31 Aug 2021 12:35:22 +0000 (12:35 +0000)]
Updating minified JavaScript files

3 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Tue, 31 Aug 2021 12:32:44 +0000 (14:32 +0200)]
Merge branch '5.2' into 5.3

3 years agoRelease 5.2.15 5.2.15
Alexander Ebert [Tue, 31 Aug 2021 11:40:31 +0000 (13:40 +0200)]
Release 5.2.15

3 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Tue, 31 Aug 2021 11:31:31 +0000 (13:31 +0200)]
Merge branch '3.1' into 5.2

3 years agoRelease 3.1.23 3.1.23
Alexander Ebert [Tue, 31 Aug 2021 10:32:33 +0000 (12:32 +0200)]
Release 3.1.23

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Thu, 26 Aug 2021 08:30:59 +0000 (10:30 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Thu, 26 Aug 2021 08:30:10 +0000 (10:30 +0200)]
Merge branch '3.1' into 5.2

3 years agoFix return type comment for AbstractDatabaseObjectAction::getSingleObject()
Tim Düsterhus [Thu, 26 Aug 2021 08:29:10 +0000 (10:29 +0200)]
Fix return type comment for AbstractDatabaseObjectAction::getSingleObject()

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 25 Aug 2021 11:37:43 +0000 (13:37 +0200)]
Merge branch '5.2' into 5.3

3 years agoCorrectly handle null values in UserFormField::validate()
Tim Düsterhus [Wed, 25 Aug 2021 11:36:54 +0000 (13:36 +0200)]
Correctly handle null values in UserFormField::validate()

Closes #4471

Co-authored-by: Fabii547 <Fabii547@users.noreply.github.com>
3 years agoUpdating minified JavaScript files
WoltLab [Tue, 24 Aug 2021 09:49:26 +0000 (09:49 +0000)]
Updating minified JavaScript files

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Fri, 13 Aug 2021 07:19:27 +0000 (09:19 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4459 from SoftCreatR/bugfix/custom-errors
Tim Düsterhus [Fri, 13 Aug 2021 07:18:36 +0000 (09:18 +0200)]
Merge pull request #4459 from SoftCreatR/bugfix/custom-errors

Unify error handling in several templates

3 years agoUnified error handling in several templates
Sascha Greuel [Thu, 12 Aug 2021 16:08:27 +0000 (18:08 +0200)]
Unified error handling in several templates

3 years agoAdd missing call to ->loadVariables() before downloading Google Font during style...
Tim Düsterhus [Thu, 12 Aug 2021 08:07:08 +0000 (10:07 +0200)]
Add missing call to ->loadVariables() before downloading Google Font during style import

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 11 Aug 2021 09:56:10 +0000 (11:56 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4453 from WoltLab/iformbutton-is-available
Tim Düsterhus [Wed, 11 Aug 2021 09:37:23 +0000 (11:37 +0200)]
Merge pull request #4453 from WoltLab/iformbutton-is-available

Check whether an IFormButton is available before rendering

3 years agoCheck whether an IFormButton is available before rendering
Tim Düsterhus [Wed, 11 Aug 2021 07:54:12 +0000 (09:54 +0200)]
Check whether an IFormButton is available before rendering

3 years agoPrevent submitting an empty message to the preview
Alexander Ebert [Fri, 6 Aug 2021 12:41:00 +0000 (14:41 +0200)]
Prevent submitting an empty message to the preview

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Fri, 6 Aug 2021 10:26:36 +0000 (12:26 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4439 from xopez/5.2
Joshua Rüsweg [Fri, 6 Aug 2021 09:22:18 +0000 (11:22 +0200)]
Merge pull request #4439 from xopez/5.2

Fixes Bings Sitemap Howto

3 years agoFixes Bings Sitemap Howto
xopez [Thu, 5 Aug 2021 14:55:45 +0000 (16:55 +0200)]
Fixes Bings Sitemap Howto

This includes the correct links if the Bing Webmaster Tools help & how-to for sitemaps.

3 years agoDelete reaction type icon on delete action
joshuaruesweg [Thu, 5 Aug 2021 11:04:46 +0000 (13:04 +0200)]
Delete reaction type icon on delete action

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Thu, 5 Aug 2021 09:40:52 +0000 (11:40 +0200)]
Merge branch '5.2' into 5.3

3 years agoFix typo in watchedArticleList.tpl
Tim Düsterhus [Thu, 5 Aug 2021 07:16:18 +0000 (09:16 +0200)]
Fix typo in watchedArticleList.tpl

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 4 Aug 2021 09:26:15 +0000 (11:26 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4435 from WoltLab/php-ddl-diff
Tim Düsterhus [Wed, 4 Aug 2021 09:25:25 +0000 (11:25 +0200)]
Merge pull request #4435 from WoltLab/php-ddl-diff

PHP DDL Fixes

3 years agoTake the array key into account when checking whether a column is up to date in Datab...
Tim Düsterhus [Wed, 4 Aug 2021 08:57:06 +0000 (10:57 +0200)]
Take the array key into account when checking whether a column is up to date in DatabaseTableChangeProcessor

Previously updating a column that looks like this:

    column VARCHAR(1) NOT NULL

to:

    column VARCHAR(1) NULL

would not do anything.

Converted into the `getData()` representation of the PHP DDL API these would
look like:

    [ 'default' => null
    , 'notNull' => 1
    , 'type' => 'VARCHAR'
    , 'length' => 1
    ]

and

    [ 'default' => null
    , 'notNull' => 0
    , 'type' => 'VARCHAR'
    , 'length' => 1
    ]

respectively.

Now taking the diff of the first array against the second array (subtracting
the second from the first) will remove *both* 1 values, resulting in an
empty difference, thus believing both columns are identical.

Fix this issue by using `array_diff_assoc` which will also take the key into
account.

3 years agoTake the array key into account when checking whether a KEY is up to date in Database...
Tim Düsterhus [Wed, 4 Aug 2021 08:36:12 +0000 (10:36 +0200)]
Take the array key into account when checking whether a KEY is up to date in DatabaseTableChangeProcessor

Previously updating a (pretty contrived) KEY that looks like this:

    […] UNIQUE KEY someIndex (`UNIQUE`)

to:

    […] KEY someIndex (`UNIQUE`)

would not do anything.

Converted into the `getData()` representation of the PHP DDL API these would
look like:

    [ 'columns' => 'UNIQUE'
    , 'type' => 'UNIQUE'
    ]

and

    [ 'columns' => 'UNIQUE'
    , 'type' => null
    ]

respectively.

Now taking the diff of the first array against the second array (subtracting
the second from the first) will remove *both* 'UNIQUE' values, resulting in an
empty difference, thus believing both KEYs are identical.

Fix this issue by using `array_diff_assoc` which will also take the key into
account.

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Tue, 3 Aug 2021 15:09:29 +0000 (17:09 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4433 from WoltLab/php-ddl-diff
Tim Düsterhus [Tue, 3 Aug 2021 15:08:35 +0000 (17:08 +0200)]
Merge pull request #4433 from WoltLab/php-ddl-diff

PHP DDL Fixes

3 years agoTake the array key into account when checking whether a FOREIGN KEY is up to date...
Tim Düsterhus [Tue, 3 Aug 2021 14:33:43 +0000 (16:33 +0200)]
Take the array key into account when checking whether a FOREIGN KEY is up to date in DatabaseTableChangeProcessor

Previously updating a FOREIGN KEY that looks like this:

    […] FOREIGN KEY (fooID) REFERENCES wcf1_foo (fooID) ON DELETE SET NULL ON UPDATE CASCADE

to:

    […] FOREIGN KEY (fooID) REFERENCES wcf1_foo (fooID) ON DELETE CASCADE ON UPDATE SET NULL

would not do anything.

Converted into the `getData()` representation of the PHP DDL API these would
look identical when looking at the values only. Both span the same column and
reference the same column on the same table. The `ON …` actions are one
`CASCADE` and one `SET NULL` for both.

For this reason the diff is empty, believing that the FOREIGN KEY already
matches the expected configuration.

Fix this issue by using `array_diff_assoc` which will also take the key into
account.

3 years agoTake the array key into account when matching up FOREIGN KEYs in DatabaseTableChangeP...
Tim Düsterhus [Tue, 3 Aug 2021 14:13:58 +0000 (16:13 +0200)]
Take the array key into account when matching up FOREIGN KEYs in DatabaseTableChangeProcessor

Previously a FOREIGN KEY within the database that looks like this:

    […] FOREIGN KEY (someOtherUserID) REFERENCES wcf1_user (userID) […]

would match up a FOREIGN KEY definition like the following:

    […] FOREIGN KEY (userID) REFERENCES wcf1_user (userID) […]

Converted into the `getDiffData()` representation of the PHP DDL API these
would like:

    [ 'columns'           => 'someOtherUserID'
    , 'referencedColumns' => 'userID'
    , 'referencedTable'   => 'wcf1_user'
    ]

and

    [ 'columns'           => 'userID'
    , 'referencedColumns' => 'userID'
    , 'referencedTable'   => 'wcf1_user'
    ]

respectively.

Now taking the diff of the second array against the first array (subtracting
the first from the second) will remove *both* 'userID' values, resulting in an
empty difference, thus believing both FOREIGN KEYs are identical

Fix this issue by using `array_diff_assoc` which will also take the key into
account.

3 years agoMerge pull request #4431 from WoltLab/foreach-empty
Marcel Werk [Tue, 3 Aug 2021 08:56:51 +0000 (10:56 +0200)]
Merge pull request #4431 from WoltLab/foreach-empty

Fix `{foreach}` loops when the to-be-iterated value is empty

3 years agoFix `{foreach}` loops when the to-be-iterated value is empty
Tim Düsterhus [Tue, 3 Aug 2021 07:55:35 +0000 (09:55 +0200)]
Fix `{foreach}` loops when the to-be-iterated value is empty

The restoring of the `item` value failed, because the necessary data in
`foreachVars` was only being filled when the `foreach()` loop was actually
entered. Move this saving of the old value up to ensure it always happens.

see 75ce18bc18904d1215c7d021ac0ac18c0a7a5d42
see #4425

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Fri, 30 Jul 2021 12:45:20 +0000 (14:45 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4427 from WoltLab/label-form-field-dependency
Tim Düsterhus [Fri, 30 Jul 2021 12:44:55 +0000 (14:44 +0200)]
Merge pull request #4427 from WoltLab/label-form-field-dependency

Add missing check for dependencies in LabelFormField processor

3 years agoAdd missing check for dependencies in LabelFormField processor
Tim Düsterhus [Fri, 30 Jul 2021 09:03:55 +0000 (11:03 +0200)]
Add missing check for dependencies in LabelFormField processor