Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Models #335

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/PHPMD/rules.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<!-- rules from the "naming" rule set -->
<rule ref="rulesets/naming.xml/ShortVariable">
<properties>
<property name="exceptions" value="id"/>
<property name="exceptions" value="id,ip"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml/LongVariable">
Expand Down
129 changes: 129 additions & 0 deletions src/Domain/Model/Analytics/LinkTrack.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
<?php

declare(strict_types=1);

namespace PhpList\Core\Domain\Model\Analytics;

use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM;
use PhpList\Core\Domain\Model\Interfaces\DomainModel;
use PhpList\Core\Domain\Model\Interfaces\Identity;
use PhpList\Core\Domain\Repository\Analytics\LinkTrackRepository;

#[ORM\Entity(repositoryClass: LinkTrackRepository::class)]
#[ORM\Table(name: 'phplist_linktrack')]
#[ORM\UniqueConstraint(name: 'miduidurlindex', columns: ['messageid', 'userid', 'url'])]
#[ORM\Index(name: 'midindex', columns: ['messageid'])]
#[ORM\Index(name: 'miduidindex', columns: ['messageid', 'userid'])]
#[ORM\Index(name: 'uidindex', columns: ['userid'])]
#[ORM\Index(name: 'urlindex', columns: ['url'])]
class LinkTrack implements DomainModel, Identity
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(name:'linkid', type: 'integer')]
private ?int $id = null;

#[ORM\Column(name: 'messageid', type: 'integer')]
private int $messageId;

#[ORM\Column(name: 'userid', type: 'integer')]
private int $userId;

#[ORM\Column(type: 'string', length: 255, nullable: true)]
private ?string $url = null;

#[ORM\Column(type: 'string', length: 255, nullable: true)]
private ?string $forward = null;

#[ORM\Column(name: 'firstclick', type: 'datetime', nullable: true)]
private ?DateTimeInterface $firstClick = null;

#[ORM\Column(name: 'latestclick', type: 'datetime', nullable: true, options: ['default' => 'CURRENT_TIMESTAMP'])]
private ?DateTimeInterface $latestClick = null;

#[ORM\Column(type: 'integer', nullable: true, options: ['default' => 0])]
private int $clicked = 0;

public function getId(): int
{
return $this->id;
}

public function getMessageId(): int
{
return $this->messageId;
}

public function setMessageId(int $messageId): self
{
$this->messageId = $messageId;
return $this;
}

public function getUserId(): int
{
return $this->userId;
}

public function setUserId(int $userId): self
{
$this->userId = $userId;
return $this;
}

public function getUrl(): ?string
{
return $this->url;
}

public function setUrl(?string $url): self
{
$this->url = $url;
return $this;
}

public function getForward(): ?string
{
return $this->forward;
}

public function setForward(?string $forward): self
{
$this->forward = $forward;
return $this;
}

public function getFirstClick(): ?DateTimeInterface
{
return $this->firstClick;
}

public function setFirstClick(?DateTimeInterface $firstClick): self
{
$this->firstClick = $firstClick;
return $this;
}

public function getLatestClick(): ?DateTimeInterface
{
return $this->latestClick;
}

public function setLatestClick(?DateTimeInterface $latestClick): self
{
$this->latestClick = $latestClick;
return $this;
}

public function getClicked(): int
{
return $this->clicked;
}

public function setClicked(int $clicked): self
{
$this->clicked = $clicked;
return $this;
}
}
77 changes: 77 additions & 0 deletions src/Domain/Model/Analytics/LinkTrackForward.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php

declare(strict_types=1);

namespace PhpList\Core\Domain\Model\Analytics;

use Doctrine\ORM\Mapping as ORM;
use PhpList\Core\Domain\Model\Interfaces\DomainModel;
use PhpList\Core\Domain\Model\Interfaces\Identity;
use PhpList\Core\Domain\Model\Traits\IdentityTrait;
use PhpList\Core\Domain\Repository\Analytics\LinkTrackForwardRepository;

