MediaWiki master
SkinComponentRegistry.php
Go to the documentation of this file.
1<?php
7
10use RuntimeException;
11
18 private $components = null;
19
21 private $skinContext;
22
23 public function __construct( SkinComponentRegistryContext $skinContext ) {
24 $this->skinContext = $skinContext;
25 }
26
36 public function getComponent( string $name ): SkinComponent {
37 if ( $this->components === null ) {
38 $this->registerComponents();
39 }
40 $component = $this->components[$name] ?? null;
41 if ( !$component ) {
42 throw new RuntimeException( 'Unknown component: ' . $name );
43 }
44 return $component;
45 }
46
53 public function getComponents() {
54 if ( $this->components === null ) {
55 $this->registerComponents();
56 }
57 return $this->components;
58 }
59
68 private function registerComponent( string $name ) {
69 $skin = $this->skinContext;
70 $this->components[$name] = match ( $name ) {
71 'copyright' => new SkinComponentCopyright( $skin ),
72 'logos' => new SkinComponentLogo(
73 $skin->getConfig(),
74 $skin->getLanguage()
75 ),
76 'search-box' => new SkinComponentSearch(
77 $skin->getConfig(),
78 $skin->getMessageLocalizer(),
79 SpecialPage::newSearchPage( $skin->getUser() )
80 ),
81 'toc' => new SkinComponentTableOfContents( $skin->getOutput() ),
82 'last-modified' => new SkinComponentLastModified(
83 $skin,
84 $skin->getOutput()->getRevisionTimestamp()
85 ),
86 'rendered-with' => new SkinComponentRenderedWith(
87 $skin,
88 $skin->getOutput()->getOutputFlag( ParserOutputFlags::USE_PARSOID )
89 ),
90 'footer' => new SkinComponentFooter( $skin ),
91 default => throw new RuntimeException( "Unknown component: $name" )
92 };
93 }
94
98 private function registerComponents() {
99 $this->registerComponent( 'copyright' );
100 $this->registerComponent( 'last-modified' );
101 $this->registerComponent( 'logos' );
102 $this->registerComponent( 'toc' );
103 $this->registerComponent( 'search-box' );
104 $this->registerComponent( 'footer' );
105 }
106}
107
109class_alias( SkinComponentRegistry::class, 'MediaWiki\\Skin\\SkinComponentRegistry' );
if(!defined('MW_SETUP_CALLBACK'))
Definition WebStart.php:68
__construct(SkinComponentRegistryContext $skinContext)
Parent class for all special pages.
static newSearchPage(User $user)
Get the users preferred search page.