Passed
Push — master ( ab955c...03080d )
by Timo
10:19
created

Typo3ManagedSite::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1.0122

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 13
ccs 10
cts 13
cp 0.7692
rs 9.9666
cc 1
nc 1
nop 9
crap 1.0122

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
namespace ApacheSolrForTypo3\Solr\Domain\Site;
4
5
/***************************************************************
6
 *  Copyright notice
7
 *
8
 *  (c) 2019 Frans Saris <[email protected]> & Timo Hund <[email protected]>
9
 *  All rights reserved
10
 *
11
 *  This script is part of the TYPO3 project. The TYPO3 project is
12
 *  free software; you can redistribute it and/or modify
13
 *  it under the terms of the GNU General Public License as published by
14
 *  the Free Software Foundation; either version 3 of the License, or
15
 *  (at your option) any later version.
16
 *
17
 *  The GNU General Public License can be found at
18
 *  http://www.gnu.org/copyleft/gpl.html.
19
 *
20
 *  This script is distributed in the hope that it will be useful,
21
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
22
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
 *  GNU General Public License for more details.
24
 *
25
 *  This copyright notice MUST APPEAR in all copies of the script!
26
 ***************************************************************/
27
28
use ApacheSolrForTypo3\Solr\NoSolrConnectionFoundException;
29
use ApacheSolrForTypo3\Solr\System\Configuration\TypoScriptConfiguration;
30
use ApacheSolrForTypo3\Solr\System\Records\Pages\PagesRepository;
31
use TYPO3\CMS\Core\Context\LanguageAspectFactory;
32
use TYPO3\CMS\Core\Utility\GeneralUtility;
33
use TYPO3\CMS\Core\Site\Entity\Site as Typo3Site;
34
35
36
/**
37
 * Class Typo3ManagedSite
38
 * @package ApacheSolrForTypo3\Solr\Domain\Site
39
 */
40
class Typo3ManagedSite extends Site
41
{
42
43
    /**
44
     * @var Typo3Site
45
     */
46
    protected $typo3SiteObject;
47
48
    /**
49
     * @var array
50
     */
51
    protected $solrConnectionConfigurations;
52
53
54 156
    public function __construct(
55
        TypoScriptConfiguration $configuration,
56
        array $page, $domain, $siteHash, PagesRepository $pagesRepository = null, $defaultLanguageId = 0, $availableLanguageIds = [], array $solrConnectionConfigurations = [], Typo3Site $typo3SiteObject = null)
57
    {
58 156
        $this->configuration = $configuration;
59 156
        $this->rootPage = $page;
60 156
        $this->domain = $domain;
61 156
        $this->siteHash = $siteHash;
62 156
        $this->pagesRepository = $pagesRepository ?? GeneralUtility::makeInstance(PagesRepository::class);
63 156
        $this->defaultLanguageId = $defaultLanguageId;
64 156
        $this->availableLanguageIds = $availableLanguageIds;
65 156
        $this->solrConnectionConfigurations = $solrConnectionConfigurations;
66 156
        $this->typo3SiteObject = $typo3SiteObject;
67 156
    }
68
69
    /**
70
     * @param int $language
71
     * @return array
72
     * @throws NoSolrConnectionFoundException
73 19
     */
74
    public function getSolrConnectionConfiguration(int $language = 0): array
75 19
    {
76 19
        if (!is_array($this->solrConnectionConfigurations[$language])) {
77
            /* @var $noSolrConnectionException NoSolrConnectionFoundException */
78
            $noSolrConnectionException = GeneralUtility::makeInstance(
79
                NoSolrConnectionFoundException::class,
80
                /** @scrutinizer ignore-type */  'Could not find a Solr connection for root page [' . $this->getRootPageId() . '] and language [' . $language . '].',
81
                /** @scrutinizer ignore-type */ 1552491117
82
            );
83
            $noSolrConnectionException->setRootPageId($this->getRootPageId());
84 105
            $noSolrConnectionException->setLanguageId($language);
85
86 105
            throw $noSolrConnectionException;
87
        }
88 1
89 1
        return $this->solrConnectionConfigurations[$language];
90 1
    }
91 1
92
    /**
93 1
     * Returns \TYPO3\CMS\Core\Site\Entity\Site
94 1
     *
95
     * @return Typo3Site
96 1
     */
97
    public function getTypo3SiteObject(): Typo3Site
98
    {
99 105
        return $this->typo3SiteObject;
100
    }
101
}
102