diff --git a/app/config/config.yml b/app/config/config.yml index 12260a8ca..bbe36a365 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -78,7 +78,7 @@ doctrine: auto_mapping: true mappings: Wallabag: - type: annotation + type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Entity' prefix: 'Wallabag\Entity' diff --git a/src/Entity/Annotation.php b/src/Entity/Annotation.php index 4469a9224..d816aac46 100644 --- a/src/Entity/Annotation.php +++ b/src/Entity/Annotation.php @@ -10,49 +10,46 @@ use JMS\Serializer\Annotation\SerializedName; use JMS\Serializer\Annotation\VirtualProperty; use Symfony\Component\Validator\Constraints as Assert; use Wallabag\Helper\EntityTimestampsTrait; +use Wallabag\Repository\AnnotationRepository; /** * Annotation. * - * @ORM\Table(name="annotation") - * @ORM\Entity(repositoryClass="Wallabag\Repository\AnnotationRepository") - * @ORM\HasLifecycleCallbacks() * @ExclusionPolicy("none") */ +#[ORM\Table(name: 'annotation')] +#[ORM\Entity(repositoryClass: AnnotationRepository::class)] +#[ORM\HasLifecycleCallbacks] class Annotation { use EntityTimestampsTrait; /** * @var int - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** * @var string * - * @ORM\Column(name="text", type="text") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'text', type: 'text')] private $text; /** * @var \DateTime - * - * @ORM\Column(name="created_at", type="datetime") */ + #[ORM\Column(name: 'created_at', type: 'datetime')] private $createdAt; /** * @var \DateTime - * - * @ORM\Column(name="updated_at", type="datetime") */ + #[ORM\Column(name: 'updated_at', type: 'datetime')] private $updatedAt; /** @@ -62,34 +59,31 @@ class Annotation * max = 10000, * maxMessage = "validator.quote_length_too_high" * ) - * @ORM\Column(name="quote", type="text") * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'quote', type: 'text')] private $quote; /** * @var array * - * @ORM\Column(name="ranges", type="array") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'ranges', type: 'array')] private $ranges; /** * @Exclude - * - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User") */ + #[ORM\ManyToOne(targetEntity: User::class)] private $user; /** * @Exclude - * - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Entry", inversedBy="annotations") - * @ORM\JoinColumn(name="entry_id", referencedColumnName="id", onDelete="cascade") */ + #[ORM\JoinColumn(name: 'entry_id', referencedColumnName: 'id', onDelete: 'cascade')] + #[ORM\ManyToOne(targetEntity: Entry::class, inversedBy: 'annotations')] private $entry; /* diff --git a/src/Entity/Api/AccessToken.php b/src/Entity/Api/AccessToken.php index e332207a1..b1dcd2056 100644 --- a/src/Entity/Api/AccessToken.php +++ b/src/Entity/Api/AccessToken.php @@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api; use Doctrine\ORM\Mapping as ORM; use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken; +use Wallabag\Entity\User; -/** - * @ORM\Table("oauth2_access_tokens") - * @ORM\Entity - */ +#[ORM\Table('oauth2_access_tokens')] +#[ORM\Entity] class AccessToken extends BaseAccessToken { - /** - * @ORM\Id - * @ORM\Column(type="integer") - * @ORM\GeneratedValue(strategy="AUTO") - */ + #[ORM\Id] + #[ORM\Column(type: 'integer')] + #[ORM\GeneratedValue(strategy: 'AUTO')] protected $id; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client", inversedBy="accessTokens") - * @ORM\JoinColumn(nullable=false) - */ + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(targetEntity: Client::class, inversedBy: 'accessTokens')] protected $client; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User") - * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") - */ + #[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: User::class)] protected $user; } diff --git a/src/Entity/Api/AuthCode.php b/src/Entity/Api/AuthCode.php index 85c61c5e2..3f8fe8b0b 100644 --- a/src/Entity/Api/AuthCode.php +++ b/src/Entity/Api/AuthCode.php @@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api; use Doctrine\ORM\Mapping as ORM; use FOS\OAuthServerBundle\Entity\AuthCode as BaseAuthCode; +use Wallabag\Entity\User; -/** - * @ORM\Table("oauth2_auth_codes") - * @ORM\Entity - */ +#[ORM\Table('oauth2_auth_codes')] +#[ORM\Entity] class AuthCode extends BaseAuthCode { - /** - * @ORM\Id - * @ORM\Column(type="integer") - * @ORM\GeneratedValue(strategy="AUTO") - */ + #[ORM\Id] + #[ORM\Column(type: 'integer')] + #[ORM\GeneratedValue(strategy: 'AUTO')] protected $id; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client") - * @ORM\JoinColumn(nullable=false) - */ + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(targetEntity: Client::class)] protected $client; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User") - * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") - */ + #[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: User::class)] protected $user; } diff --git a/src/Entity/Api/Client.php b/src/Entity/Api/Client.php index ce5675958..f01db50b9 100644 --- a/src/Entity/Api/Client.php +++ b/src/Entity/Api/Client.php @@ -9,43 +9,34 @@ use JMS\Serializer\Annotation\SerializedName; use JMS\Serializer\Annotation\VirtualProperty; use OpenApi\Annotations as OA; use Wallabag\Entity\User; +use Wallabag\Repository\Api\ClientRepository; -/** - * @ORM\Table("oauth2_clients") - * @ORM\Entity(repositoryClass="Wallabag\Repository\Api\ClientRepository") - */ +#[ORM\Table('oauth2_clients')] +#[ORM\Entity(repositoryClass: ClientRepository::class)] class Client extends BaseClient { - /** - * @ORM\Id - * @ORM\Column(type="integer") - * @ORM\GeneratedValue(strategy="AUTO") - */ + #[ORM\Id] + #[ORM\Column(type: 'integer')] + #[ORM\GeneratedValue(strategy: 'AUTO')] protected $id; /** * @var string * - * @ORM\Column(name="name", type="text", nullable=false) - * * @OA\Property( * description="Name of the API client", * type="string", * example="Default Client", * ) - * * @Groups({"user_api_with_client"}) */ + #[ORM\Column(name: 'name', type: 'text', nullable: false)] protected $name; - /** - * @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\RefreshToken", mappedBy="client", cascade={"remove"}) - */ + #[ORM\OneToMany(targetEntity: RefreshToken::class, mappedBy: 'client', cascade: ['remove'])] protected $refreshTokens; - /** - * @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\AccessToken", mappedBy="client", cascade={"remove"}) - */ + #[ORM\OneToMany(targetEntity: AccessToken::class, mappedBy: 'client', cascade: ['remove'])] protected $accessTokens; /** @@ -62,9 +53,7 @@ class Client extends BaseClient */ protected $secret; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="clients") - */ + #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'clients')] private $user; public function __construct(User $user) diff --git a/src/Entity/Api/RefreshToken.php b/src/Entity/Api/RefreshToken.php index 9c6e9b9b8..0b90b6b4e 100644 --- a/src/Entity/Api/RefreshToken.php +++ b/src/Entity/Api/RefreshToken.php @@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api; use Doctrine\ORM\Mapping as ORM; use FOS\OAuthServerBundle\Entity\RefreshToken as BaseRefreshToken; +use Wallabag\Entity\User; -/** - * @ORM\Table("oauth2_refresh_tokens") - * @ORM\Entity - */ +#[ORM\Table('oauth2_refresh_tokens')] +#[ORM\Entity] class RefreshToken extends BaseRefreshToken { - /** - * @ORM\Id - * @ORM\Column(type="integer") - * @ORM\GeneratedValue(strategy="AUTO") - */ + #[ORM\Id] + #[ORM\Column(type: 'integer')] + #[ORM\GeneratedValue(strategy: 'AUTO')] protected $id; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client", inversedBy="refreshTokens") - * @ORM\JoinColumn(nullable=false) - */ + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(targetEntity: Client::class, inversedBy: 'refreshTokens')] protected $client; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User") - * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") - */ + #[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')] + #[ORM\ManyToOne(targetEntity: User::class)] protected $user; } diff --git a/src/Entity/Config.php b/src/Entity/Config.php index 12ba65eec..43d185a83 100644 --- a/src/Entity/Config.php +++ b/src/Entity/Config.php @@ -6,18 +6,14 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use JMS\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; +use Wallabag\Repository\ConfigRepository; /** * Config. - * - * @ORM\Entity(repositoryClass="Wallabag\Repository\ConfigRepository") - * @ORM\Table( - * name="`config`", - * indexes={ - * @ORM\Index(columns={"feed_token"}), - * } - * ) */ +#[ORM\Table(name: '`config`')] +#[ORM\Index(columns: ['feed_token'])] +#[ORM\Entity(repositoryClass: ConfigRepository::class)] class Config { public const REDIRECT_TO_HOMEPAGE = 0; @@ -26,12 +22,11 @@ class Config /** * @var int * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** @@ -43,150 +38,134 @@ class Config * max = 100000, * maxMessage = "validator.item_per_page_too_high" * ) - * @ORM\Column(name="items_per_page", type="integer", nullable=false) * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'items_per_page', type: 'integer', nullable: false)] private $itemsPerPage; /** * @var string * * @Assert\NotBlank() - * @ORM\Column(name="language", type="string", nullable=false) * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'language', type: 'string', nullable: false)] private $language; /** * @var string|null * - * @ORM\Column(name="feed_token", type="string", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'feed_token', type: 'string', nullable: true)] private $feedToken; /** * @var int|null * - * @ORM\Column(name="feed_limit", type="integer", nullable=true) * @Assert\Range( * min = 1, * max = 100000, * maxMessage = "validator.feed_limit_too_high" * ) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'feed_limit', type: 'integer', nullable: true)] private $feedLimit; /** * @var float|null * - * @ORM\Column(name="reading_speed", type="float", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'reading_speed', type: 'float', nullable: true)] private $readingSpeed; /** * @var string|null - * - * @ORM\Column(name="pocket_consumer_key", type="string", nullable=true) */ + #[ORM\Column(name: 'pocket_consumer_key', type: 'string', nullable: true)] private $pocketConsumerKey; /** * @var int|null * - * @ORM\Column(name="action_mark_as_read", type="integer", nullable=true, options={"default" = 0}) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'action_mark_as_read', type: 'integer', nullable: true, options: ['default' => 0])] private $actionMarkAsRead; /** * @var int|null * - * @ORM\Column(name="list_mode", type="integer", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'list_mode', type: 'integer', nullable: true)] private $listMode; /** * @var int|null * - * @ORM\Column(name="display_thumbnails", type="integer", nullable=true, options={"default" = 1}) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'display_thumbnails', type: 'integer', nullable: true, options: ['default' => 1])] private $displayThumbnails; /** * @var string|null * - * @ORM\Column(name="font", type="text", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'font', type: 'text', nullable: true)] private $font; /** * @var float|null * - * @ORM\Column(name="fontsize", type="float", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'fontsize', type: 'float', nullable: true)] private $fontsize; /** * @var float|null * - * @ORM\Column(name="line_height", type="float", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'line_height', type: 'float', nullable: true)] private $lineHeight; /** * @var float|null * - * @ORM\Column(name="max_width", type="float", nullable=true) - * * @Groups({"config_api"}) */ + #[ORM\Column(name: 'max_width', type: 'float', nullable: true)] private $maxWidth; /** * @var string|null - * - * @ORM\Column(name="custom_css", type="text", nullable=true) */ + #[ORM\Column(name: 'custom_css', type: 'text', nullable: true)] private $customCSS; - /** - * @ORM\OneToOne(targetEntity="Wallabag\Entity\User", inversedBy="config") - */ + #[ORM\OneToOne(targetEntity: User::class, inversedBy: 'config')] private $user; /** * @var ArrayCollection - * - * @ORM\OneToMany(targetEntity="Wallabag\Entity\TaggingRule", mappedBy="config", cascade={"remove"}) - * @ORM\OrderBy({"id" = "ASC"}) */ + #[ORM\OneToMany(targetEntity: TaggingRule::class, mappedBy: 'config', cascade: ['remove'])] + #[ORM\OrderBy(['id' => 'ASC'])] private $taggingRules; /** * @var ArrayCollection - * - * @ORM\OneToMany(targetEntity="Wallabag\Entity\IgnoreOriginUserRule", mappedBy="config", cascade={"remove"}) - * @ORM\OrderBy({"id" = "ASC"}) */ + #[ORM\OneToMany(targetEntity: IgnoreOriginUserRule::class, mappedBy: 'config', cascade: ['remove'])] + #[ORM\OrderBy(['id' => 'ASC'])] private $ignoreOriginRules; /* diff --git a/src/Entity/Entry.php b/src/Entity/Entry.php index c1a040ecf..fa348df93 100644 --- a/src/Entity/Entry.php +++ b/src/Entity/Entry.php @@ -13,28 +13,25 @@ use JMS\Serializer\Annotation\XmlRoot; use Symfony\Component\Validator\Constraints as Assert; use Wallabag\Helper\EntityTimestampsTrait; use Wallabag\Helper\UrlHasher; +use Wallabag\Repository\EntryRepository; /** * Entry. * * @XmlRoot("entry") - * @ORM\Entity(repositoryClass="Wallabag\Repository\EntryRepository") - * @ORM\Table( - * name="`entry`", - * indexes={ - * @ORM\Index(columns={"created_at"}), - * @ORM\Index(columns={"uid"}), - * @ORM\Index(columns={"user_id", "hashed_url"}), - * @ORM\Index(columns={"user_id", "hashed_given_url"}), - * @ORM\Index(columns={"language", "user_id"}), - * @ORM\Index(columns={"user_id", "is_archived", "archived_at"}), - * @ORM\Index(columns={"user_id", "created_at"}), - * @ORM\Index(columns={"user_id", "is_starred", "starred_at"}) - * } - * ) - * @ORM\HasLifecycleCallbacks() * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())") */ +#[ORM\Table(name: '`entry`')] +#[ORM\Index(columns: ['created_at'])] +#[ORM\Index(columns: ['uid'])] +#[ORM\Index(columns: ['user_id', 'hashed_url'])] +#[ORM\Index(columns: ['user_id', 'hashed_given_url'])] +#[ORM\Index(columns: ['language', 'user_id'])] +#[ORM\Index(columns: ['user_id', 'is_archived', 'archived_at'])] +#[ORM\Index(columns: ['user_id', 'created_at'])] +#[ORM\Index(columns: ['user_id', 'is_starred', 'starred_at'])] +#[ORM\Entity(repositoryClass: EntryRepository::class)] +#[ORM\HasLifecycleCallbacks] class Entry { use EntityTimestampsTrait; @@ -43,30 +40,27 @@ class Entry /** * @var int * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** * @var string|null * - * @ORM\Column(name="uid", type="string", length=23, nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'uid', type: 'string', length: 23, nullable: true)] private $uid; /** * @var string|null * - * @ORM\Column(name="title", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'title', type: 'text', nullable: true)] private $title; /** @@ -78,17 +72,16 @@ class Entry * @Assert\Url( * message = "The url '{{ value }}' is not a valid url", * ) - * @ORM\Column(name="url", type="text", nullable=true) * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'url', type: 'text', nullable: true)] private $url; /** * @var string|null - * - * @ORM\Column(name="hashed_url", type="string", length=40, nullable=true) */ + #[ORM\Column(name: 'hashed_url', type: 'string', length: 40, nullable: true)] private $hashedUrl; /** @@ -96,10 +89,9 @@ class Entry * * @var string|null * - * @ORM\Column(name="origin_url", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'origin_url', type: 'text', nullable: true)] private $originUrl; /** @@ -107,17 +99,15 @@ class Entry * * @var string|null * - * @ORM\Column(name="given_url", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'given_url', type: 'text', nullable: true)] private $givenUrl; /** * @var string|null - * - * @ORM\Column(name="hashed_given_url", type="string", length=40, nullable=true) */ + #[ORM\Column(name: 'hashed_given_url', type: 'string', length: 40, nullable: true)] private $hashedGivenUrl; /** @@ -125,19 +115,17 @@ class Entry * * @Exclude * - * @ORM\Column(name="is_archived", type="boolean") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'is_archived', type: 'boolean')] private $isArchived = false; /** * @var \DateTimeInterface|null * - * @ORM\Column(name="archived_at", type="datetime", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'archived_at', type: 'datetime', nullable: true)] private $archivedAt; /** @@ -145,135 +133,120 @@ class Entry * * @Exclude * - * @ORM\Column(name="is_starred", type="boolean") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'is_starred', type: 'boolean')] private $isStarred = false; /** * @var string|null * - * @ORM\Column(name="content", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'content', type: 'text', nullable: true)] private $content; /** * @var \DateTimeInterface * - * @ORM\Column(name="created_at", type="datetime") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'created_at', type: 'datetime')] private $createdAt; /** * @var \DateTimeInterface * - * @ORM\Column(name="updated_at", type="datetime") - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'updated_at', type: 'datetime')] private $updatedAt; /** * @var \DateTimeInterface|null * - * @ORM\Column(name="published_at", type="datetime", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'published_at', type: 'datetime', nullable: true)] private $publishedAt; /** * @var array|null * - * @ORM\Column(name="published_by", type="array", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'published_by', type: 'array', nullable: true)] private $publishedBy; /** * @var \DateTimeInterface|null * - * @ORM\Column(name="starred_at", type="datetime", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'starred_at', type: 'datetime', nullable: true)] private $starredAt; /** - * @ORM\OneToMany(targetEntity="Wallabag\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"}) - * @ORM\JoinTable - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\JoinTable] + #[ORM\OneToMany(targetEntity: Annotation::class, mappedBy: 'entry', cascade: ['persist', 'remove'])] private $annotations; /** * @var string|null * - * @ORM\Column(name="mimetype", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'mimetype', type: 'text', nullable: true)] private $mimetype; /** * @var string|null * - * @ORM\Column(name="language", type="string", length=20, nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'language', type: 'string', length: 20, nullable: true)] private $language; /** * @var int * - * @ORM\Column(name="reading_time", type="integer", nullable=false) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'reading_time', type: 'integer', nullable: false)] private $readingTime = 0; /** * @var string|null * - * @ORM\Column(name="domain_name", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'domain_name', type: 'text', nullable: true)] private $domainName; /** * @var string|null * - * @ORM\Column(name="preview_picture", type="text", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'preview_picture', type: 'text', nullable: true)] private $previewPicture; /** * @var string|null * - * @ORM\Column(name="http_status", type="string", length=3, nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'http_status', type: 'string', length: 3, nullable: true)] private $httpStatus; /** * @var array|null * - * @ORM\Column(name="headers", type="array", nullable=true) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'headers', type: 'array', nullable: true)] private $headers; /** @@ -281,33 +254,23 @@ class Entry * * @Exclude * - * @ORM\Column(name="is_not_parsed", type="boolean", options={"default": false}) - * * @Groups({"entries_for_user", "export_all"}) */ + #[ORM\Column(name: 'is_not_parsed', type: 'boolean', options: ['default' => false])] private $isNotParsed = false; /** * @Exclude * - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="entries") - * * @Groups({"export_all"}) */ + #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'entries')] private $user; - /** - * @ORM\ManyToMany(targetEntity="Wallabag\Entity\Tag", inversedBy="entries", cascade={"persist"}) - * @ORM\JoinTable( - * name="entry_tag", - * joinColumns={ - * @ORM\JoinColumn(name="entry_id", referencedColumnName="id", onDelete="cascade") - * }, - * inverseJoinColumns={ - * @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="cascade") - * } - * ) - */ + #[ORM\JoinTable(name: 'entry_tag')] + #[ORM\JoinColumn(name: 'entry_id', referencedColumnName: 'id', onDelete: 'cascade')] + #[ORM\InverseJoinColumn(name: 'tag_id', referencedColumnName: 'id', onDelete: 'cascade')] + #[ORM\ManyToMany(targetEntity: Tag::class, inversedBy: 'entries', cascade: ['persist'])] private $tags; /* diff --git a/src/Entity/IgnoreOriginInstanceRule.php b/src/Entity/IgnoreOriginInstanceRule.php index 17279b43b..68cd8eab6 100644 --- a/src/Entity/IgnoreOriginInstanceRule.php +++ b/src/Entity/IgnoreOriginInstanceRule.php @@ -5,22 +5,21 @@ namespace Wallabag\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert; use Symfony\Component\Validator\Constraints as Assert; +use Wallabag\Repository\IgnoreOriginInstanceRuleRepository; /** * Ignore Origin rule. - * - * @ORM\Entity(repositoryClass="Wallabag\Repository\IgnoreOriginInstanceRuleRepository") - * @ORM\Table(name="`ignore_origin_instance_rule`") */ +#[ORM\Table(name: '`ignore_origin_instance_rule`')] +#[ORM\Entity(repositoryClass: IgnoreOriginInstanceRuleRepository::class)] class IgnoreOriginInstanceRule implements IgnoreOriginRuleInterface, RuleInterface { /** * @var int - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** @@ -32,8 +31,8 @@ class IgnoreOriginInstanceRule implements IgnoreOriginRuleInterface, RuleInterfa * allowed_variables={"host","_all"}, * allowed_operators={"=","~"} * ) - * @ORM\Column(name="rule", type="string", nullable=false) */ + #[ORM\Column(name: 'rule', type: 'string', nullable: false)] private $rule; /** diff --git a/src/Entity/IgnoreOriginUserRule.php b/src/Entity/IgnoreOriginUserRule.php index 7b41182d2..2202c48c8 100644 --- a/src/Entity/IgnoreOriginUserRule.php +++ b/src/Entity/IgnoreOriginUserRule.php @@ -5,22 +5,21 @@ namespace Wallabag\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert; use Symfony\Component\Validator\Constraints as Assert; +use Wallabag\Repository\IgnoreOriginUserRuleRepository; /** * Ignore Origin rule. - * - * @ORM\Entity(repositoryClass="Wallabag\Repository\IgnoreOriginUserRuleRepository") - * @ORM\Table(name="`ignore_origin_user_rule`") */ +#[ORM\Table(name: '`ignore_origin_user_rule`')] +#[ORM\Entity(repositoryClass: IgnoreOriginUserRuleRepository::class)] class IgnoreOriginUserRule implements IgnoreOriginRuleInterface, RuleInterface { /** * @var int - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** @@ -32,14 +31,12 @@ class IgnoreOriginUserRule implements IgnoreOriginRuleInterface, RuleInterface * allowed_variables={"host","_all"}, * allowed_operators={"=","~"} * ) - * @ORM\Column(name="rule", type="string", nullable=false) */ + #[ORM\Column(name: 'rule', type: 'string', nullable: false)] private $rule; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Config", inversedBy="ignoreOriginRules") - * @ORM\JoinColumn(nullable=false) - */ + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(targetEntity: Config::class, inversedBy: 'ignoreOriginRules')] private $config; /** diff --git a/src/Entity/InternalSetting.php b/src/Entity/InternalSetting.php index 705fa7121..9eaba6ca2 100644 --- a/src/Entity/InternalSetting.php +++ b/src/Entity/InternalSetting.php @@ -3,22 +3,21 @@ namespace Wallabag\Entity; use Craue\ConfigBundle\Entity\BaseSetting; +use Craue\ConfigBundle\Repository\SettingRepository; use Doctrine\ORM\Mapping as ORM; /** * InternalSetting. * * Re-define setting so we can override length attribute to fix utf8mb4 issue. - * - * @ORM\Entity(repositoryClass="Craue\ConfigBundle\Repository\SettingRepository") - * @ORM\Table(name="`internal_setting`") */ +#[ORM\Table(name: '`internal_setting`')] +#[ORM\Entity(repositoryClass: SettingRepository::class)] class InternalSetting extends BaseSetting { /** * @var string|null - * - * @ORM\Column(name="value", type="string", nullable=true) */ + #[ORM\Column(name: 'value', type: 'string', nullable: true)] protected $value; } diff --git a/src/Entity/SiteCredential.php b/src/Entity/SiteCredential.php index 5c8da7672..2a125181c 100644 --- a/src/Entity/SiteCredential.php +++ b/src/Entity/SiteCredential.php @@ -5,25 +5,24 @@ namespace Wallabag\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Wallabag\Helper\EntityTimestampsTrait; +use Wallabag\Repository\SiteCredentialRepository; /** * SiteCredential. - * - * @ORM\Entity(repositoryClass="Wallabag\Repository\SiteCredentialRepository") - * @ORM\Table(name="`site_credential`") - * @ORM\HasLifecycleCallbacks() */ +#[ORM\Table(name: '`site_credential`')] +#[ORM\Entity(repositoryClass: SiteCredentialRepository::class)] +#[ORM\HasLifecycleCallbacks] class SiteCredential { use EntityTimestampsTrait; /** * @var int - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** @@ -31,44 +30,40 @@ class SiteCredential * * @Assert\NotBlank() * @Assert\Length(max=255) - * @ORM\Column(name="host", type="string", length=255) */ + #[ORM\Column(name: 'host', type: 'string', length: 255)] private $host; /** * @var string * * @Assert\NotBlank() - * @ORM\Column(name="username", type="text") */ + #[ORM\Column(name: 'username', type: 'text')] private $username; /** * @var string * * @Assert\NotBlank() - * @ORM\Column(name="password", type="text") */ + #[ORM\Column(name: 'password', type: 'text')] private $password; /** * @var \DateTime - * - * @ORM\Column(name="createdAt", type="datetime") */ + #[ORM\Column(name: 'createdAt', type: 'datetime')] private $createdAt; /** * @var \DateTime|null - * - * @ORM\Column(name="updated_at", type="datetime", nullable=true) */ + #[ORM\Column(name: 'updated_at', type: 'datetime', nullable: true)] private $updatedAt; - /** - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="siteCredentials") - * @ORM\JoinColumn(nullable=false) - */ + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'siteCredentials')] private $user; /* diff --git a/src/Entity/Tag.php b/src/Entity/Tag.php index ef8233eb2..47102f3ab 100644 --- a/src/Entity/Tag.php +++ b/src/Entity/Tag.php @@ -8,50 +8,45 @@ use Gedmo\Mapping\Annotation as Gedmo; use JMS\Serializer\Annotation\ExclusionPolicy; use JMS\Serializer\Annotation\Expose; use JMS\Serializer\Annotation\XmlRoot; +use Wallabag\Repository\TagRepository; /** * Tag. * * @XmlRoot("tag") - * @ORM\Table( - * name="`tag`", - * indexes={ - * @ORM\Index(columns={"label"}), - * } - * ) - * @ORM\Entity(repositoryClass="Wallabag\Repository\TagRepository") * @ExclusionPolicy("all") */ +#[ORM\Table(name: '`tag`')] +#[ORM\Index(columns: ['label'])] +#[ORM\Entity(repositoryClass: TagRepository::class)] class Tag { /** * @var int * * @Expose - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** * @var string * * @Expose - * @ORM\Column(name="label", type="text") */ + #[ORM\Column(name: 'label', type: 'text')] private $label; /** * @Expose * @Gedmo\Slug(fields={"label"}, prefix="t:") - * @ORM\Column(length=128, unique=true) */ + #[ORM\Column(length: 128, unique: true)] private $slug; - /** - * @ORM\ManyToMany(targetEntity="Entry", mappedBy="tags", cascade={"persist"}) - */ + #[ORM\ManyToMany(targetEntity: Entry::class, mappedBy: 'tags', cascade: ['persist'])] private $entries; public function __construct() diff --git a/src/Entity/TaggingRule.php b/src/Entity/TaggingRule.php index c7834a801..f9d07d66b 100644 --- a/src/Entity/TaggingRule.php +++ b/src/Entity/TaggingRule.php @@ -8,24 +8,23 @@ 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; +use Wallabag\Repository\TaggingRuleRepository; /** * Tagging rule. * * @XmlRoot("tagging_rule") - * @ORM\Entity(repositoryClass="Wallabag\Repository\TaggingRuleRepository") - * @ORM\Table(name="`tagging_rule`") - * @ORM\Entity */ +#[ORM\Table(name: '`tagging_rule`')] +#[ORM\Entity(repositoryClass: TaggingRuleRepository::class)] class TaggingRule implements RuleInterface { /** * @var int - * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] private $id; /** @@ -37,27 +36,26 @@ class TaggingRule implements RuleInterface * allowed_variables={"title", "url", "isArchived", "isStarred", "content", "language", "mimetype", "readingTime", "domainName"}, * allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or", "matches", "notmatches"} * ) - * @ORM\Column(name="rule", type="string", nullable=false) * * @Groups({"export_tagging_rule"}) */ + #[ORM\Column(name: 'rule', type: 'string', nullable: false)] private $rule; /** * @var array * * @Assert\NotBlank() - * @ORM\Column(name="tags", type="simple_array", nullable=false) * * @Groups({"export_tagging_rule"}) */ + #[ORM\Column(name: 'tags', type: 'simple_array', nullable: false)] private $tags = []; /** * @Exclude - * - * @ORM\ManyToOne(targetEntity="Wallabag\Entity\Config", inversedBy="taggingRules") */ + #[ORM\ManyToOne(targetEntity: Config::class, inversedBy: 'taggingRules')] private $config; /** diff --git a/src/Entity/User.php b/src/Entity/User.php index 61face2ad..5146b47dc 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -16,18 +16,19 @@ use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface as GoogleTwoFactorInte use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Wallabag\Entity\Api\Client; use Wallabag\Helper\EntityTimestampsTrait; +use Wallabag\Repository\UserRepository; /** * User. * * @XmlRoot("user") - * @ORM\Entity(repositoryClass="Wallabag\Repository\UserRepository") - * @ORM\Table(name="`user`") - * @ORM\HasLifecycleCallbacks() * * @UniqueEntity("email") * @UniqueEntity("username") */ +#[ORM\Table(name: '`user`')] +#[ORM\Entity(repositoryClass: UserRepository::class)] +#[ORM\HasLifecycleCallbacks] class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorInterface, BackupCodeInterface { use EntityTimestampsTrait; @@ -36,10 +37,6 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI /** * @var int * - * @ORM\Column(name="id", type="integer") - * @ORM\Id - * @ORM\GeneratedValue(strategy="AUTO") - * * @OA\Property( * description="The unique numeric id of the user", * type="int", @@ -48,21 +45,22 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI * * @Groups({"user_api", "user_api_with_client"}) */ + #[ORM\Column(name: 'id', type: 'integer')] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'AUTO')] protected $id; /** * @var string|null * - * @ORM\Column(name="name", type="text", nullable=true) - * * @OA\Property( * description="The personal Name of the user", * type="string", * example="Walla Baggger", * ) - * * @Groups({"user_api", "user_api_with_client"}) */ + #[ORM\Column(name: 'name', type: 'text', nullable: true)] protected $name; /** @@ -94,55 +92,45 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI /** * @var \DateTime * - * @ORM\Column(name="created_at", type="datetime") - * * @OA\Property( * description="Creation date of the user account. (In ISO 8601 format)", * type="string", * example="2023-06-27T19:25:44+0000", * ) - * * @Groups({"user_api", "user_api_with_client"}) */ + #[ORM\Column(name: 'created_at', type: 'datetime')] protected $createdAt; /** * @var \DateTime * - * @ORM\Column(name="updated_at", type="datetime") - * * @OA\Property( * description="Update date of the user account. (In ISO 8601 format)", * type="string", * example="2023-06-27T19:37:30+0000", * ) - * * @Groups({"user_api", "user_api_with_client"}) */ + #[ORM\Column(name: 'updated_at', type: 'datetime')] protected $updatedAt; - /** - * @ORM\OneToMany(targetEntity="Wallabag\Entity\Entry", mappedBy="user", cascade={"remove"}) - */ + #[ORM\OneToMany(targetEntity: Entry::class, mappedBy: 'user', cascade: ['remove'])] protected $entries; - /** - * @ORM\OneToOne(targetEntity="Wallabag\Entity\Config", mappedBy="user", cascade={"remove"}) - */ + #[ORM\OneToOne(targetEntity: Config::class, mappedBy: 'user', cascade: ['remove'])] protected $config; /** * @var ArrayCollection&iterable - * - * @ORM\OneToMany(targetEntity="Wallabag\Entity\SiteCredential", mappedBy="user", cascade={"remove"}) */ + #[ORM\OneToMany(targetEntity: SiteCredential::class, mappedBy: 'user', cascade: ['remove'])] protected $siteCredentials; /** * @var ArrayCollection&iterable - * - * @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\Client", mappedBy="user", cascade={"remove"}) */ + #[ORM\OneToMany(targetEntity: Client::class, mappedBy: 'user', cascade: ['remove'])] protected $clients; /** @@ -158,28 +146,22 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI */ protected $default_client; - /** - * @ORM\Column(type="integer", nullable=true) - */ + #[ORM\Column(type: 'integer', nullable: true)] private $authCode; - /** - * @ORM\Column(name="googleAuthenticatorSecret", type="string", nullable=true) - */ + #[ORM\Column(name: 'googleAuthenticatorSecret', type: 'string', nullable: true)] private $googleAuthenticatorSecret; /** * @var array - * - * @ORM\Column(type="json", nullable=true) */ + #[ORM\Column(type: 'json', nullable: true)] private $backupCodes; /** * @var bool - * - * @ORM\Column(type="boolean") */ + #[ORM\Column(type: 'boolean')] private $emailTwoFactor = false; public function __construct() diff --git a/src/Helper/EntityTimestampsTrait.php b/src/Helper/EntityTimestampsTrait.php index a9a87cad5..7cc8c5d81 100644 --- a/src/Helper/EntityTimestampsTrait.php +++ b/src/Helper/EntityTimestampsTrait.php @@ -9,10 +9,8 @@ use Doctrine\ORM\Mapping as ORM; */ trait EntityTimestampsTrait { - /** - * @ORM\PrePersist - * @ORM\PreUpdate - */ + #[ORM\PrePersist] + #[ORM\PreUpdate] public function timestamps() { if (null === $this->createdAt) {