Completed
Push — master ( 6e98ac...8f8ac6 )
by Timo
36:51 queued 33:36
created

Typo3ManagedSite::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 13
rs 9.9666
cc 1
nc 1
nop 9

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\Utility\GeneralUtility;
32
use TYPO3\CMS\Core\Site\Entity\Site as Typo3Site;
33
34
/**
35
 * Class Typo3ManagedSite
36
 * @package ApacheSolrForTypo3\Solr\Domain\Site
37
 */
38
class Typo3ManagedSite extends Site
39
{
40
41
    /**
42
     * @var Typo3Site
43
     */
44
    protected $typo3SiteObject;
45
46
    /**
47
     * @var array
48
     */
49
    protected $solrConnectionConfigurations;
50
51
52
    public function __construct(
53
        TypoScriptConfiguration $configuration,
54
        array $page, $domain, $siteHash, PagesRepository $pagesRepository = null, $defaultLanguageId = 0, $availableLanguageIds = [], array $solrConnectionConfigurations = [], Typo3Site $typo3SiteObject = null)
55
    {
56
        $this->configuration = $configuration;
57
        $this->rootPage = $page;
58
        $this->domain = $domain;
59
        $this->siteHash = $siteHash;
60
        $this->pagesRepository = $pagesRepository ?? GeneralUtility::makeInstance(PagesRepository::class);
61
        $this->defaultLanguageId = $defaultLanguageId;
62
        $this->availableLanguageIds = $availableLanguageIds;
63
        $this->solrConnectionConfigurations = $solrConnectionConfigurations;
64
        $this->typo3SiteObject = $typo3SiteObject;
65
    }
66
67
    /**
68
     * @param int $languageUid
69
     * @return string
70
     */
71
    public function getSysLanguageMode($languageUid = 0)
72
    {
73
        return $this->typo3SiteObject->getLanguageById($languageUid)->getFallbackType();
74
    }
75
76
    /**
77
     * @param int $language
78
     * @return array
79
     * @throws NoSolrConnectionFoundException
80
     */
81
    public function getSolrConnectionConfiguration(int $language = 0): array
82
    {
83
        if (!is_array($this->solrConnectionConfigurations[$language])) {
84
            /* @var $noSolrConnectionException NoSolrConnectionFoundException */
85
            $noSolrConnectionException = GeneralUtility::makeInstance(
86
                NoSolrConnectionFoundException::class,
87
                /** @scrutinizer ignore-type */  'Could not find a Solr connection for root page [' . $this->getRootPageId() . '] and language [' . $language . '].',
88
                /** @scrutinizer ignore-type */ 1552491117
89
            );
90
            $noSolrConnectionException->setRootPageId($this->getRootPageId());
91
            $noSolrConnectionException->setLanguageId($language);
92
93
            throw $noSolrConnectionException;
94
        }
95
96
        return $this->solrConnectionConfigurations[$language];
97
    }
98
}