#[ORM\Entity(repositoryClass: LinkTrackForwardRepository::class)]
#[ORM\Table(name: 'phplist_linktrack_forward')]
#[ORM\UniqueConstraint(name: 'urlunique', columns: ['urlhash'])]
#[ORM\Index(name: 'urlindex', columns: ['url'])]
#[ORM\Index(name: 'uuididx', columns: ['uuid'])]
class LinkTrackForward implements DomainModel, Identity
{
use IdentityTrait;

#[ORM\Column(type: 'string', length: 2083, nullable: true)]
private ?string $url = null;

#[ORM\Column(name: 'urlhash', type: 'string', length: 32, nullable: true)]
private ?string $urlHash = null;

#[ORM\Column(type: 'string', length: 36, nullable: true, options: ['default' => ''])]
private ?string $uuid = '';

#[ORM\Column(type: 'boolean', nullable: true, options: ['default' => 0])]
private bool $personalise = false;

public function getUrl(): ?string
{
return $this->url;
}

public function setUrl(?string $url): self
{
$this->url = $url;
return $this;
}

public function getUrlHash(): ?string
{
return $this->urlHash;
}

public function setUrlHash(?string $urlHash): self
{
$this->urlHash = $urlHash;
return $this;
}

public function getUuid(): ?string
{
return $this->uuid;
}

public function setUuid(?string $uuid): self
{
$this->uuid = $uuid;
return $this;
}

public function isPersonalise(): bool
{
return $this->personalise;
}

public function setPersonalise(bool $personalise): self
{
$this->personalise = $personalise;
return $this;
}
}
131 changes: 131 additions & 0 deletions src/Domain/Model/Analytics/LinkTrackMl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
<?php

declare(strict_types=1);

namespace PhpList\Core\Domain\Model\Analytics;

use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM;
use PhpList\Core\Domain\Model\Interfaces\DomainModel;
use PhpList\Core\Domain\Repository\Analytics\LinkTrackMlRepository;

#[ORM\Entity(repositoryClass: LinkTrackMlRepository::class)]
#[ORM\Table(name: 'phplist_linktrack_ml')]
#[ORM\Index(name: 'fwdindex', columns: ['forwardid'])]
#[ORM\Index(name: 'midindex', columns: ['messageid'])]
class LinkTrackMl implements DomainModel
{
#[ORM\Id]
#[ORM\Column(name: 'messageid', type: 'integer')]
private int $messageId;

#[ORM\Id]
#[ORM\Column(name: 'forwardid', type: 'integer')]
private int $forwardId;

#[ORM\Column(name: 'firstclick', type: 'datetime', nullable: true)]
private ?DateTimeInterface $firstClick = null;

#[ORM\Column(name:'latestclick', type: 'datetime', nullable: true)]
private ?DateTimeInterface $latestClick = null;

#[ORM\Column(type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $total = 0;

#[ORM\Column(type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $clicked = 0;

#[ORM\Column(name: 'htmlclicked', type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $htmlClicked = 0;

#[ORM\Column(name: 'textclicked', type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $textClicked = 0;

public function getMessageId(): int
{
return $this->messageId;
}

public function setMessageId(int $messageId): self
{
$this->messageId = $messageId;
return $this;
}

public function getForwardId(): int
{
return $this->forwardId;
}

public function setForwardId(int $forwardId): self
{
$this->forwardId = $forwardId;
return $this;
}

public function getFirstClick(): ?DateTimeInterface
{
return $this->firstClick;
}

public function setFirstClick(?DateTimeInterface $firstClick): self
{
$this->firstClick = $firstClick;
return $this;
}

public function getLatestClick(): ?DateTimeInterface
{
return $this->latestClick;
}

public function setLatestClick(?DateTimeInterface $latestClick): self
{
$this->latestClick = $latestClick;
return $this;
}

public function getTotal(): ?int
{
return $this->total;
}

public function setTotal(?int $total): self
{
$this->total = $total;
return $this;
}

public function getClicked(): ?int
{
return $this->clicked;
}

public function setClicked(?int $clicked): self
{
$this->clicked = $clicked;
return $this;
}

public function getHtmlClicked(): ?int
{
return $this->htmlClicked;
}

public function setHtmlClicked(?int $htmlClicked): self
{
$this->htmlClicked = $htmlClicked;
return $this;
}

public function getTextClicked(): ?int
{
return $this->textClicked;
}

public function setTextClicked(?int $textClicked): self
{
$this->textClicked = $textClicked;
return $this;
}
}
Loading
Loading