‪TYPO3CMS  ‪main
ModeRegistry.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
23 
29 {
33  protected array ‪$registeredModes = [];
34 
36 
40  public function register(‪Mode $mode): ‪ModeRegistry
41  {
42  $this->registeredModes[$mode->getFormatCode()] = $mode;
43  if ($mode->isDefault()) {
44  $this->defaultMode = $mode;
45  }
46 
47  return $this;
48  }
49 
53  public function ‪unregister(string $formatCode): ‪ModeRegistry
54  {
55  if (isset($this->registeredModes[$formatCode])) {
56  unset($this->registeredModes[$formatCode]);
57  }
58 
59  return $this;
60  }
61 
62  public function ‪isRegistered(string $formatCode): bool
63  {
64  return isset($this->registeredModes[$formatCode]);
65  }
66 
70  public function ‪getByFormatCode(string $formatCode): ‪Mode
71  {
72  foreach ($this->registeredModes as $mode) {
73  if ($mode->getFormatCode() === $formatCode) {
74  return $mode;
75  }
76  }
77 
78  throw new ‪InvalidModeException('Tried to get unregistered code editor mode by format code "' . $formatCode . '"', 1499710203);
79  }
80 
84  public function ‪getByFileExtension(string $fileExtension): ‪Mode
85  {
86  foreach ($this->registeredModes as $mode) {
87  if (in_array($fileExtension, $mode->getBoundFileExtensions(), true)) {
88  return $mode;
89  }
90  }
91 
92  throw new ‪InvalidModeException('Cannot find a registered mode for requested file extension "' . $fileExtension . '"', 1500306488);
93  }
94 
95  public function ‪getDefaultMode(): ‪Mode
96  {
97  return ‪$this->defaultMode;
98  }
99 }
‪TYPO3\CMS\Backend\CodeEditor\Mode
Definition: Mode.php:27
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\unregister
‪unregister(string $formatCode)
Definition: ModeRegistry.php:53
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\getDefaultMode
‪getDefaultMode()
Definition: ModeRegistry.php:95
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\getByFileExtension
‪getByFileExtension(string $fileExtension)
Definition: ModeRegistry.php:84
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\$defaultMode
‪Mode $defaultMode
Definition: ModeRegistry.php:35
‪TYPO3\CMS\Backend\CodeEditor\Registry
Definition: AddonRegistry.php:18
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\isRegistered
‪isRegistered(string $formatCode)
Definition: ModeRegistry.php:62
‪TYPO3\CMS\Filelist\Type\Mode
‪Mode
Definition: Mode.php:24
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry
Definition: ModeRegistry.php:29
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\getByFormatCode
‪getByFormatCode(string $formatCode)
Definition: ModeRegistry.php:70
‪TYPO3\CMS\Backend\CodeEditor\Exception\InvalidModeException
Definition: InvalidModeException.php:26
‪TYPO3\CMS\Backend\CodeEditor\Registry\ModeRegistry\$registeredModes
‪array $registeredModes
Definition: ModeRegistry.php:33