UrlShortenerOptions.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. declare(strict_types=1);
  3. namespace Shlinkio\Shlink\Core\Options;
  4. use Laminas\Stdlib\AbstractOptions;
  5. use function Functional\contains;
  6. use const Shlinkio\Shlink\Core\DEFAULT_REDIRECT_CACHE_LIFETIME;
  7. use const Shlinkio\Shlink\Core\DEFAULT_REDIRECT_STATUS_CODE;
  8. class UrlShortenerOptions extends AbstractOptions
  9. {
  10. protected $__strictMode__ = false; // phpcs:ignore
  11. private bool $validateUrl = true;
  12. private int $redirectStatusCode = DEFAULT_REDIRECT_STATUS_CODE;
  13. private int $redirectCacheLifetime = DEFAULT_REDIRECT_CACHE_LIFETIME;
  14. private bool $autoResolveTitles = false;
  15. private bool $anonymizeRemoteAddr = true;
  16. private bool $trackOrphanVisits = true;
  17. public function isUrlValidationEnabled(): bool
  18. {
  19. return $this->validateUrl;
  20. }
  21. protected function setValidateUrl(bool $validateUrl): void
  22. {
  23. $this->validateUrl = $validateUrl;
  24. }
  25. public function redirectStatusCode(): int
  26. {
  27. return $this->redirectStatusCode;
  28. }
  29. protected function setRedirectStatusCode(int $redirectStatusCode): void
  30. {
  31. $this->redirectStatusCode = $this->normalizeRedirectStatusCode($redirectStatusCode);
  32. }
  33. private function normalizeRedirectStatusCode(int $statusCode): int
  34. {
  35. return contains([301, 302], $statusCode) ? $statusCode : DEFAULT_REDIRECT_STATUS_CODE;
  36. }
  37. public function redirectCacheLifetime(): int
  38. {
  39. return $this->redirectCacheLifetime;
  40. }
  41. protected function setRedirectCacheLifetime(int $redirectCacheLifetime): void
  42. {
  43. $this->redirectCacheLifetime = $redirectCacheLifetime > 0
  44. ? $redirectCacheLifetime
  45. : DEFAULT_REDIRECT_CACHE_LIFETIME;
  46. }
  47. public function autoResolveTitles(): bool
  48. {
  49. return $this->autoResolveTitles;
  50. }
  51. protected function setAutoResolveTitles(bool $autoResolveTitles): void
  52. {
  53. $this->autoResolveTitles = $autoResolveTitles;
  54. }
  55. public function anonymizeRemoteAddr(): bool
  56. {
  57. return $this->anonymizeRemoteAddr;
  58. }
  59. protected function setAnonymizeRemoteAddr(bool $anonymizeRemoteAddr): void
  60. {
  61. $this->anonymizeRemoteAddr = $anonymizeRemoteAddr;
  62. }
  63. public function trackOrphanVisits(): bool
  64. {
  65. return $this->trackOrphanVisits;
  66. }
  67. protected function setTrackOrphanVisits(bool $trackOrphanVisits): void
  68. {
  69. $this->trackOrphanVisits = $trackOrphanVisits;
  70. }
  71. }