HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-theme/Model/ThemeValidator.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Theme\Model;

use Magento\Framework\App\Config\ValueInterface;
use Magento\Framework\View\Design\Theme\ThemeProviderInterface;
use Magento\Framework\View\DesignInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;

/**
 * Class ThemeValidator
 */
class ThemeValidator
{

    /**
     * Store Manager
     *
     * @var StoreManagerInterface $storeManager
     */
    private $storeManager;

    /**
     * Provider for themes registered in db
     *
     * @var ThemeProviderInterface $themeProvider
     */
    private $themeProvider;

    /**
     * Configuration Data
     *
     * @var ValueInterface $configData
     */
    private $configData;

    /**
     * @param StoreManagerInterface $storeManager
     * @param ThemeProviderInterface $themeProvider
     * @param ValueInterface $configData
     */
    public function __construct(
        StoreManagerInterface $storeManager,
        ThemeProviderInterface $themeProvider,
        ValueInterface $configData
    ) {
        $this->storeManager = $storeManager;
        $this->themeProvider = $themeProvider;
        $this->configData = $configData;
    }

    /**
     * Validate the theme if being in use in default, website, or store.
     *
     * @param string[] $themePaths
     * @return array
     */
    public function validateIsThemeInUse($themePaths)
    {
        $messages = [];
        $themesById = [];
        foreach ($themePaths as $themePath) {
            $theme = $this->themeProvider->getThemeByFullPath($themePath);
            $themesById[$theme->getId()] = $themePath;
        }
        $configData = $this->configData
            ->getCollection()
            ->addFieldToFilter('path', DesignInterface::XML_PATH_THEME_ID)
            ->addFieldToFilter('value', ['in' => array_keys($themesById)]);
        foreach ($configData as $row) {
            switch ($row['scope']) {
                case 'default':
                    $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in default config' . '</error>';
                    break;
                case ScopeInterface::SCOPE_WEBSITES:
                    $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in website '
                        . $this->storeManager->getWebsite($row['scope_id'])->getName() . '</error>';
                    break;
                case ScopeInterface::SCOPE_STORES:
                    $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in store '
                        . $this->storeManager->getStore($row['scope_id'])->getName() . '</error>';
                    break;
            }
        }
        return $messages;
    }
}