Verified Commit 4feb744c authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3478628 by oily, alexpott, catch, sheshsharma, osopolar, dunx, shane...

Issue #3478628 by oily, alexpott, catch, sheshsharma, osopolar, dunx, shane birley, joegl: Fatal error: Uncaught TypeError: Drupal\Core\Extension\ThemeHandler::addTheme()

(cherry picked from commit 22ef552a)
parent 7968166c
Loading
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -67,11 +67,18 @@ public function getDefault() {
  public function listInfo() {
    if (!isset($this->list)) {
      $this->list = [];
      $installed_themes = $this->configFactory->get('core.extension')->get('theme');
      $installed_themes = array_keys($this->configFactory->get('core.extension')->get('theme'));
      if (!empty($installed_themes)) {
        $list = $this->themeList->getList();
        foreach (array_keys($installed_themes) as $theme_name) {
          $this->addTheme($list[$theme_name]);
        foreach ($installed_themes as $theme) {
          // Do not add installed themes that cannot be found by the
          // extension.list.theme service. If a theme does go missing from the
          // file system any call to ::getTheme() will result in an exception
          // and an error being logged. Ignoring the problem here allows the
          // theme system to fix itself while updating.
          if (isset($list[$theme])) {
            $this->addTheme($list[$theme]);
          }
        }
      }
    }
+11 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ protected function setUp(): void {
    $this->configFactory = $this->getConfigFactoryStub([
      'core.extension' => [
        'module' => [],
        'theme' => [],
        'theme' => ['stark' => 'stark'],
        'disabled' => [
          'theme' => [],
        ],
@@ -108,6 +108,16 @@ public function testThemeLibrariesEmpty(): void {
    }
  }

  /**
   * Test that a missing theme doesn't break ThemeHandler::listInfo().
   *
   * @covers ::listInfo
   */
  public function testMissingTheme(): void {
    $themes = $this->themeHandler->listInfo();
    $this->assertSame([], $themes);
  }

}

/**