Passed
Push — master ( e0d9e0...17cc35 )
by Tom
03:38
created

src/Factories/ExportFactory.php (1 issue)

Severity
1
<?php
2
3
namespace Astrotomic\Stancy\Factories;
4
5
use Astrotomic\Stancy\Contracts\ExportFactory as ExportFactoryContract;
6
use Astrotomic\Stancy\Contracts\Page as PageContract;
7
use Astrotomic\Stancy\Contracts\PageFactory as PageFactoryContract;
8
use Astrotomic\Stancy\Traits\ConvertsSheetToPage;
9
use Illuminate\Contracts\Routing\UrlGenerator as UrlGeneratorContract;
10
use Illuminate\Support\Str;
11
use Spatie\Export\Exporter;
12
use Spatie\Sheets\Facades\Sheets;
13
14
class ExportFactory implements ExportFactoryContract
15
{
16
    use ConvertsSheetToPage;
17
18
    /** @var Exporter */
19
    protected $exporter;
20
21
    /** @var UrlGeneratorContract */
22
    protected $urlGenerator;
23
24 6
    public function __construct(PageFactoryContract $pageFactory, Exporter $exporter, UrlGeneratorContract $urlGenerator)
25
    {
26 6
        $this->pageFactory = $pageFactory;
27 6
        $this->exporter = $exporter;
28 6
        $this->urlGenerator = $urlGenerator;
29 6
    }
30
31
    /**
32
     * @param string[] $list
33
     *
34
     * @return void
35
     */
36 3
    public function addSheetList(array $list): void
37
    {
38 3
        foreach ($list as $entry) {
39 3
            if (Str::contains($entry, ':')) {
40 2
                [$collection, $path] = explode(':', $entry);
41
42 2
                $this->addPages([$this->sheetToPage(Sheets::collection($collection)->get($path))]);
43
44 1
                continue;
45
            }
46
47 1
            $this->addPages($this->sheetsToPages(Sheets::collection($entry)->all()->all()));
48
        }
49 2
    }
50
51 1
    public function addSheetCollectionName(string $name): void
52
    {
53 1
        $this->addSheetList([$name]);
54 1
    }
55
56 1
    public function addFeeds(array $except = []): void
0 ignored issues
show
Method \Astrotomic\Stancy\Factories\ExportFactory::addFeeds() does not have @param annotation for its traversable parameter $except.
Loading history...
57
    {
58
        collect(config('feed.feeds'))->except($except)->each(function (array $config): void {
59 1
            $this->exporter->paths([$config['url']]);
60 1
        });
61 1
    }
62
63
    /**
64
     * @param PageContract[] $pages
65
     *
66
     * @return void
67
     */
68 3
    protected function addPages(array $pages): void
69
    {
70 3
        foreach ($pages as $page) {
71 3
            $this->exporter->paths([Str::replaceFirst($this->urlGenerator->to('/'), '', $page->getUrl())]);
72
        }
73 2
    }
74
}
75