GitHub/WoltLab/WCF.git
3 years agoFix SearchEngineConvertInnoDbWorker when MySQL is not the active engine
Tim Düsterhus [Wed, 9 Jun 2021 08:40:33 +0000 (10:40 +0200)]
Fix SearchEngineConvertInnoDbWorker when MySQL is not the active engine

Fixes #4192

3 years agoUpdate developer documentation links in PIP info phrases
Matthias Schmidt [Wed, 9 Jun 2021 06:25:56 +0000 (08:25 +0200)]
Update developer documentation links in PIP info phrases

Close #4266

3 years agoMerge branch '5.3' into 5.4
Alexander Ebert [Tue, 8 Jun 2021 13:09:36 +0000 (15:09 +0200)]
Merge branch '5.3' into 5.4

3 years agoFully clickable notification items
Alexander Ebert [Tue, 8 Jun 2021 13:09:10 +0000 (15:09 +0200)]
Fully clickable notification items

3 years agoFix iconContainer identifier
joshuaruesweg [Tue, 8 Jun 2021 07:10:05 +0000 (09:10 +0200)]
Fix iconContainer identifier

3 years agoMerge pull request #4263 from Fabii547/patch-76
Tim Düsterhus [Mon, 7 Jun 2021 07:43:29 +0000 (09:43 +0200)]
Merge pull request #4263 from Fabii547/patch-76

Fix visibility check in `Condition/Page/Dependence`

3 years agoFix visibility check in `Condition/Page/Dependence`
Fabii547 [Mon, 7 Jun 2021 07:37:31 +0000 (09:37 +0200)]
Fix visibility check in `Condition/Page/Dependence`

3 years agoMerge pull request #4259 from WoltLab/session-ip-address
Tim Düsterhus [Fri, 4 Jun 2021 14:31:48 +0000 (16:31 +0200)]
Merge pull request #4259 from WoltLab/session-ip-address

Mask IP address in session list

3 years agoMerge pull request #4258 from WoltLab/userAgent-final
Joshua Rüsweg [Fri, 4 Jun 2021 12:59:44 +0000 (14:59 +0200)]
Merge pull request #4258 from WoltLab/userAgent-final

Mark `\wcf\util\UserAgent` as final

3 years agoMerge branch 'master' of https://github.com/WoltLab/WCF
Alexander Ebert [Fri, 4 Jun 2021 12:05:54 +0000 (14:05 +0200)]
Merge branch 'master' of https://github.com/WoltLab/WCF

3 years agoCode style fix
Alexander Ebert [Fri, 4 Jun 2021 12:05:47 +0000 (14:05 +0200)]
Code style fix

3 years agoUse `->toBulletMasked()` in `accountSecurity.tpl`
Tim Düsterhus [Fri, 4 Jun 2021 11:43:07 +0000 (13:43 +0200)]
Use `->toBulletMasked()` in `accountSecurity.tpl`

3 years agoAdd `IpAddress::toBulletMasked()`
Tim Düsterhus [Fri, 4 Jun 2021 11:40:00 +0000 (13:40 +0200)]
Add `IpAddress::toBulletMasked()`

3 years agoRename `IpAddress::mask()` to `IpAddress::toMasked()`
Tim Düsterhus [Fri, 4 Jun 2021 11:27:57 +0000 (13:27 +0200)]
Rename `IpAddress::mask()` to `IpAddress::toMasked()`

3 years agoShow a masked IP address in accountSecurity.tpl
Tim Düsterhus [Fri, 4 Jun 2021 10:16:13 +0000 (12:16 +0200)]
Show a masked IP address in accountSecurity.tpl

3 years agoReturn an IP address in Session::getIpAddress()
Tim Düsterhus [Fri, 4 Jun 2021 10:08:20 +0000 (12:08 +0200)]
Return an IP address in Session::getIpAddress()

3 years agoAdd `\wcf\util\IpAddress`
Tim Düsterhus [Thu, 15 Nov 2018 12:30:59 +0000 (13:30 +0100)]
Add `\wcf\util\IpAddress`

3 years agoFix SCSS code style
Tim Düsterhus [Fri, 4 Jun 2021 11:52:52 +0000 (13:52 +0200)]
Fix SCSS code style

