131 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace WapplerSystems\Meilisearch\System\Configuration;
 | 
						|
 | 
						|
/***************************************************************
 | 
						|
 *  Copyright notice
 | 
						|
 *
 | 
						|
 *  (c) 2017- Timo Schmidt <timo.schmidt@dkd.de
 | 
						|
 *  All rights reserved
 | 
						|
 *
 | 
						|
 *  This script is part of the TYPO3 project. The TYPO3 project is
 | 
						|
 *  free software; you can redistribute it and/or modify
 | 
						|
 *  it under the terms of the GNU General Public License as published by
 | 
						|
 *  the Free Software Foundation; either version 3 of the License, or
 | 
						|
 *  (at your option) any later version.
 | 
						|
 *
 | 
						|
 *  The GNU General Public License can be found at
 | 
						|
 *  http://www.gnu.org/copyleft/gpl.html.
 | 
						|
 *
 | 
						|
 *  This script is distributed in the hope that it will be useful,
 | 
						|
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 *  GNU General Public License for more details.
 | 
						|
 *
 | 
						|
 *  This copyright notice MUST APPEAR in all copies of the script!
 | 
						|
 ***************************************************************/
 | 
						|
 | 
						|
use TYPO3\CMS\Core\Utility\GeneralUtility;
 | 
						|
 | 
						|
/**
 | 
						|
 * This class encapsulates the access to the extension configuration.
 | 
						|
 *
 | 
						|
 * @author Timo Hund <timo.hund@dkd.de>
 | 
						|
 */
 | 
						|
class ExtensionConfiguration
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Extension Configuration
 | 
						|
     *
 | 
						|
     * @var array
 | 
						|
     */
 | 
						|
    protected $configuration = [];
 | 
						|
 | 
						|
    /**
 | 
						|
     * ExtensionConfiguration constructor.
 | 
						|
     * @param array $configurationToUse
 | 
						|
     */
 | 
						|
    public function __construct($configurationToUse = [])
 | 
						|
    {
 | 
						|
        if (empty($configurationToUse)) {
 | 
						|
            $this->configuration = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Configuration\ExtensionConfiguration::class)->get('meilisearch');
 | 
						|
        } else {
 | 
						|
            $this->configuration = $configurationToUse;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get configuration for useConfigurationFromClosestTemplate
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function getIsUseConfigurationFromClosestTemplateEnabled()
 | 
						|
    {
 | 
						|
        return (bool)$this->getConfigurationOrDefaultValue('useConfigurationFromClosestTemplate', false);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get configuration for useConfigurationTrackRecordsOutsideSiteroot
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function getIsUseConfigurationTrackRecordsOutsideSiteroot()
 | 
						|
    {
 | 
						|
        return (bool)$this->getConfigurationOrDefaultValue('useConfigurationTrackRecordsOutsideSiteroot', true);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get configuration for allowSelfSignedCertificates
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function getIsSelfSignedCertificatesEnabled()
 | 
						|
    {
 | 
						|
        return (bool)$this->getConfigurationOrDefaultValue('allowSelfSignedCertificates', false);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get configuration for useConfigurationMonitorTables
 | 
						|
     *
 | 
						|
     * @return array of tableName
 | 
						|
     */
 | 
						|
    public function getIsUseConfigurationMonitorTables()
 | 
						|
    {
 | 
						|
        $monitorTables = [];
 | 
						|
        $monitorTablesList = $this->getConfigurationOrDefaultValue('useConfigurationMonitorTables', '');
 | 
						|
 | 
						|
        if (empty($monitorTablesList)) {
 | 
						|
            return $monitorTables;
 | 
						|
        }
 | 
						|
 | 
						|
        return GeneralUtility::trimExplode(',', $monitorTablesList);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get configuration for allowLegacySiteMode
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function getIsAllowLegacySiteModeEnabled(): bool
 | 
						|
    {
 | 
						|
        trigger_error('solr:deprecation: Method getIsAllowLegacySiteModeEnabled is deprecated since EXT:meilisearch 11 and will be removed in 12. Since EXT:meilisearch 10 legacy site handling is deprecated and was removed in EXT:meilisearch 11.', E_USER_DEPRECATED);
 | 
						|
 | 
						|
        //@todo throw exception if set to true and log deprecation
 | 
						|
        $legacyModeIsActive = $this->getConfigurationOrDefaultValue('allowLegacySiteMode', false);
 | 
						|
        if($legacyModeIsActive === true) {
 | 
						|
            throw new \InvalidArgumentException("Legacy mode is not supported anymore, please migrate your system to use sitehandling now!");
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param string $key
 | 
						|
     * @param mixed $defaultValue
 | 
						|
     * @return mixed
 | 
						|
     */
 | 
						|
    protected function getConfigurationOrDefaultValue($key, $defaultValue)
 | 
						|
    {
 | 
						|
        return isset($this->configuration[$key]) ? $this->configuration[$key] : $defaultValue;
 | 
						|
    }
 | 
						|
}
 |