Code Duplication    Length = 58-58 lines in 2 locations

src/Extensions/Gedmo/TreeParent.php 1 location

@@ 11-68 (lines=58) @@
8
use LaravelDoctrine\Fluent\Extensions\ExtensibleClassMetadata;
9
use LaravelDoctrine\Fluent\Relations\ManyToOne;
10
11
class TreeParent implements Buildable
12
{
13
    const MACRO_METHOD = 'treeParent';
14
15
    /**
16
     * @var ExtensibleClassMetadata
17
     */
18
    protected $classMetadata;
19
20
    /**
21
     * @var string
22
     */
23
    protected $fieldName;
24
25
    /**
26
     * @param ExtensibleClassMetadata $classMetadata
27
     * @param string                  $fieldName
28
     */
29
    public function __construct(ExtensibleClassMetadata $classMetadata, $fieldName)
30
    {
31
        $this->classMetadata = $classMetadata;
32
        $this->fieldName     = $fieldName;
33
    }
34
35
    /**
36
     * Enable TreeParent
37
     */
38
    public static function enable()
39
    {
40
        Field::macro(self::MACRO_METHOD, function (Field $field) {
41
            return new static($field->getClassMetadata(), $field->getName());
42
        });
43
44
        ManyToOne::macro(self::MACRO_METHOD, function (ManyToOne $relation) {
45
            return new static($relation->getClassMetadata(), $relation->getRelation());
46
        });
47
    }
48
49
    /**
50
     * Execute the build process
51
     */
52
    public function build()
53
    {
54
        $this->classMetadata->appendExtension($this->getExtensionName(), [
55
            'parent' => $this->fieldName
56
        ]);
57
    }
58
59
    /**
60
     * Return the name of the actual extension.
61
     *
62
     * @return string
63
     */
64
    public function getExtensionName()
65
    {
66
        return FluentDriver::EXTENSION_NAME;
67
    }
68
}
69

src/Extensions/Gedmo/TreeRoot.php 1 location

@@ 11-68 (lines=58) @@
8
use LaravelDoctrine\Fluent\Extensions\ExtensibleClassMetadata;
9
use LaravelDoctrine\Fluent\Relations\ManyToOne;
10
11
class TreeRoot implements Buildable
12
{
13
    const MACRO_METHOD = 'treeRoot';
14
15
    /**
16
     * @var ExtensibleClassMetadata
17
     */
18
    protected $classMetadata;
19
20
    /**
21
     * @var string
22
     */
23
    protected $fieldName;
24
25
    /**
26
     * @param ExtensibleClassMetadata $classMetadata
27
     * @param string                  $fieldName
28
     */
29
    public function __construct(ExtensibleClassMetadata $classMetadata, $fieldName)
30
    {
31
        $this->classMetadata = $classMetadata;
32
        $this->fieldName     = $fieldName;
33
    }
34
35
    /**
36
     * Enable TreeRoot
37
     */
38
    public static function enable()
39
    {
40
        Field::macro(self::MACRO_METHOD, function (Field $field) {
41
            return new static($field->getClassMetadata(), $field->getName());
42
        });
43
44
        ManyToOne::macro(self::MACRO_METHOD, function (ManyToOne $relation) {
45
            return new static($relation->getClassMetadata(), $relation->getRelation());
46
        });
47
    }
48
49
    /**
50
     * Execute the build process
51
     */
52
    public function build()
53
    {
54
        $this->classMetadata->appendExtension($this->getExtensionName(), [
55
            'root' => $this->fieldName
56
        ]);
57
    }
58
59
    /**
60
     * Return the name of the actual extension.
61
     *
62
     * @return string
63
     */
64
    public function getExtensionName()
65
    {
66
        return FluentDriver::EXTENSION_NAME;
67
    }
68
}
69