source: temp/test-xoops.ec-cube.net/html/class/xml/themesetparser.php @ 405

Revision 405, 8.3 KB checked in by root, 20 years ago (diff)
Line 
1<?php
2// $Id: themesetparser.php,v 1.2 2005/03/18 12:51:55 onokazu Exp $
3//  ------------------------------------------------------------------------ //
4//                XOOPS - PHP Content Management System                      //
5//                    Copyright (c) 2000 XOOPS.org                           //
6//                       <http://www.xoops.org/>                             //
7//  ------------------------------------------------------------------------ //
8//  This program is free software; you can redistribute it and/or modify     //
9//  it under the terms of the GNU General Public License as published by     //
10//  the Free Software Foundation; either version 2 of the License, or        //
11//  (at your option) any later version.                                      //
12//                                                                           //
13//  You may not change or alter any portion of this comment or credits       //
14//  of supporting developers from this source code or any supporting         //
15//  source code which is considered copyrighted (c) material of the          //
16//  original comment or credit authors.                                      //
17//                                                                           //
18//  This program is distributed in the hope that it will be useful,          //
19//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
20//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
21//  GNU General Public License for more details.                             //
22//                                                                           //
23//  You should have received a copy of the GNU General Public License        //
24//  along with this program; if not, write to the Free Software              //
25//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
26//  ------------------------------------------------------------------------ //
27// Author: Kazumi Ono (AKA onokazu)                                          //
28// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
29// Project: The XOOPS Project                                                //
30// ------------------------------------------------------------------------- //
31
32include_once XOOPS_ROOT_PATH.'/class/xml/saxparser.php';
33include_once XOOPS_ROOT_PATH.'/class/xml/xmltaghandler.php';
34
35class XoopsThemeSetParser extends SaxParser
36{
37    var $tempArr = array();
38    var $themeSetData = array();
39    var $imagesData = array();
40    var $templatesData = array();
41
42    function XoopsThemeSetParser(&$input)
43    {
44        $this->SaxParser($input);
45        $this->addTagHandler(new ThemeSetThemeNameHandler());
46        $this->addTagHandler(new ThemeSetDateCreatedHandler());
47        $this->addTagHandler(new ThemeSetAuthorHandler());
48        $this->addTagHandler(new ThemeSetDescriptionHandler());
49        $this->addTagHandler(new ThemeSetGeneratorHandler());
50        $this->addTagHandler(new ThemeSetNameHandler());
51        $this->addTagHandler(new ThemeSetEmailHandler());
52        $this->addTagHandler(new ThemeSetLinkHandler());
53        $this->addTagHandler(new ThemeSetTemplateHandler());
54        $this->addTagHandler(new ThemeSetImageHandler());
55        $this->addTagHandler(new ThemeSetModuleHandler());
56        $this->addTagHandler(new ThemeSetFileTypeHandler());
57        $this->addTagHandler(new ThemeSetTagHandler());
58    }
59
60    function setThemeSetData($name, &$value)
61    {
62        $this->themeSetData[$name] =& $value;
63    }
64
65    function &getThemeSetData($name=null)
66    {
67        if (isset($name)) {
68            if (isset($this->themeSetData[$name])) {
69                return $this->themeSetData[$name];
70            }
71            return false;
72        }
73        return $this->themeSetData;
74    }
75
76    function setImagesData(&$imagearr)
77    {
78        $this->imagesData[] =& $imagearr;
79    }
80
81    function &getImagesData()
82    {
83        return $this->imagesData;
84    }
85
86    function setTemplatesData(&$tplarr)
87    {
88        $this->templatesData[] =& $tplarr;
89    }
90
91    function &getTemplatesData()
92    {
93        return $this->templatesData;
94    }
95
96    function setTempArr($name, &$value, $delim='')
97    {
98        if (!isset($this->tempArr[$name])) {
99            $this->tempArr[$name] =& $value;
100        } else {
101            $this->tempArr[$name] .= $delim.$value;
102        }
103    }
104
105    function getTempArr()
106    {
107        return $this->tempArr;
108    }
109
110    function resetTempArr()
111    {
112        unset($this->tempArr);
113        $this->tempArr = array();
114    }
115}
116
117
118class ThemeSetDateCreatedHandler extends XmlTagHandler
119{
120
121    function ThemeSetDateCreatedHandler()
122    {
123
124    }
125
126    function getName()
127    {
128        return 'dateCreated';
129    }
130
131    function handleCharacterData(&$parser, &$data)
132    {
133        switch ($parser->getParentTag()) {
134        case 'themeset':
135            $parser->setThemeSetData('date', $data);
136            break;
137        default:
138            break;
139        }
140    }
141}
142
143class ThemeSetAuthorHandler extends XmlTagHandler
144{
145    function ThemeSetAuthorHandler()
146    {
147
148    }
149
150    function getName()
151    {
152        return 'author';
153    }
154
155    function handleBeginElement(&$parser, &$attributes)
156    {
157        $parser->resetTempArr();
158    }
159
160    function handleEndElement(&$parser)
161    {
162        $parser->setCreditsData($parser->getTempArr());
163    }
164}
165
166class ThemeSetDescriptionHandler extends XmlTagHandler
167{
168    function ThemeSetDescriptionHandler()
169    {
170
171    }
172
173    function getName()
174    {
175        return 'description';
176    }
177
178    function handleCharacterData(&$parser, &$data)
179    {
180        switch ($parser->getParentTag()) {
181        case 'template':
182            $parser->setTempArr('description', $data);
183            break;
184        case 'image':
185            $parser->setTempArr('description', $data);
186            break;
187        default:
188            break;
189        }
190    }
191}
192
193class ThemeSetGeneratorHandler extends XmlTagHandler
194{
195    function ThemeSetGeneratorHandler()
196    {
197
198    }
199
200    function getName()
201    {
202        return 'generator';
203    }
204
205    function handleCharacterData(&$parser, &$data)
206    {
207        switch ($parser->getParentTag()) {
208        case 'themeset':
209            $parser->setThemeSetData('generator', $data);
210            break;
211        default:
212            break;
213        }
214    }
215}
216
217class ThemeSetNameHandler extends XmlTagHandler
218{
219    function ThemeSetNameHandler()
220    {
221
222    }
223
224    function getName()
225    {
226        return 'name';
227    }
228
229    function handleCharacterData(&$parser, &$data)
230    {
231        switch ($parser->getParentTag()) {
232        case 'themeset':
233            $parser->setThemeSetData('name', $data);
234            break;
235        case 'author':
236            $parser->setTempArr('name', $data);
237            break;
238        default:
239            break;
240        }
241    }
242}
243
244class ThemeSetEmailHandler extends XmlTagHandler
245{
246    function ThemeSetEmailHandler()
247    {
248
249    }
250
251    function getName()
252    {
253        return 'email';
254    }
255
256    function handleCharacterData(&$parser, &$data)
257    {
258        switch ($parser->getParentTag()) {
259        case 'author':
260            $parser->setTempArr('email', $data);
261            break;
262        default:
263            break;
264        }
265    }
266}
267
268class ThemeSetLinkHandler extends XmlTagHandler
269{
270    function ThemeSetLinkHandler()
271    {
272
273    }
274
275    function getName()
276    {
277        return 'link';
278    }
279
280    function handleCharacterData(&$parser, &$data)
281    {
282        switch ($parser->getParentTag()) {
283        case 'author':
284            $parser->setTempArr('link', $data);
285            break;
286        default:
287            break;
288        }
289    }
290}
291
292class ThemeSetTemplateHandler extends XmlTagHandler
293{
294    function ThemeSetTemplateHandler()
295    {
296
297    }
298
299    function getName()
300    {
301        return 'template';
302    }
303
304    function handleBeginElement(&$parser, &$attributes)
305    {
306        $parser->resetTempArr();
307        $parser->setTempArr('name', $attributes['name']);
308    }
309
310    function handleEndElement(&$parser)
311    {
312        $parser->setTemplatesData($parser->getTempArr());
313    }
314}
315
316class ThemeSetImageHandler extends XmlTagHandler
317{
318    function ThemeSetImageHandler()
319    {
320
321    }
322
323    function getName()
324    {
325        return 'image';
326    }
327
328    function handleBeginElement(&$parser, &$attributes)
329    {
330        $parser->resetTempArr();
331        $parser->setTempArr('name', $attributes[0]);
332    }
333
334    function handleEndElement(&$parser)
335    {
336        $parser->setImagesData($parser->getTempArr());
337    }
338}
339
340class ThemeSetModuleHandler extends XmlTagHandler
341{
342    function ThemeSetModuleHandler()
343    {
344
345    }
346
347    function getName()
348    {
349        return 'module';
350    }
351
352    function handleCharacterData(&$parser, &$data)
353    {
354        switch ($parser->getParentTag()) {
355        case 'template':
356        case 'image':
357            $parser->setTempArr('module', $data);
358            break;
359        default:
360            break;
361        }
362    }
363}
364
365class ThemeSetFileTypeHandler extends XmlTagHandler
366{
367    function ThemeSetFileTypeHandler()
368    {
369
370    }
371
372    function getName()
373    {
374        return 'fileType';
375    }
376
377    function handleCharacterData(&$parser, &$data)
378    {
379        switch ($parser->getParentTag()) {
380        case 'template':
381            $parser->setTempArr('type', $data);
382            break;
383        default:
384            break;
385        }
386    }
387}
388
389class ThemeSetTagHandler extends XmlTagHandler
390{
391    function ThemeSetTagHandler()
392    {
393
394    }
395
396    function getName()
397    {
398        return 'tag';
399    }
400
401    function handleCharacterData(&$parser, &$data)
402    {
403        switch ($parser->getParentTag()) {
404        case 'image':
405            $parser->setTempArr('tag', $data);
406            break;
407        default:
408            break;
409        }
410    }
411}
412?>
Note: See TracBrowser for help on using the repository browser.