-
Notifications
You must be signed in to change notification settings - Fork 554
/
BlockCollection.php
73 lines (62 loc) · 1.76 KB
/
BlockCollection.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
namespace A17\Twill\Services\Blocks;
use Illuminate\Support\Collection;
class BlockCollection extends Collection
{
protected Collection $paths;
public function findByName(string $search, array $sources = []): ?Block
{
return $this->collect()
->filter(function ($block) use ($search, $sources) {
return $block->name === $search &&
(blank($sources) ||
collect($sources)->contains($block->source));
})
->sortBy(function ($block) {
return $block->source === 'app' ? 0 : 1;
})
->first();
}
public function getSettingsList(): Collection
{
return $this->collect()
->filter(function ($block) {
return $block->type === Block::TYPE_SETTINGS;
})
->values();
}
public function getBlocks(): Collection
{
return $this->collect()
->filter(function ($block) {
return $block->type === Block::TYPE_BLOCK;
})
->values();
}
public function getBlockList(): Collection
{
return $this->getBlocks();
}
public function toArray(): array
{
return $this->list()->toArray();
}
public function list(): Collection
{
return $this->collect()->map(function (Block $block) {
return $block->toList();
});
}
public function getRepeaters(): Collection
{
return $this->collect()
->filter(function ($block) {
return $block->type === Block::TYPE_REPEATER;
})
->values();
}
public function getRepeaterList(): Collection
{
return $this->getRepeaters();
}
}