3 years agoImproved UX and visuals of embedded URLs
Alexander Ebert [Fri, 4 Jun 2021 11:45:09 +0000 (13:45 +0200)]
Improved UX and visuals of embedded URLs

The link now has a proper title and the tab focus will highlight the headline.

3 years agoMerge branch '5.3'
Matthias Schmidt [Fri, 4 Jun 2021 11:10:04 +0000 (13:10 +0200)]
Merge branch '5.3'

3 years agoMerge branch '5.2' into 5.3
Matthias Schmidt [Fri, 4 Jun 2021 11:09:51 +0000 (13:09 +0200)]
Merge branch '5.2' into 5.3

3 years agoAdd missing `wcf.acp.devtools.pip.error.className` phrase
Matthias Schmidt [Fri, 4 Jun 2021 11:09:34 +0000 (13:09 +0200)]
Add missing `wcf.acp.devtools.pip.error.className` phrase

Close #4256

3 years agoMark `\wcf\util\UserAgent` as final
Tim Düsterhus [Fri, 4 Jun 2021 10:22:47 +0000 (12:22 +0200)]
Mark `\wcf\util\UserAgent` as final

3 years agoMerge pull request #4257 from WoltLab/abstract-event-listener-error
Tim Düsterhus [Fri, 4 Jun 2021 08:51:44 +0000 (10:51 +0200)]
Merge pull request #4257 from WoltLab/abstract-event-listener-error

Make error message in AbstractEventListener more useful

3 years agoMake error message in AbstractEventListener more useful
Tim Düsterhus [Fri, 4 Jun 2021 08:16:30 +0000 (10:16 +0200)]
Make error message in AbstractEventListener more useful

3 years agoMerge branch '5.3'
Tim Düsterhus [Fri, 4 Jun 2021 08:30:45 +0000 (10:30 +0200)]
Merge branch '5.3'

3 years agoEnsure the style logo is properly preserved in the database when not performing changes
Tim Düsterhus [Fri, 4 Jun 2021 08:25:54 +0000 (10:25 +0200)]
Ensure the style logo is properly preserved in the database when not performing changes

This bug was introduced recently when the `!$file->isProcessed()` condition was
added. It was verified that the logo's filename remained stable within the file
system. However it was not verified that it was properly stored within the
database. As the previous style variables are deleted during the update we must
explicitly set the corresponding variable, otherwise it will be empty and the
logo will not be found.

see c72c06dc7bb21c5098613ab8fafc8596c8f6ce41
see #4240

