Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
Rendering.php
001 <?php
002
003 /**
004 * @package s9e\TextFormatter
005 * @copyright Copyright (c) 2010-2022 The s9e authors
006 * @license http://www.opensource.org/licenses/mit-license.php The MIT License
007 */
008 namespace s9e\TextFormatter\Configurator;
009
010 use ReflectionClass;
011 use RuntimeException;
012 use s9e\TextFormatter\Configurator;
013 use s9e\TextFormatter\Configurator\Collections\TemplateParameterCollection;
014 use s9e\TextFormatter\Configurator\Traits\Configurable;
015
016 /**
017 * @property RendererGenerator $engine
018 * @property TemplateParameterCollection $parameters Parameters used by the renderer
019 */
020 class Rendering
021 {
022 use Configurable;
023
024 /**
025 * @var Configurator
026 */
027 protected $configurator;
028
029 /**
030 * @var RendererGenerator
031 */
032 protected $engine;
033
034 /**
035 * @var TemplateParameterCollection Parameters used by the renderer
036 */
037 protected $parameters;
038
039 /**
040 * Constructor
041 *
042 * @param Configurator $configurator
043 */
044 public function __construct(Configurator $configurator)
045 {
046 $this->configurator = $configurator;
047 $this->parameters = new TemplateParameterCollection;
048 }
049
050 /**
051 * Get all the parameters defined and/or used in all the templates
052 *
053 * @return array Associative array of parameters names and their default value
054 */
055 public function getAllParameters()
056 {
057 // Collect parameters used in template
058 $params = [];
059 foreach ($this->configurator->tags as $tag)
060 {
061 if (isset($tag->template))
062 {
063 foreach ($tag->template->getParameters() as $paramName)
064 {
065 $params[$paramName] = '';
066 }
067 }
068 }
069
070 // Merge defined parameters and those collected from templates. Defined parameters take
071 // precedence
072 $params = iterator_to_array($this->parameters) + $params;
073
074 // Sort parameters by name for consistency
075 ksort($params);
076
077 return $params;
078 }
079
080 /**
081 * Return the renderer generator used by this instance
082 *
083 * @return RendererGenerator
084 */
085 public function getEngine()
086 {
087 if (!isset($this->engine))
088 {
089 $this->setEngine('XSLT');
090 }
091
092 return $this->engine;
093 }
094
095 /**
096 * Return an instance of Renderer based on the current config
097 *
098 * @return Renderer
099 */
100 public function getRenderer()
101 {
102 return $this->getEngine()->getRenderer($this);
103 }
104
105 /**
106 * Get the templates defined in all the targs
107 *
108 * @return array Associative array of template names and content
109 */
110 public function getTemplates()
111 {
112 $templates = [
113 'br' => '<br/>',
114 'e' => '',
115 'i' => '',
116 'p' => '<p><xsl:apply-templates/></p>',
117 's' => ''
118 ];
119
120 foreach ($this->configurator->tags as $tagName => $tag)
121 {
122 if (isset($tag->template))
123 {
124 $templates[$tagName] = (string) $tag->template;
125 }
126 }
127
128 ksort($templates);
129
130 return $templates;
131 }
132
133 /**
134 * Set the RendererGenerator instance used
135 *
136 * NOTE: extra parameters are passed to the RendererGenerator's constructor
137 *
138 * @param string|RendererGenerator $engine Engine name or instance of RendererGenerator
139 * @return RendererGenerator Instance of RendererGenerator
140 */
141 public function setEngine($engine)
142 {
143 if (!($engine instanceof RendererGenerator))
144 {
145 $className = 's9e\\TextFormatter\\Configurator\\RendererGenerators\\' . $engine;
146 $reflection = new ReflectionClass($className);
147
148 $engine = $reflection->newInstanceArgs(array_slice(func_get_args(), 1));
149 }
150
151 $this->engine = $engine;
152
153 return $engine;
154 }
155 }