- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / setup / templateoperator.php
1 <?php
2 //
3 // Created on: <21-May-2003 14:49:27 amos>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 $module = $Params['Module'];
30
31 require_once( "kernel/common/template.php" );
32 $ini = eZINI::instance();
33 $tpl = templateInit();
34
35 /*
36 - Name
37 - Single operator or multiple (single default)
38 - Parameter type (no, named, sequential, custom - no default)
39 - Input (yes or not, yes default)
40 - Output (yes or no, yes default)
41
42 - Class name (optional, auto created from name)
43 - Description (optional)
44 - Creator (optional)
45 - Example code(optional)
46
47 */
48
49 $steps = array( 'basic' => array( 'template' => 'templateoperator_basic.tpl',
50                                   'function' => 'templateOperatorBasic' ),
51                 'describe' => array( 'pre_function' => 'templateOperatorBasicFetchData',
52                                      'template' => 'templateoperator_describe.tpl',
53                                      'function' => 'templateOperatorDescribe' ),
54                 'download' => array( 'pre_function' => 'templateOperatorDescribeFetchData',
55                                      'function' => 'templateOperatorDownload' ) );
56
57 $template = 'templateoperator.tpl';
58
59 $http = eZHTTPTool::instance();
60
61 $persistentData = array();
62 if ( $http->hasPostVariable( 'PersistentData' ) )
63     $persistentData = $http->postVariable( 'PersistentData' );
64
65 $currentStep = false;
66 if ( $http->hasPostVariable( 'OperatorStep' ) and
67      $http->hasPostVariable( 'TemplateOperatorStepButton' ) )
68 {
69     $step = $http->postVariable( 'OperatorStep' );
70     if ( isset( $steps[$step] ) )
71     {
72         $currentStep = $steps[$step];
73         $currentStep['name'] = $step;
74     }
75 }
76
77 if ( $http->hasPostVariable( 'TemplateOperatorRestartButton' ) )
78 {
79     $currentStep = false;
80     $persistentData = array();
81 }
82
83 if ( $currentStep )
84 {
85     if ( isset( $currentStep['pre_function'] ) )
86     {
87         $preFunctionName = $currentStep['pre_function'];
88         if ( function_exists( $preFunctionName ) )
89         {
90             $preFunctionName( $tpl, $persistentData );
91         }
92         else
93         {
94             eZDebug::writeWarning( 'Unknown pre step function ' . $preFunctionName );
95         }
96     }
97     if ( isset( $currentStep['function'] ) )
98     {
99         $functionName = $currentStep['function'];
100         if ( function_exists( $functionName ) )
101         {
102             $functionName( $tpl, $persistentData, $currentStep );
103         }
104         else
105         {
106             eZDebug::writeWarning( 'Unknown step function ' . $functionName );
107         }
108     }
109     if ( isset( $currentStep['template'] ) )
110     {
111         $template = $currentStep['template'];
112     }
113 }
114
115 $tpl->setVariable( 'persistent_data', $persistentData );
116
117 $Result = array();
118 $Result['content'] = $tpl->fetch( "design:setup/$template" );
119 $Result['path'] = array( array( 'url' => false,
120                                 'text' => ezpI18n::translate( 'kernel/setup', 'Template operator wizard' ) ) );
121
122
123 function templateOperatorBasic( $tpl, &$persistentData, $stepData )
124 {
125 }
126
127 function templateOperatorBasicFetchData( $tpl, &$persistentData )
128 {
129     $http = eZHTTPTool::instance();
130     $operatorName = false;
131     if ( $http->hasPostVariable( 'Name' ) )
132         $operatorName = $http->postVariable( 'Name' );
133     $singleOperator = false;
134     if ( $http->hasPostVariable( 'SingleOperatorCheck' ) )
135         $singleOperator = true;
136     $useInput = false;
137     if ( $http->hasPostVariable( 'InputCheck' ) )
138         $useInput = true;
139     $useOutput = false;
140     if ( $http->hasPostVariable( 'OutputCheck' ) )
141         $useOutput = true;
142     $parameterCheck = 1;
143     if ( $http->hasPostVariable( 'Parameter' ) )
144         $parameterCheck = $http->postVariable( 'Parameter' );
145
146     $operatorName = preg_replace( array( "#([a-z])([A-Z])#",
147                                          "#__+#",
148                                          "#(^_|_$)#" ),
149                                   array( '$1_$2',
150                                          '_',
151                                          '' ),
152                                   $operatorName );
153     $operatorName = strtolower( $operatorName );
154
155     $persistentData['name'] = $operatorName;
156     $persistentData['single-operator'] = $singleOperator;
157     $persistentData['use-input'] = $useInput;
158     $persistentData['use-output'] = $useOutput;
159     $persistentData['parameter-check'] = $parameterCheck;
160 }
161
162 function templateOperatorDescribe( $tpl, &$persistentData, $stepData )
163 {
164     $operatorName = $persistentData['name'];
165     $fullClassName = 'Template' . strtoupper( $operatorName[0] ) . substr( $operatorName, 1 ) . 'Operator';
166
167     $singleOperator = $persistentData['single-operator'];
168     $useInput = $persistentData['use-input'];
169     $useOutput = $persistentData['use-output'];
170     $parameterCheck = $persistentData['parameter-check'];
171     $exampleCode = '{';
172     if ( $useInput )
173         $exampleCode .= "\$value|";
174     $exampleCode .= $operatorName;
175     if ( $parameterCheck != 1 )
176         $exampleCode .= '(\'first\',$input2)';
177     else if ( !$useInput and !$useOutput )
178         $exampleCode .= '()';
179     if ( $useOutput )
180         $exampleCode .= "|wash";
181     $exampleCode .= '}';
182
183     $tpl->setVariable( 'class_name', $fullClassName );
184     $tpl->setVariable( 'example_code', $exampleCode );
185     $tpl->setVariable( 'operator_name', $operatorName );
186     $tpl->setVariable( 'single_operator', $singleOperator );
187     $tpl->setVariable( 'use_input', $useInput );
188     $tpl->setVariable( 'use_output', $useOutput );
189     $tpl->setVariable( 'parameter_check', $parameterCheck );
190 }
191
192 function templateOperatorDescribeFetchData( $tpl, &$persistentData )
193 {
194     $http = eZHTTPTool::instance();
195     $className = false;
196     if ( $http->hasPostVariable( 'ClassName' ) )
197         $className = $http->postVariable( 'ClassName' );
198     $description = false;
199     if ( $http->hasPostVariable( 'Description' ) )
200         $description = $http->postVariable( 'Description' );
201     $creatorName = false;
202     if ( $http->hasPostVariable( 'CreatorName' ) )
203         $creatorName = $http->postVariable( 'CreatorName' );
204     $exampleCode = false;
205     if ( $http->hasPostVariable( 'ExampleCode' ) )
206         $exampleCode = $http->postVariable( 'ExampleCode' );
207
208     $persistentData['class-name'] = $className;
209     $persistentData['description'] = $description;
210     $persistentData['creator-name'] = $creatorName;
211     $persistentData['example-code'] = $exampleCode;
212 }
213
214 function templateOperatorDownload( $tpl, &$persistentData, $stepData )
215 {
216     $singleOperator = $persistentData['single-operator'];
217     $useInput = $persistentData['use-input'];
218     $useOutput = $persistentData['use-output'];
219     $parameterCheck = $persistentData['parameter-check'];
220     $useInput = true;
221     $useOutput = false;
222     $parameterCheck = 2;
223
224     $operatorName = $persistentData['name'];
225     $className = $persistentData['class-name'];
226     if ( !$className )
227         $fullClassName = 'Template' . strtoupper( $operatorName[0] ) . substr( $operatorName, 1 ) . 'Operator';
228     else
229         $fullClassName = $className;
230     $filename = strtolower( $fullClassName ) . '.php';
231
232     $description = $persistentData['description'];
233     $creator = $persistentData['creator-name'];
234     $example = $persistentData['example-code'];
235
236     $brief = '';
237     $full = '';
238     $lines = explode( "\n", $description );
239     if ( count( $lines ) > 0 )
240     {
241         $brief = $lines[0];
242         $full = implode( "\n", array_slice( $lines, 1 ) );
243     }
244
245     $tpl->setVariable( 'full_class_name', $fullClassName );
246     $tpl->setVariable( 'class_name', $className );
247     $tpl->setVariable( 'file_name', $filename );
248     $tpl->setVariable( 'operator_name', $operatorName );
249     $tpl->setVariable( 'example_code', $example );
250     $tpl->setVariable( 'creator_name', $creator );
251     $tpl->setVariable( 'description_brief', $brief );
252     $tpl->setVariable( 'description_full', $full );
253
254     $tpl->setVariable( 'single_operator', $singleOperator );
255     $tpl->setVariable( 'use_input', $useInput );
256     $tpl->setVariable( 'use_output', $useOutput );
257     $tpl->setVariable( 'parameter_check', $parameterCheck );
258
259     $content = $tpl->fetch( 'design:setup/templateoperator_code.tpl' );
260
261     $contentLength = strlen( $content );
262     $mimeType = 'application/octet-stream';
263
264     $version = eZPublishSDK::version();
265
266     header( "Pragma: " );
267     header( "Cache-Control: " );
268     header( "Content-Length: $contentLength" );
269     header( "Content-Type: $mimeType" );
270     header( "X-Powered-By: eZ Publish $version" );
271     header( "Content-Disposition: attachment; filename=$filename" );
272     header( "Content-Transfer-Encoding: binary" );
273     ob_end_clean();
274     print( $content );
275     fflush();
276     eZExecution::cleanExit();
277 }
278
279 ?>