FieldCollection::unassigned()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
c 0
b 0
f 0
rs 9.4285
cc 3
eloc 6
nc 3
nop 0
1
<?php namespace Anomaly\Streams\Platform\Field;
2
3
use Anomaly\Streams\Platform\Field\Contract\FieldInterface;
4
use Anomaly\Streams\Platform\Model\EloquentCollection;
5
use Anomaly\Streams\Platform\Stream\Contract\StreamInterface;
6
7
/**
8
 * Class FieldCollection
9
 *
10
 * @link    http://pyrocms.com/
11
 * @author  PyroCMS, Inc. <[email protected]>
12
 * @author  Ryan Thompson <[email protected]>
13
 */
14
class FieldCollection extends EloquentCollection
15
{
16
17
    /**
18
     * Create a new FieldCollection instance.
19
     *
20
     * @param array $items
21
     */
22
    public function __construct($items = [])
23
    {
24
        /* @var FieldInterface $item */
25
        foreach ($items as $item) {
26
            if (is_object($item)) {
27
                $this->items[$item->getSlug()] = $item;
28
            } else {
29
                $this->items[] = $item;
30
            }
31
        }
32
    }
33
34
    /**
35
     * Return only unassigned fields.
36
     *
37
     * @return FieldCollection
38
     */
39
    public function unassigned()
40
    {
41
        $unassigned = [];
42
43
        /* @var FieldInterface $item */
44
        foreach ($this->items as $item) {
45
            if (!$item->hasAssignments()) {
46
                $unassigned[] = $item;
47
            }
48
        }
49
50
        return new static($unassigned);
51
    }
52
53
    /**
54
     * Return fields only assigned
55
     * to the provided stream.
56
     *
57
     * @param  StreamInterface $stream
58
     * @return FieldCollection
59
     */
60 View Code Duplication
    public function assignedTo(StreamInterface $stream)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
61
    {
62
        $fieldSlugs = $stream->getAssignmentFieldSlugs();
63
64
        return new static(
65
            array_filter(
66
                $this->items,
67
                function (FieldInterface $field) use ($fieldSlugs) {
68
                    return in_array($field->getSlug(), $fieldSlugs);
69
                }
70
            )
71
        );
72
    }
73
74
    /**
75
     * Return fields only NOT assigned
76
     * to the provided stream.
77
     *
78
     * @param  StreamInterface $stream
79
     * @return FieldCollection
80
     */
81 View Code Duplication
    public function notAssignedTo(StreamInterface $stream)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
82
    {
83
        $fieldSlugs = $stream->getAssignmentFieldSlugs();
84
85
        return new static(
86
            array_filter(
87
                $this->items,
88
                function (FieldInterface $field) use ($fieldSlugs) {
89
                    return !in_array($field->getSlug(), $fieldSlugs);
90
                }
91
            )
92
        );
93
    }
94
95
    /**
96
     * Return only unlocked fields.
97
     *
98
     * @return FieldCollection
99
     */
100
    public function unlocked()
101
    {
102
        $unlocked = [];
103
104
        /* @var FieldInterface $item */
105
        foreach ($this->items as $item) {
106
            if (!$item->isLocked()) {
107
                $unlocked[] = $item;
108
            }
109
        }
110
111
        return new static($unlocked);
112
    }
113
}
114