Skip to content
This repository was archived by the owner on Jun 17, 2025. It is now read-only.
Merged
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
4 changes: 4 additions & 0 deletions UPGRADING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Upgrade notes for `webfactory/visibility-filter-bundle`

## 2.0.0

* Annotation support has been dropped. Use the Atrtibute for configuration.

## 1.5.0

* The `\Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn` annotation has been deprecated. Use the
Expand Down
13 changes: 6 additions & 7 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,21 @@
},
"require": {
"php": "^8.1",
"doctrine/annotations": "^1.12",
"doctrine/doctrine-bundle": "^1.12.13|^2.0",
"doctrine/orm": "^2.7.2",
"symfony/config": "^5.4|^6.4",
"symfony/dependency-injection": "^5.4|^6.4",
"symfony/config": "^5.4|^6.4|^7.0",
"symfony/dependency-injection": "^5.4|^6.4|^7.0",
"symfony/deprecation-contracts": "^3.6.0",
"symfony/event-dispatcher": "^5.4|^6.4",
"symfony/http-kernel": "^5.4|^6.4"
"symfony/event-dispatcher": "^5.4|^6.4|^7.0",
"symfony/http-kernel": "^5.4|^6.4|^7.0"
},
"config": {
"sort-packages": true
},
"require-dev": {
"dama/doctrine-test-bundle": "^6.5",
"phpunit/phpunit": "^8.5",
"symfony/framework-bundle": "^5.4|^6.4",
"symfony/yaml": "^5.4|^6.4"
"symfony/framework-bundle": "^5.4|^6.4|^7.0",
"symfony/yaml": "^5.4|^6.4|^7.0"
}
}
31 changes: 0 additions & 31 deletions src/Annotation/VisibilityColumn.php

This file was deleted.

2 changes: 0 additions & 2 deletions src/DependencyInjection/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ services:
- 'y'

Webfactory\VisibilityFilterBundle\Filter\VisibilityColumnRetriever:
arguments:
- '@Doctrine\Common\Annotations\Reader'

Webfactory\VisibilityFilterBundle\DependencyInjection\OnRequestDependencyInjector:
arguments:
Expand Down
27 changes: 2 additions & 25 deletions src/Filter/VisibilityColumnRetriever.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,13 @@

namespace Webfactory\VisibilityFilterBundle\Filter;

use Doctrine\Common\Annotations\Reader;
use Doctrine\ORM\Mapping\ClassMetadata;
use ReflectionProperty;
use RuntimeException;
use Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn;
use Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn;