3 years agoFix displaying `runStandalone` in devtools (#4255)
Fabii547 [Thu, 3 Jun 2021 10:09:41 +0000 (12:09 +0200)]
Fix displaying `runStandalone` in devtools (#4255)

3 years agoFix ids of instruction items in devtools (#4254)
Fabii547 [Thu, 3 Jun 2021 10:07:18 +0000 (12:07 +0200)]
Fix ids of instruction items in devtools (#4254)

3 years agoAdd 5.4 branch to GitHub workflows
Tim Düsterhus [Mon, 31 May 2021 14:19:13 +0000 (16:19 +0200)]
Add 5.4 branch to GitHub workflows

3 years agoRemove obsolete meta keywords input for monolingual pages (#4251)
Matthias Schmidt [Wed, 2 Jun 2021 14:35:36 +0000 (16:35 +0200)]
Remove obsolete meta keywords input for monolingual pages (#4251)

See #3637

3 years agoRelease 5.4.0 Beta 1 5.4.0_Beta_1
Alexander Ebert [Wed, 2 Jun 2021 12:58:45 +0000 (14:58 +0200)]
Release 5.4.0 Beta 1

3 years agoRemove obsolete private property/method from `MediaImporter`
Matthias Schmidt [Wed, 2 Jun 2021 08:12:57 +0000 (10:12 +0200)]
Remove obsolete private property/method from `MediaImporter`

See b3b5e461e0291d25d06f8d2b07bcdc18a4c5a391

3 years agoIncorrect property name
Marcel Werk [Tue, 1 Jun 2021 14:44:22 +0000 (16:44 +0200)]
Incorrect property name

3 years agoDeploy some last minute changes
Alexander Ebert [Tue, 1 Jun 2021 14:33:57 +0000 (16:33 +0200)]
Deploy some last minute changes

3 years agoMerge pull request #4248 from WoltLab/improved-article-bbcode
Alexander Ebert [Tue, 1 Jun 2021 13:46:25 +0000 (15:46 +0200)]
Merge pull request #4248 from WoltLab/improved-article-bbcode

Overhauled article bbcode using embedded content

3 years agoUse an `<img>` element with lazy loading for embedded content
Alexander Ebert [Tue, 1 Jun 2021 12:11:04 +0000 (14:11 +0200)]
Use an `<img>` element with lazy loading for embedded content

3 years agoHelper methods to query the style's cover photo dimensions
Alexander Ebert [Tue, 1 Jun 2021 12:10:45 +0000 (14:10 +0200)]
Helper methods to query the style's cover photo dimensions

3 years agoMerge branch 'master' into improved-article-bbcode
Alexander Ebert [Tue, 1 Jun 2021 11:41:04 +0000 (13:41 +0200)]
Merge branch 'master' into improved-article-bbcode

3 years agoAdd `labeledUrl` column to `update_com.woltlab.wcf_5.4.php`
Tim Düsterhus [Tue, 1 Jun 2021 07:38:51 +0000 (09:38 +0200)]
Add `labeledUrl` column to `update_com.woltlab.wcf_5.4.php`

Fixes #4249

3 years agoFix CSS formatting
Tim Düsterhus [Tue, 1 Jun 2021 07:28:12 +0000 (09:28 +0200)]
Fix CSS formatting

3 years agoOverhauled embedded content design
Marcel Werk [Mon, 31 May 2021 20:25:22 +0000 (22:25 +0200)]
Overhauled embedded content design

3 years agoGeneric styling for inline lists without list elements
Alexander Ebert [Mon, 31 May 2021 17:41:42 +0000 (19:41 +0200)]
Generic styling for inline lists without list elements

3 years agoFixed code style errors
Marcel Werk [Mon, 31 May 2021 16:44:02 +0000 (18:44 +0200)]
Fixed code style errors

3 years agoOverhauled article bbcode using embedded content
Marcel Werk [Mon, 31 May 2021 16:36:55 +0000 (18:36 +0200)]
Overhauled article bbcode using embedded content

3 years agoOverhauled embedded content design
Marcel Werk [Mon, 31 May 2021 16:35:52 +0000 (18:35 +0200)]
Overhauled embedded content design

3 years agoRelease 5.4.0 Beta 1
Alexander Ebert [Mon, 31 May 2021 13:41:28 +0000 (15:41 +0200)]
Release 5.4.0 Beta 1

3 years agoRemoved the upgrade support from 5.3.*
Alexander Ebert [Mon, 31 May 2021 13:02:03 +0000 (15:02 +0200)]
Removed the upgrade support from 5.3.*

3 years agoUpdating minified JavaScript files
WoltLab [Mon, 31 May 2021 13:00:42 +0000 (13:00 +0000)]
Updating minified JavaScript files

3 years agoMerge pull request #4245 from WoltLab/meta-description-system-pages
Joshua Rüsweg [Mon, 31 May 2021 12:47:28 +0000 (14:47 +0200)]
Merge pull request #4245 from WoltLab/meta-description-system-pages

Add custom meta description for system pages

3 years agoMerge branch '5.3'
Tim Düsterhus [Mon, 31 May 2021 10:38:08 +0000 (12:38 +0200)]
Merge branch '5.3'

3 years agoMerge pull request #4247 from WoltLab/usersOnly-guest
Tim Düsterhus [Mon, 31 May 2021 09:48:14 +0000 (11:48 +0200)]
Merge pull request #4247 from WoltLab/usersOnly-guest

Skip usersOnly permissions for the guest group during permission merge

3 years agoSkip usersOnly permissions for the guest group during permission merge
Tim Düsterhus [Mon, 31 May 2021 09:36:24 +0000 (11:36 +0200)]
Skip usersOnly permissions for the guest group during permission merge

The value of usersOnly permissions cannot be configured for the guest group
within the ACP, but the stored default value is taken into account during the
permission merge in UserGroupPermissionCacheBuilder nonetheless. This might result
in unexpected permissions for accounts that are not yet activated.

As an example taking away the “Can use conversations” for all groups might
still allow accounts that are not yet activated to use the conversations,
because of this preserved default.

Fix this issue by simply skipping the value of the guest group during the
merge, thus ignoring whatever value may be stored. This is safe, because the
resulting option list always includes the “Everyone” group.

see https://community.woltlab.com/thread/289879/

3 years agoWrong version number in exception during setup
Marcel Werk [Mon, 31 May 2021 09:43:49 +0000 (11:43 +0200)]
Wrong version number in exception during setup

3 years agoIncorrect handling of empty values for `accept`
Alexander Ebert [Mon, 31 May 2021 09:33:18 +0000 (11:33 +0200)]
Incorrect handling of empty values for `accept`

3 years agoAdd custom meta description for system pages
joshuaruesweg [Thu, 27 May 2021 13:49:12 +0000 (15:49 +0200)]
Add custom meta description for system pages

3 years agoTruncate SMTP replies in error messages to 250 characters instead of 80
Tim Düsterhus [Mon, 31 May 2021 07:29:52 +0000 (09:29 +0200)]
Truncate SMTP replies in error messages to 250 characters instead of 80

3 years agoIncorrect position of the quote tooltip on touch devices
Alexander Ebert [Sun, 30 May 2021 10:23:51 +0000 (12:23 +0200)]
Incorrect position of the quote tooltip on touch devices

3 years agoIncorrect import of meta keywords for CMS pages
Marcel Werk [Fri, 28 May 2021 16:45:45 +0000 (18:45 +0200)]
Incorrect import of meta keywords for CMS pages

3 years agoMerge pull request #4244 from WoltLab/ajax-invoke-direct
Tim Düsterhus [Fri, 28 May 2021 14:59:27 +0000 (16:59 +0200)]
Merge pull request #4244 from WoltLab/ajax-invoke-direct

Send HTTP 405 on direct access to an AJAXInvokeAction

3 years agoSend HTTP 405 on direct access to an AJAXInvokeAction
Tim Düsterhus [Fri, 28 May 2021 14:41:49 +0000 (16:41 +0200)]
Send HTTP 405 on direct access to an AJAXInvokeAction

3 years agoUpdate version number in devtools configuration filename to 5.4
Matthias Schmidt [Fri, 28 May 2021 14:09:35 +0000 (16:09 +0200)]
Update version number in devtools configuration filename to 5.4

3 years agoIncrease the default font size and darken the text color a bit
Alexander Ebert [Fri, 28 May 2021 11:43:44 +0000 (13:43 +0200)]
Increase the default font size and darken the text color a bit

3 years agoTitles of MFA methods now link to the management section
Alexander Ebert [Fri, 28 May 2021 11:41:40 +0000 (13:41 +0200)]
Titles of MFA methods now link to the management section

3 years agoExplicit dimensions for language icons
Alexander Ebert [Fri, 28 May 2021 09:45:22 +0000 (11:45 +0200)]
Explicit dimensions for language icons

3 years agoMerge pull request #4242 from WoltLab/fix-setup-layout
Alexander Ebert [Fri, 28 May 2021 09:36:42 +0000 (11:36 +0200)]
Merge pull request #4242 from WoltLab/fix-setup-layout

Fix layout of WCFSetup

3 years agoFix incorrect sized logo
joshuaruesweg [Thu, 27 May 2021 19:28:44 +0000 (21:28 +0200)]
Fix incorrect sized logo

3 years agoFix layout of WCFSetup
joshuaruesweg [Thu, 27 May 2021 17:29:56 +0000 (19:29 +0200)]
Fix layout of WCFSetup

Fixes #4215

3 years agoMerge branch '5.3'
Matthias Schmidt [Thu, 27 May 2021 08:00:32 +0000 (10:00 +0200)]
Merge branch '5.3'

3 years agoFix first custom smiley category not being preloaded
SirWill [Sat, 1 May 2021 18:15:54 +0000 (20:15 +0200)]
Fix first custom smiley category not being preloaded

3 years agoMerge pull request #4240 from WoltLab/pageLogo-stable-name
Joshua Rüsweg [Thu, 27 May 2021 07:23:59 +0000 (09:23 +0200)]
Merge pull request #4240 from WoltLab/pageLogo-stable-name

Do not process the pageLogo in StyleAction::updateVariables() if it is unchanged

3 years agoDo not process the pageLogo in StyleAction::updateVariables() if it is unchanged
Tim Düsterhus [Wed, 26 May 2021 14:48:00 +0000 (16:48 +0200)]
Do not process the pageLogo in StyleAction::updateVariables() if it is unchanged

This change ensures that the filename of the logo remains the same, unless the
file actually is modified.

A fix for this issue was initially attempted in
cc17f302902fb62c78b4411dadc3243913f18c74. However that commit was much more
complex and it introduced additional bugs, because it no longer passed an
explicit `null` for removed files, thus breaking the update of the related
database columns. It was subsequently reverted in
dd7c98858d406f8ca9824770ae8a68edde451493.

3 years agoMerge branch '5.3'
Tim Düsterhus [Wed, 26 May 2021 14:38:37 +0000 (16:38 +0200)]
Merge branch '5.3'

3 years agoReduce size of og images
Marcel Werk [Wed, 26 May 2021 13:55:56 +0000 (15:55 +0200)]
Reduce size of og images

3 years agoMerge pull request #4239 from WoltLab/style-edit-reverts
Marcel Werk [Wed, 26 May 2021 13:45:28 +0000 (15:45 +0200)]
Merge pull request #4239 from WoltLab/style-edit-reverts

Revert broken commits in Style Editor

3 years agoRevert "Prevent rewriting filenames for processed files"
Tim Düsterhus [Wed, 26 May 2021 13:05:20 +0000 (15:05 +0200)]
Revert "Prevent rewriting filenames for processed files"

This change is bogus, because it completely changes StyleAction's API and it
introduces bugs (namely not updating the database). One of these was fixed in
88b962c25b4c2dd0c312c6f7e4c11f15a1263cf4, but other fields are also affected.

As this commit doesn't fix an actual bug, but only a small inelegance (namely
the logo's path changing whenever the style is changed, even if the logo is
unchanged) this can be safely reverted until a proper fix is developed.

This reverts commit cc17f302902fb62c78b4411dadc3243913f18c74.

3 years agoRevert "Fix updating pageLogo in StyleAction"
Tim Düsterhus [Wed, 26 May 2021 13:17:15 +0000 (15:17 +0200)]
Revert "Fix updating pageLogo in StyleAction"

This was a fix for the broken cc17f302902fb62c78b4411dadc3243913f18c74 which
will also be reverted.

This reverts commit 4b2f4354e6fab91ea1d7b38d7009f1f7f990d357.

3 years agoRevert "Only rebuild favicons if there is a new image uploaded"
Tim Düsterhus [Wed, 26 May 2021 13:16:42 +0000 (15:16 +0200)]
Revert "Only rebuild favicons if there is a new image uploaded"

This builds upon the broken cc17f302902fb62c78b4411dadc3243913f18c74 which will
also be reverted.

This reverts commit 9bed2ebfa4e250a00794cdc75755f379dc17a696.

3 years agoRevert "Cover photo deletion was not saved properly"
Tim Düsterhus [Wed, 26 May 2021 13:04:37 +0000 (15:04 +0200)]
Revert "Cover photo deletion was not saved properly"

This was a fix for the broken cc17f302902fb62c78b4411dadc3243913f18c74 which
will also be reverted.

This reverts commit 88b962c25b4c2dd0c312c6f7e4c11f15a1263cf4.

3 years agoFix `@since` tag for StyleAction::updateCustomAssets()
Tim Düsterhus [Wed, 26 May 2021 12:53:20 +0000 (14:53 +0200)]
Fix `@since` tag for StyleAction::updateCustomAssets()

see 908e40a36a87ba7039c067cd8343087d701bef70

3 years agoMerge pull request #4238 from WoltLab/php7.1-compat
Tim Düsterhus [Wed, 26 May 2021 12:52:37 +0000 (14:52 +0200)]
Merge pull request #4238 from WoltLab/php7.1-compat

Remove PHP 7.1 compatibility layer in AvatarUploadFileValidationStrategy

3 years agoTrim trailing whitespace
Tim Düsterhus [Wed, 26 May 2021 12:48:12 +0000 (14:48 +0200)]
Trim trailing whitespace

3 years agoProperly delete all variants of style cover photos
Tim Düsterhus [Wed, 26 May 2021 12:36:45 +0000 (14:36 +0200)]
Properly delete all variants of style cover photos

This needed some workarounds to properly account for the WebP variant.

3 years agoUpdate `$newLocation` after creating the WebP variant of a style's cover photo
Tim Düsterhus [Wed, 26 May 2021 12:35:22 +0000 (14:35 +0200)]
Update `$newLocation` after creating the WebP variant of a style's cover photo

This ensures that the StyleEditForm always uses the non-WebP version for processing.

3 years agoUse the non-WebP version of the cover photo in StyleEditForm
Tim Düsterhus [Wed, 26 May 2021 12:27:33 +0000 (14:27 +0200)]
Use the non-WebP version of the cover photo in StyleEditForm

3 years agoRecognize IMAGETYPE_WEBP in StyleAddForm
Tim Düsterhus [Wed, 26 May 2021 12:10:21 +0000 (14:10 +0200)]
Recognize IMAGETYPE_WEBP in StyleAddForm

3 years agoRemove PHP 7.1 compatibility layer in AvatarUploadFileValidationStrategy
Tim Düsterhus [Wed, 26 May 2021 11:07:18 +0000 (13:07 +0200)]
Remove PHP 7.1 compatibility layer in AvatarUploadFileValidationStrategy

3 years agoFix detection of WebP images in `ImageUtil::createWebpVariant()`
Tim Düsterhus [Wed, 26 May 2021 11:05:54 +0000 (13:05 +0200)]
Fix detection of WebP images in `ImageUtil::createWebpVariant()`

3 years agoFix `$forceWebP` parameter in `UserCoverPhoto::getLocation()` and `::getURL()`
Tim Düsterhus [Wed, 26 May 2021 10:59:18 +0000 (12:59 +0200)]
Fix `$forceWebP` parameter in `UserCoverPhoto::getLocation()` and `::getURL()`

3 years agoAdd missing backslash in `Attribute` attribute for `\wcf\SensitiveArgument`
Tim Düsterhus [Wed, 26 May 2021 10:21:12 +0000 (12:21 +0200)]
Add missing backslash in `Attribute` attribute for `\wcf\SensitiveArgument`

3 years agoUpdate tslib to 2.2.0
Tim Düsterhus [Wed, 26 May 2021 09:27:40 +0000 (11:27 +0200)]
Update tslib to 2.2.0

3 years agoMerge pull request #4236 from WoltLab/user-rebuild-memory-leak
Alexander Ebert [Tue, 25 May 2021 15:37:08 +0000 (17:37 +0200)]
Merge pull request #4236 from WoltLab/user-rebuild-memory-leak

Fetch UserProfiles live to avoid memory leaks through the RuntimeCache on CLI

3 years agoFix code formatting
Matthias Schmidt [Tue, 25 May 2021 09:04:20 +0000 (11:04 +0200)]
Fix code formatting

3 years agoMerge branch '5.3'
Matthias Schmidt [Tue, 25 May 2021 08:57:54 +0000 (10:57 +0200)]
Merge branch '5.3'

3 years agoIgnore disabled smiley categories for WYSIWYG form field
Matthias Schmidt [Tue, 25 May 2021 08:54:31 +0000 (10:54 +0200)]
Ignore disabled smiley categories for WYSIWYG form field

3 years agoFix code formatting
Matthias Schmidt [Tue, 25 May 2021 06:17:30 +0000 (08:17 +0200)]
Fix code formatting

3 years agoMerge branch '5.3'
Matthias Schmidt [Tue, 25 May 2021 06:13:26 +0000 (08:13 +0200)]
Merge branch '5.3'

3 years agoFix media clipboard inserting when having multiple editors
Matthias Schmidt [Tue, 25 May 2021 06:01:52 +0000 (08:01 +0200)]
Fix media clipboard inserting when having multiple editors

Ensure that the clipboard insertion event listener is only added once and that the active media manager is set in the clipboard handler when opening a media manager window.

3 years agoEnsure uniqueness of media insert dialogs when having multiple editors
Matthias Schmidt [Tue, 25 May 2021 05:46:36 +0000 (07:46 +0200)]
Ensure uniqueness of media insert dialogs when having multiple editors

3 years agoFetch UserProfiles live to avoid memory leaks through the RuntimeCache on CLI
Alexander Ebert [Fri, 21 May 2021 15:06:21 +0000 (17:06 +0200)]
Fetch UserProfiles live to avoid memory leaks through the RuntimeCache on CLI