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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Rendering.php

Zuletzt modifiziert: 02.04.2025, 15:03 - Dateigröße: 3.22 KiB


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  }