Нет описания

UserAgentEntity.php 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace MailPoet\Entities;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
  5. use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
  6. use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
  7. use MailPoetVendor\Doctrine\ORM\Mapping as ORM;
  8. /**
  9. * @ORM\Entity()
  10. * @ORM\Table(name="user_agents")
  11. */
  12. class UserAgentEntity {
  13. use AutoincrementedIdTrait;
  14. use CreatedAtTrait;
  15. use UpdatedAtTrait;
  16. public const USER_AGENT_TYPE_HUMAN = 0;
  17. public const USER_AGENT_TYPE_MACHINE = 1;
  18. public const MACHINE_USER_AGENTS = [
  19. 'Mozilla/5.0',
  20. ];
  21. /**
  22. * @ORM\Column(type="string")
  23. * @var string
  24. */
  25. private $hash;
  26. /**
  27. * @ORM\Column(type="string")
  28. * @var string
  29. */
  30. private $userAgent;
  31. public function __construct(
  32. string $userAgent
  33. ) {
  34. $this->setUserAgent($userAgent);
  35. }
  36. public function getUserAgent(): string {
  37. return $this->userAgent;
  38. }
  39. public function setUserAgent(string $userAgent): void {
  40. $this->userAgent = $userAgent;
  41. $this->hash = (string)crc32($userAgent);
  42. }
  43. public function getHash(): string {
  44. return $this->hash;
  45. }
  46. public function getUserAgentType(): int {
  47. if (in_array($this->getUserAgent(), self::MACHINE_USER_AGENTS, true)) {
  48. return self::USER_AGENT_TYPE_MACHINE;
  49. }
  50. return self::USER_AGENT_TYPE_HUMAN;
  51. }
  52. }