1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-08-01 17:38:38 +00:00
wallabag/src/Entity/Tag.php

153 lines
2.8 KiB
PHP
Raw Normal View History

2015-01-22 17:18:56 +01:00
<?php
2024-02-19 01:30:12 +01:00
namespace Wallabag\Entity;
2015-01-22 17:18:56 +01:00
use Doctrine\Common\Collections\ArrayCollection;
2015-01-22 17:18:56 +01:00
use Doctrine\ORM\Mapping as ORM;
2017-07-01 09:52:38 +02:00
use Gedmo\Mapping\Annotation as Gedmo;
2015-02-20 20:29:33 +01:00
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
use JMS\Serializer\Annotation\XmlRoot;
2015-01-22 17:18:56 +01:00
/**
2015-05-30 13:52:26 +02:00
* Tag.
2015-01-22 17:18:56 +01:00
*
2015-02-20 17:20:12 +01:00
* @XmlRoot("tag")
* @ORM\Table(
* name="`tag`",
* indexes={
2024-03-10 17:30:29 +01:00
* @ORM\Index(columns={"label"}),
* }
* )
2024-02-19 01:30:12 +01:00
* @ORM\Entity(repositoryClass="Wallabag\Repository\TagRepository")
2015-02-20 20:29:33 +01:00
* @ExclusionPolicy("all")
2015-01-22 17:18:56 +01:00
*/
class Tag
2015-01-22 17:18:56 +01:00
{
/**
2015-05-30 13:52:26 +02:00
* @var int
2015-01-22 17:18:56 +01:00
*
2015-02-20 20:29:33 +01:00
* @Expose
* @ORM\Column(name="id", type="integer")
2015-01-22 17:18:56 +01:00
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
2015-01-22 17:18:56 +01:00
*/
private $id;
/**
* @var string
*
2015-02-20 20:29:33 +01:00
* @Expose
* @ORM\Column(name="label", type="text")
2015-01-22 17:18:56 +01:00
*/
private $label;
2015-01-22 17:18:56 +01:00
2015-10-14 21:30:25 +02:00
/**
2015-12-29 14:50:52 +01:00
* @Expose
* @Gedmo\Slug(fields={"label"}, prefix="t:")
2015-10-14 21:30:25 +02:00
* @ORM\Column(length=128, unique=true)
*/
private $slug;
2015-02-20 20:29:33 +01:00
/**
2015-02-24 07:42:09 +01:00
* @ORM\ManyToMany(targetEntity="Entry", mappedBy="tags", cascade={"persist"})
2015-02-20 20:29:33 +01:00
*/
private $entries;
2015-12-29 14:50:52 +01:00
public function __construct()
2015-02-24 07:42:09 +01:00
{
$this->entries = new ArrayCollection();
}
public function __toString()
{
return $this->label;
}
2015-01-22 17:18:56 +01:00
/**
2015-05-30 13:52:26 +02:00
* Get id.
2015-01-22 17:18:56 +01:00
*
2015-05-30 13:52:26 +02:00
* @return int
2015-01-22 17:18:56 +01:00
*/
public function getId()
{
return $this->id;
}
/**
2015-05-30 13:52:26 +02:00
* Set label.
*
* @param string $label
2015-01-22 17:18:56 +01:00
*
* @return Tag
2015-01-22 17:18:56 +01:00
*/
public function setLabel($label)
2015-01-22 17:18:56 +01:00
{
2021-01-18 10:38:56 +01:00
$this->label = mb_convert_case($label, \MB_CASE_LOWER);
2015-01-22 17:18:56 +01:00
return $this;
}
/**
2015-05-30 13:52:26 +02:00
* Get label.
2015-01-22 17:18:56 +01:00
*
2015-01-31 19:09:34 +01:00
* @return string
2015-01-22 17:18:56 +01:00
*/
public function getLabel()
2015-01-22 17:18:56 +01:00
{
2015-02-20 16:38:24 +01:00
return $this->label;
2015-01-22 17:18:56 +01:00
}
2015-02-24 07:42:09 +01:00
2015-10-14 21:30:25 +02:00
public function getSlug()
{
return $this->slug;
}
2015-02-24 07:42:09 +01:00
public function addEntry(Entry $entry)
{
if ($this->entries->contains($entry)) {
return;
}
$this->entries->add($entry);
$entry->addTag($this);
}
public function removeEntry(Entry $entry)
{
if (!$this->entries->contains($entry)) {
return;
}
$this->entries->removeElement($entry);
$entry->removeTag($this);
2015-02-24 07:42:09 +01:00
}
2015-03-05 19:41:23 +01:00
2015-08-19 11:46:21 +02:00
public function hasEntry($entry)
{
return $this->entries->contains($entry);
}
2016-02-10 17:41:28 +01:00
/**
* Get entries for this tag.
*
* @return ArrayCollection<Entry>
*/
public function getEntries()
{
return $this->entries;
}
public function getEntriesByUserId($userId)
{
$filteredEntries = new ArrayCollection();
foreach ($this->entries as $entry) {
if ($entry->getUser()->getId() === $userId) {
$filteredEntries->add($entry);
}
}
return $filteredEntries;
}
2015-01-22 17:18:56 +01:00
}