diff --git a/CHANGELOG.md b/CHANGELOG.md index fad83e95..441218f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this ### Changed * [#1268](https://github.com/shlinkio/shlink/issues/1268) Updated dependencies, including symfony/console 6 and mezzio/mezzio-swoole 4. +* [#1283](https://github.com/shlinkio/shlink/issues/1283) Changed behavior of `DELETE_SHORT_URL_THRESHOLD` env var, disabling the feature if a value was not provided. ### Deprecated * *Nothing* diff --git a/UPGRADE.md b/UPGRADE.md index 815dc2dd..fa6c3c7f 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -20,6 +20,10 @@ * `tag:create`: Creating orphan tags makes no sense. * Params in camelCase format are no longer supported. They all have an equivalent kebab-case replacement. (for example, from `--startDate` to `--start-date`). * The `short-url:create` command no longer accepts the `--no-validate-url` flag. Now URLs are never validated, unless `--validate-url` is passed. +* The CLI installer tool entry-points have changed. + * `bin/install`: replaced by `vendor/bin/shlink-installer install` + * `bin/update`: replaced by `vendor/bin/shlink-installer update` + * `bin/set-option`: replaced by `vendor/bin/shlink-installer set-option` ### Changes in config @@ -31,6 +35,8 @@ * `SHORT_DOMAIN_SCHEMA`: Replaced by `IS_HTTPS_ENABLED`. * `USE_HTTPS`: Replaced by `IS_HTTPS_ENABLED`. * `VALIDATE_URLS`: There's no replacement. URLs are not validated, unless explicitly requested during creation or edition. +* The next env vars behavior has changed: + * `DELETE_SHORT_URL_THRESHOLD`: Now, if this env var is not provided, the "visits threshold" won't be checked at all when deleting short URLs. Make sure you explicitly provide a value if you want to enable this feature. ### Other changes diff --git a/bin/install b/bin/install deleted file mode 100755 index d20db86d..00000000 --- a/bin/install +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env php - [ - 'check_visits_threshold' => true, - 'visits_threshold' => (int) env('DELETE_SHORT_URL_THRESHOLD', DEFAULT_DELETE_SHORT_URL_THRESHOLD), - ], + 'delete_short_urls' => [ + 'check_visits_threshold' => $threshold !== null, + 'visits_threshold' => (int) ($threshold ?? DEFAULT_DELETE_SHORT_URL_THRESHOLD), + ], -]; + ]; +})(); diff --git a/config/autoload/installer.global.php b/config/autoload/installer.global.php index 238dea42..9259b061 100644 --- a/config/autoload/installer.global.php +++ b/config/autoload/installer.global.php @@ -22,7 +22,6 @@ return [ Option\Database\DatabaseMySqlOptionsConfigOption::class, Option\UrlShortener\ShortDomainHostConfigOption::class, Option\UrlShortener\ShortDomainSchemaConfigOption::class, - Option\UrlShortener\ValidateUrlConfigOption::class, Option\Visit\VisitsWebhooksConfigOption::class, Option\Visit\OrphanVisitsWebhooksConfigOption::class, Option\Redirect\BaseUrlRedirectConfigOption::class, @@ -33,7 +32,7 @@ return [ Option\BasePathConfigOption::class, Option\Worker\TaskWorkerNumConfigOption::class, Option\Worker\WebWorkerNumConfigOption::class, - Option\RedisServersConfigOption::class, + Option\RedisConfigOption::class, Option\UrlShortener\ShortCodeLengthOption::class, Option\Mercure\EnableMercureConfigOption::class, Option\Mercure\MercurePublicUrlConfigOption::class, diff --git a/module/Rest/test-api/Action/DeleteShortUrlTest.php b/module/Rest/test-api/Action/DeleteShortUrlTest.php index 01b5b7bc..5cac3dbd 100644 --- a/module/Rest/test-api/Action/DeleteShortUrlTest.php +++ b/module/Rest/test-api/Action/DeleteShortUrlTest.php @@ -33,26 +33,6 @@ class DeleteShortUrlTest extends ApiTestCase self::assertEquals($domain, $payload['domain'] ?? null); } - /** @test */ - public function unprocessableEntityIsReturnedWhenTryingToDeleteUrlWithTooManyVisits(): void - { - // Generate visits first - for ($i = 0; $i < 20; $i++) { - self::assertEquals(self::STATUS_FOUND, $this->callShortUrl('abc123')->getStatusCode()); - } - $expectedDetail = 'Impossible to delete short URL with short code "abc123", since it has more than "15" ' - . 'visits.'; - - $resp = $this->callApiWithKey(self::METHOD_DELETE, '/short-urls/abc123'); - $payload = $this->getJsonResponsePayload($resp); - - self::assertEquals(self::STATUS_UNPROCESSABLE_ENTITY, $resp->getStatusCode()); - self::assertEquals(self::STATUS_UNPROCESSABLE_ENTITY, $payload['status']); - self::assertEquals('INVALID_SHORT_URL_DELETION', $payload['type']); - self::assertEquals($expectedDetail, $payload['detail']); - self::assertEquals('Cannot delete short URL', $payload['title']); - } - /** @test */ public function properShortUrlIsDeletedWhenDomainIsProvided(): void {