e18190f47437a73437124feffaf2dc64f8ff353f
[core.git] / inc / main / interfaces / template / class_CompileableTemplate.php
1 <?php
2 // Own namespace
3 namespace CoreFramework\Template;
4
5 // Import framework stuff
6 use CoreFramework\Generic\FrameworkInterface;
7 use CoreFramework\Manager\ManageableApplication;
8
9 /**
10  * An interface for template engines
11  *
12  * @author              Roland Haeder <webmaster@shipsimu.org>
13  * @version             0.0.0
14  * @copyright   Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
15  * @license             GNU GPL 3.0 or any newer version
16  * @link                http://www.shipsimu.org
17  *
18  * This program is free software: you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation, either version 3 of the License, or
21  * (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program. If not, see <http://www.gnu.org/licenses/>.
30  */
31 interface CompileableTemplate extends FrameworkInterface {
32         /**
33          * Assign variables for templates
34          *
35          * @param       $variableName   The "variable" we want to assign
36          * @param       $value                  The value we want to store in the variable
37          * @return      void
38          */
39         function assignVariable ($variableName, $value);
40
41         /**
42          * Load a specified HTML template into the engine
43          *
44          * @param       $template       The web template we shall load which is located in
45          *                                              "html" by default
46          * @return      void
47          */
48         function loadHtmlTemplate ($template);
49
50         /**
51          * Load a specified code template into the engine for later compilation
52          * with other code/web/email templates.
53          *
54          * @param       $template       The code template we shall load which is
55          *                                              located in "html" by default
56          * @return      void
57          */
58         function loadCodeTemplate ($template);
59
60         /**
61          * Load a specified email template into the engine for later compilation
62          * with other code/web/email templates.
63          *
64          * @param       $template       The email template we shall load which is
65          *                                              located in "html" by default
66          * @return      void
67          */
68         function loadEmailTemplate ($template);
69
70         /**
71          * Compile all variables by inserting their respective values
72          *
73          * @return      void
74          */
75         function compileVariables ();
76
77
78         /**
79          * Compile all required code/web/email-templates into the current one
80          *
81          * @return      void
82          */
83         function compileTemplate ();
84
85         /**
86          * Adds a variable to current group
87          *
88          * @param       $variableName   Variable to set
89          * @param       $value                  Value to store in variable
90          * @return      void
91          */
92         function addGroupVariable ($variableName, $value);
93
94         /**
95          * Removes a given variable
96          *
97          * @param       $variableName   The variable we are looking for
98          * @param       $variableGroup  Name of variable group (default: 'general')
99          * @return      void
100          */
101         function removeVariable ($variableName, $variableGroup = 'general');
102
103         /**
104          * Assign a given congfiguration variable with a value
105          *
106          * @param       $variableName   The configuration variable we want to assign
107          * @return      void
108          */
109         function assignConfigVariable ($variableName);
110
111         /**
112          * Compiles configuration place-holders in all variables. This 'walks'
113          * through the variable stack 'general'. It interprets all values from that
114          * variables as configuration entries after compiling them.
115          *
116          * @return      void
117          */
118         function compileConfigInVariables ();
119
120         /**
121          * Assigns the last loaded raw template content with a given variable
122          *
123          * @param       $templateName   Name of the template we want to assign
124          * @param       $variableName   Name of the variable we want to assign
125          * @return      void
126          */
127         function assignTemplateWithVariable ($templateName, $variableName);
128
129         /**
130          * Transfers the content of this template engine to a given response instance
131          *
132          * @param       $responseInstance       An instance of a Responsable class
133          * @return      void
134          */
135         function transferToResponse (Responseable $responseInstance);
136
137         /**
138          * Assigns all the application data with template variables
139          *
140          * @param       $applicationInstance    A manageable application instance
141          * @return      void
142          */
143         function assignApplicationData (ManageableApplication $applicationInstance);
144
145         /**
146          * "Compiles" a variable by replacing {?var?} with it's content
147          *
148          * @param       $rawCode                        Raw code to compile
149          * @param       $setMatchAsCode         Sets $match if readVariable() returns empty result (default: FALSE)
150          * @return      $rawCode                        Compile code with inserted variable value
151          */
152         function compileRawCode ($rawCode, $setMatchAsCode = FALSE);
153
154         /**
155          * Renames a variable in code and in stack
156          *
157          * @param       $oldName        Old name of variable
158          * @param       $newName        New name of variable
159          * @return      void
160          */
161         function renameVariable ($oldName, $newName);
162
163         /**
164          * Renders the given XML content
165          *
166          * @param       $content        Valid XML content or if not set the current loaded raw content
167          * @return      void
168          * @throws      XmlParserException      If an XML error was found
169          */
170         function renderXmlContent ($content = NULL);
171
172         /**
173          * Enables or disables language support
174          *
175          * @param       $languageSupport        New language support setting
176          * @return      void
177          */
178         function enableLanguageSupport ($languageSupport = TRUE);
179
180         /**
181          * Checks whether language support is enabled
182          *
183          * @return      $languageSupport        Whether language support is enabled or disabled
184          */
185         function isLanguageSupportEnabled ();
186
187         /**
188          * Enables or disables XML compacting
189          *
190          * @param       $xmlCompacting  New XML compacting setting
191          * @return      void
192          */
193         function enableXmlCompacting ($xmlCompacting = TRUE);
194
195         /**
196          * Checks whether XML compacting is enabled
197          *
198          * @return      $xmlCompacting  Whether XML compacting is enabled or disabled
199          */
200         function isXmlCompactingEnabled ();
201
202         /**
203          * Removes all comments, tabs and new-line charcters to compact the content
204          *
205          * @param       $uncompactedContent             The uncompacted content
206          * @return      $compactedContent               The compacted content
207          */
208         function compactContent ($uncompactedContent);
209
210         /**
211          * Getter for given variable group
212          *
213          * @param       $variableGroup  Variable group to check
214          * @return      $varStack               Found variable group
215          */
216         function getVarStack ($variableGroup);
217
218         /**
219          * Settter for variable group
220          *
221          * @param       $groupName      Name of variable group
222          * @param       $add            Whether add this group
223          * @return      void
224          */
225         function setVariableGroup ($groupName, $add = TRUE);
226
227         /**
228          * Getter for template type
229          *
230          * @return      $templateType   The current template's type
231          */
232         function getTemplateType ();
233
234         /**
235          * Getter for base path
236          *
237          * @return      $templateBasePath       The relative base path for all templates
238          */
239         function getTemplateBasePath ();
240
241         /**
242          * Getter for generic base path
243          *
244          * @return      $templateBasePath       The relative base path for all templates
245          */
246         function getGenericBasePath ();
247
248         /**
249          * Getter for template extension
250          *
251          * @return      $templateExtension      The file extension for all uncompiled
252          *                                                      templates
253          */
254         function getRawTemplateExtension ();
255
256         /**
257          * Getter for code-template extension
258          *
259          * @return      $codeExtension          The file extension for all code-
260          *                                                      templates
261          */
262         function getCodeTemplateExtension ();
263
264         /**
265          * Getter for raw template data
266          *
267          * @return      $rawTemplateData        The raw data from the template
268          */
269         function getRawTemplateData ();
270
271         /**
272          * Assigns a lot variables into the stack of currently loaded template.
273          * This method should only be used in very rare circumstances, e.g. when
274          * you have to copy a whole set of variables into the template engine.
275          * Before you use this method, please make sure you have considered all
276          * other possiblities.
277          *
278          * @param       $variables      An array with variables to be assigned
279          * @return      void
280          */
281         function assignMultipleVariables (array $variables);
282
283         /**
284          * Getter for variable group array
285          *
286          * @return      $variableGroups All variable groups
287          */
288         function getVariableGroups ();
289
290 }