final class VisibilityColumnRetriever
{
/**
* @var Reader
*/
private $annotationReader;

public function __construct(Reader $annotationReader)
{
$this->annotationReader = $annotationReader;
}

public function getVisibilityColumnName(ClassMetadata $classMetadata): ?string
{
$property = $this->getVisibilityProperty($classMetadata);
Expand All @@ -40,19 +29,7 @@ private function getVisibilityProperty(ClassMetadata $classMetadata): ?Reflectio
$visibilityProperty = null;

foreach ($classMetadata->getReflectionClass()->getProperties() as $property) {
if (\PHP_MAJOR_VERSION >= 8) {
if (0 < \count($property->getAttributes(\Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn::class))) {
$visibilityProperty = $property;
}
}

if (null !== $this->annotationReader->getPropertyAnnotation($property, VisibilityColumn::class)) {
trigger_deprecation(
'webfactory/visibility-filter-bundle',
'1.5.0',
'Configuring webfactory/visibility-filter-bundle with annotations is deprecated, use attributes instead.'
);

if (0 < \count($property->getAttributes(VisibilityColumn::class))) {
if (null !== $visibilityProperty) {
throw new RuntimeException('More than 1 visibility column configured for '.$classMetadata->getName().'. You must only configure 1 visibility column per entity.');
}
Expand Down
27 changes: 8 additions & 19 deletions tests/Fixtures/EntityWithFaultyVisibilityColumn.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,16 @@
namespace Webfactory\VisibilityFilterBundle\Tests\Fixtures;

use Doctrine\ORM\Mapping as ORM;
use Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn;
use Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn;

/**
* @ORM\Entity()
*/
#[ORM\Entity]
class EntityWithFaultyVisibilityColumn
{
/**
* @VisibilityColumn()
*
* (No Doctrine Column Annotation)
*
* @var string
*/
public $visibilityColumn;
// (No Doctrine Column Annotation)
#[VisibilityColumn]
public string $visibilityColumn;

/**
* @ORM\Id()
* @ORM\Column()
*
* @var int
*/
public $id;
#[ORM\Id]
#[ORM\Column]
public int $id;
}
32 changes: 10 additions & 22 deletions tests/Fixtures/EntityWithManyToManyRelationship.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,19 @@
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity()
*/
#[ORM\Entity]
class EntityWithManyToManyRelationship
{
/**
* Using many to many relationship to avoid the need of an inversed column in the target entity.
*
* @ORM\ManyToMany(targetEntity="EntityWithProperVisibilityColumn")
* @ORM\JoinTable(name="jointable",
* joinColumns={@ORM\JoinColumn(name="this", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="that", referencedColumnName="id")}
* )
*
* @var Collection&array
*/
public $relationship;
// Using many to many relationship to avoid the need of an inversed column in the target entity.
#[ORM\ManyToMany(targetEntity: EntityWithProperVisibilityColumn::class)]
#[ORM\JoinTable(name: 'jointable')]
#[ORM\JoinColumn(name: 'this', referencedColumnName: 'id')]
#[ORM\InverseJoinColumn(name: 'that', referencedColumnName: 'id')]
public array|Collection $relationship;

/**
* @ORM\Id()
* @ORM\Column()
*
* @var int
*/
public $id;
#[ORM\Id]
#[ORM\Column]
public int $id;

public function __construct(int $id)
{
Expand Down
19 changes: 9 additions & 10 deletions tests/Fixtures/EntityWithNoVisibilityColumn.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity()
*/
#[ORM\Entity]
class EntityWithNoVisibilityColumn
{
/**
* @ORM\Id()
* @ORM\Column()
*
* @var int
*/
public $id;
#[ORM\Id]
#[ORM\Column(type: 'integer')]
public int $id;

public function __construct(int $id)
{
$this->id = $id;
}
}
23 changes: 7 additions & 16 deletions tests/Fixtures/EntityWithOneToOneRelationship.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,16 @@

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity()
*/
#[ORM\Entity]
class EntityWithOneToOneRelationship
{
/**
* @ORM\OneToOne(targetEntity="EntityWithProperVisibilityColumn", fetch="EAGER") fetch="EAGER" prevents a proxy object being put in here, so this will be null when the related entity is not found
*
* @var EntityWithProperVisibilityColumn
*/
public $relationship;
// fetch="EAGER" prevents a proxy object being put in here, so this will be null when the related entity is not found
#[ORM\OneToOne(targetEntity: EntityWithProperVisibilityColumn::class, fetch: 'EAGER')]
public ?EntityWithProperVisibilityColumn $relationship = null;

/**
* @ORM\Id()
* @ORM\Column()
*
* @var int
*/
public $id;
#[ORM\Id]
#[ORM\Column]
public int $id;

public function __construct(int $id)
{
Expand Down
27 changes: 8 additions & 19 deletions tests/Fixtures/EntityWithProperVisibilityColumn.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,18 @@
namespace Webfactory\VisibilityFilterBundle\Tests\Fixtures;

use Doctrine\ORM\Mapping as ORM;
use Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn;
use Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn;

/**
* @ORM\Entity()
*/
#[ORM\Entity]
class EntityWithProperVisibilityColumn
{
/**
* @VisibilityColumn()
*
* @ORM\Column(type="string")
*
* @var string
*/
public $visibilityColumn;
#[ORM\Column(type: 'string')]
#[VisibilityColumn]
public string $visibilityColumn;

/**
* @ORM\Id()
* @ORM\Column()
*
* @var int
*/
public $id;
#[ORM\Id]
#[ORM\Column(type: 'integer')]
public int $id;

public function __construct(int $id, string $visibilityColumn)
{
Expand Down
2 changes: 1 addition & 1 deletion tests/Fixtures/Kernel/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ doctrine:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
Test:
type: annotation
type: attribute
dir: '%kernel.project_dir%'
prefix: 'Webfactory\VisibilityFilterBundle\Tests\Fixtures'
auto_generate_proxy_classes: true
Expand Down