Skip to content
Snippets Groups Projects
ExtensionConfiguration.php 3.59 KiB
Newer Older
Patrick Schriner's avatar
Patrick Schriner committed
<?php

declare(strict_types=1);

/*
 * This file is part of the "gsb_metadata_cleaner" Extension for TYPO3 CMS.
 *
 * For the full copyright and license information, please read the
 * LICENSE file that was distributed with this source code.
 */

namespace ITZBund\GsbMetadataCleaner\Configuration;

use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use TYPO3\CMS\Core\Configuration\Exception\ExtensionConfigurationExtensionNotConfiguredException;
use TYPO3\CMS\Core\Configuration\Exception\ExtensionConfigurationPathDoesNotExistException;
use TYPO3\CMS\Core\Configuration\ExtensionConfiguration as CoreExtensionConfiguration;

class ExtensionConfiguration
{
    protected string $defaultExifToolPath = '/usr/bin/exiftool';

    protected string $defaultQpdfToolPath = '/usr/bin/qpdf';

    public function __construct(
        private readonly CoreExtensionConfiguration $extensionConfiguration,
        private readonly LoggerInterface $logger
    ) {}

    /**
     * Get the path to the exiftool executable, defined by extension configuration or default
     *
     * @return string the path to the exiftool executable
     */
    public function getExifToolPath(): string
    {
        $exifToolPath = '';
        try {
            $exifToolPath = $this->extensionConfiguration->get('gsb_metadata_cleaner', 'exifToolPath');
        } catch (ExtensionConfigurationExtensionNotConfiguredException $ecence) {
            $this->logger->log(LogLevel::DEBUG, 'Extension not configured');
        } catch (ExtensionConfigurationPathDoesNotExistException $ecpdnee) {
            $this->logger->log(LogLevel::DEBUG, 'exifToolPath not configured');
        }

        if (trim((string)$exifToolPath) !== '') {
            if (file_exists($exifToolPath)) {
                return trim((string)$exifToolPath);
            }
            $this->logger->log(LogLevel::ERROR, 'exifToolPath configured, but not found', [
                'exifToolPath' => trim((string)$exifToolPath),
            ]);
        }

        return $this->defaultExifToolPath;
    }

    /**
     * Get the path to the qpdf executable, defined by extension configuration or default
     *
     * @return string the path to the pdf executable
     */
    public function getQpdfToolPath(): string
    {
        $qpdfToolPath = '';
        try {
            $qpdfToolPath = $this->extensionConfiguration->get('gsb_metadata_cleaner', 'qpdfToolPath');
        } catch (ExtensionConfigurationExtensionNotConfiguredException $ecence) {
            $this->logger->log(LogLevel::DEBUG, 'Extension not configured');
        } catch (ExtensionConfigurationPathDoesNotExistException $ecpdnee) {
            $this->logger->log(LogLevel::DEBUG, 'qpdfToolPath not configured');
        }

        if (trim((string)$qpdfToolPath) !== '') {
            if (file_exists($qpdfToolPath)) {
                return trim((string)$qpdfToolPath);
            }
            $this->logger->log(LogLevel::ERROR, 'qpdfToolPath configured, but not found', [
                'qpdfToolPath' => trim((string)$qpdfToolPath),
            ]);
        }

        return $this->defaultQpdfToolPath;
    }

    public function getUseQpdf(): bool
    {
        $useQpdf = true;
        try {
            $useQpdf = (bool)$this->extensionConfiguration->get('gsb_metadata_cleaner', 'useQpdf');
        } catch (ExtensionConfigurationExtensionNotConfiguredException $ecence) {
            $this->logger->log(LogLevel::DEBUG, 'Extension not configured');
        } catch (ExtensionConfigurationPathDoesNotExistException $ecpdnee) {
            $this->logger->log(LogLevel::DEBUG, 'useQpdf not configured');
        }
        return $useQpdf;
    }
}

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.