1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-06-27 16:36:00 +00:00
wallabag/src/Entity/TaggingRule.php

135 lines
2.6 KiB
PHP
Raw Normal View History

2015-10-11 17:14:50 +02:00
<?php
2024-02-19 01:30:12 +01:00
namespace Wallabag\Entity;
2015-10-11 17:14:50 +02:00
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Exclude;
use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\XmlRoot;
use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert;
use Symfony\Component\Validator\Constraints as Assert;
2025-04-05 12:55:51 +02:00
use Wallabag\Repository\TaggingRuleRepository;
2015-10-11 17:14:50 +02:00
/**
2015-10-31 16:29:38 +01:00
* Tagging rule.
2015-10-11 17:14:50 +02:00
*/
2025-04-05 12:55:51 +02:00
#[ORM\Table(name: '`tagging_rule`')]
#[ORM\Entity(repositoryClass: TaggingRuleRepository::class)]
2025-04-05 15:12:30 +02:00
#[XmlRoot('tagging_rule')]
class TaggingRule implements RuleInterface
2015-10-11 17:14:50 +02:00
{
/**
* @var int
*/
2025-04-05 12:55:51 +02:00
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
2015-10-11 17:14:50 +02:00
private $id;
/**
* @var string
*
* @RulerZAssert\ValidRule(
* allowed_variables={"title", "url", "isArchived", "isStarred", "content", "language", "mimetype", "readingTime", "domainName"},
* allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or", "matches", "notmatches"}
* )
2015-10-11 17:14:50 +02:00
*/
2025-04-05 12:55:51 +02:00
#[ORM\Column(name: 'rule', type: 'string', nullable: false)]
2025-04-05 15:06:57 +02:00
#[Assert\NotBlank]
#[Assert\Length(max: 255)]
2025-04-05 15:12:30 +02:00
#[Groups(['export_tagging_rule'])]
2015-10-11 17:14:50 +02:00
private $rule;
/**
2023-11-16 09:36:47 +01:00
* @var array<string>
2015-10-11 17:14:50 +02:00
*/
2025-04-05 12:55:51 +02:00
#[ORM\Column(name: 'tags', type: 'simple_array', nullable: false)]
2025-04-05 15:06:57 +02:00
#[Assert\NotBlank]
2025-04-05 15:12:30 +02:00
#[Groups(['export_tagging_rule'])]
2015-10-11 17:14:50 +02:00
private $tags = [];
2025-04-05 12:55:51 +02:00
#[ORM\ManyToOne(targetEntity: Config::class, inversedBy: 'taggingRules')]
2025-04-05 15:12:30 +02:00
#[Exclude]
2015-10-11 17:14:50 +02:00
private $config;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set rule.
*
* @param string $rule
*
* @return TaggingRule
*/
public function setRule($rule)
{
$this->rule = $rule;
return $this;
}
/**
* Get rule.
*
* @return string
*/
public function getRule()
{
return $this->rule;
}
/**
* Set tags.
*
* @param array <string> $tags
2015-10-11 17:14:50 +02:00
*
* @return TaggingRule
*/
public function setTags(array $tags)
{
$this->tags = $tags;
return $this;
}
/**
* Get tags.
*
* @return array<string>
*/
public function getTags()
{
return $this->tags;
}
/**
* Set config.
*
* @return TaggingRule
*/
public function setConfig(Config $config)
{
$this->config = $config;
return $this;
}
/**
* Get config.
*
* @return Config
*/
public function getConfig()
{
return $this->config;
}
}