1: <?php
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32: if (!defined('XOOPS_ROOT_PATH')) exit();
33:
34: include_once XOOPS_ROOT_PATH.'/class/xml/saxparser.php';
35: include_once XOOPS_ROOT_PATH.'/class/xml/xmltaghandler.php';
36:
37: class XoopsThemeSetParser extends SaxParser
38: {
39: var $tempArr = array();
40: var $themeSetData = array();
41: var $imagesData = array();
42: var $templatesData = array();
43:
44: function XoopsThemeSetParser(&$input)
45: {
46: $this->SaxParser($input);
47: $this->addTagHandler(new ThemeSetThemeNameHandler());
48: $this->addTagHandler(new ThemeSetDateCreatedHandler());
49: $this->addTagHandler(new ThemeSetAuthorHandler());
50: $this->addTagHandler(new ThemeSetDescriptionHandler());
51: $this->addTagHandler(new ThemeSetGeneratorHandler());
52: $this->addTagHandler(new ThemeSetNameHandler());
53: $this->addTagHandler(new ThemeSetEmailHandler());
54: $this->addTagHandler(new ThemeSetLinkHandler());
55: $this->addTagHandler(new ThemeSetTemplateHandler());
56: $this->addTagHandler(new ThemeSetImageHandler());
57: $this->addTagHandler(new ThemeSetModuleHandler());
58: $this->addTagHandler(new ThemeSetFileTypeHandler());
59: $this->addTagHandler(new ThemeSetTagHandler());
60: }
61:
62: function setThemeSetData($name, &$value)
63: {
64: $this->themeSetData[$name] =& $value;
65: }
66:
67: function &getThemeSetData($name=null)
68: {
69: if (isset($name)) {
70: if (isset($this->themeSetData[$name])) {
71: return $this->themeSetData[$name];
72: }
73: $ret = false;
74: return $ret;
75: }
76: return $this->themeSetData;
77: }
78:
79: function setImagesData(&$imagearr)
80: {
81: $this->imagesData[] =& $imagearr;
82: }
83:
84: function &getImagesData()
85: {
86: return $this->imagesData;
87: }
88:
89: function setTemplatesData(&$tplarr)
90: {
91: $this->templatesData[] =& $tplarr;
92: }
93:
94: function &getTemplatesData()
95: {
96: return $this->templatesData;
97: }
98:
99: function setTempArr($name, &$value, $delim='')
100: {
101: if (!isset($this->tempArr[$name])) {
102: $this->tempArr[$name] =& $value;
103: } else {
104: $this->tempArr[$name] .= $delim.$value;
105: }
106: }
107:
108: function getTempArr()
109: {
110: return $this->tempArr;
111: }
112:
113: function resetTempArr()
114: {
115: unset($this->tempArr);
116: $this->tempArr = array();
117: }
118: }
119:
120:
121: class ThemeSetDateCreatedHandler extends XmlTagHandler
122: {
123:
124: function ThemeSetDateCreatedHandler()
125: {
126:
127: }
128:
129: function getName()
130: {
131: return 'dateCreated';
132: }
133:
134: function handleCharacterData(&$parser, &$data)
135: {
136: switch ($parser->getParentTag()) {
137: case 'themeset':
138: $parser->setThemeSetData('date', $data);
139: break;
140: default:
141: break;
142: }
143: }
144: }
145:
146: class ThemeSetAuthorHandler extends XmlTagHandler
147: {
148: function ThemeSetAuthorHandler()
149: {
150:
151: }
152:
153: function getName()
154: {
155: return 'author';
156: }
157:
158: function handleBeginElement(&$parser, &$attributes)
159: {
160: $parser->resetTempArr();
161: }
162:
163: function handleEndElement(&$parser)
164: {
165: $parser->setCreditsData($parser->getTempArr());
166: }
167: }
168:
169: class ThemeSetDescriptionHandler extends XmlTagHandler
170: {
171: function ThemeSetDescriptionHandler()
172: {
173:
174: }
175:
176: function getName()
177: {
178: return 'description';
179: }
180:
181: function handleCharacterData(&$parser, &$data)
182: {
183: switch ($parser->getParentTag()) {
184: case 'template':
185: $parser->setTempArr('description', $data);
186: break;
187: case 'image':
188: $parser->setTempArr('description', $data);
189: break;
190: default:
191: break;
192: }
193: }
194: }
195:
196: class ThemeSetGeneratorHandler extends XmlTagHandler
197: {
198: function ThemeSetGeneratorHandler()
199: {
200:
201: }
202:
203: function getName()
204: {
205: return 'generator';
206: }
207:
208: function handleCharacterData(&$parser, &$data)
209: {
210: switch ($parser->getParentTag()) {
211: case 'themeset':
212: $parser->setThemeSetData('generator', $data);
213: break;
214: default:
215: break;
216: }
217: }
218: }
219:
220: class ThemeSetNameHandler extends XmlTagHandler
221: {
222: function ThemeSetNameHandler()
223: {
224:
225: }
226:
227: function getName()
228: {
229: return 'name';
230: }
231:
232: function handleCharacterData(&$parser, &$data)
233: {
234: switch ($parser->getParentTag()) {
235: case 'themeset':
236: $parser->setThemeSetData('name', $data);
237: break;
238: case 'author':
239: $parser->setTempArr('name', $data);
240: break;
241: default:
242: break;
243: }
244: }
245: }
246:
247: class ThemeSetEmailHandler extends XmlTagHandler
248: {
249: function ThemeSetEmailHandler()
250: {
251:
252: }
253:
254: function getName()
255: {
256: return 'email';
257: }
258:
259: function handleCharacterData(&$parser, &$data)
260: {
261: switch ($parser->getParentTag()) {
262: case 'author':
263: $parser->setTempArr('email', $data);
264: break;
265: default:
266: break;
267: }
268: }
269: }
270:
271: class ThemeSetLinkHandler extends XmlTagHandler
272: {
273: function ThemeSetLinkHandler()
274: {
275:
276: }
277:
278: function getName()
279: {
280: return 'link';
281: }
282:
283: function handleCharacterData(&$parser, &$data)
284: {
285: switch ($parser->getParentTag()) {
286: case 'author':
287: $parser->setTempArr('link', $data);
288: break;
289: default:
290: break;
291: }
292: }
293: }
294:
295: class ThemeSetTemplateHandler extends XmlTagHandler
296: {
297: function ThemeSetTemplateHandler()
298: {
299:
300: }
301:
302: function getName()
303: {
304: return 'template';
305: }
306:
307: function handleBeginElement(&$parser, &$attributes)
308: {
309: $parser->resetTempArr();
310: $parser->setTempArr('name', $attributes['name']);
311: }
312:
313: function handleEndElement(&$parser)
314: {
315: $parser->setTemplatesData($parser->getTempArr());
316: }
317: }
318:
319: class ThemeSetImageHandler extends XmlTagHandler
320: {
321: function ThemeSetImageHandler()
322: {
323:
324: }
325:
326: function getName()
327: {
328: return 'image';
329: }
330:
331: function handleBeginElement(&$parser, &$attributes)
332: {
333: $parser->resetTempArr();
334: $parser->setTempArr('name', $attributes[0]);
335: }
336:
337: function handleEndElement(&$parser)
338: {
339: $parser->setImagesData($parser->getTempArr());
340: }
341: }
342:
343: class ThemeSetModuleHandler extends XmlTagHandler
344: {
345: function ThemeSetModuleHandler()
346: {
347:
348: }
349:
350: function getName()
351: {
352: return 'module';
353: }
354:
355: function handleCharacterData(&$parser, &$data)
356: {
357: switch ($parser->getParentTag()) {
358: case 'template':
359: case 'image':
360: $parser->setTempArr('module', $data);
361: break;
362: default:
363: break;
364: }
365: }
366: }
367:
368: class ThemeSetFileTypeHandler extends XmlTagHandler
369: {
370: function ThemeSetFileTypeHandler()
371: {
372:
373: }
374:
375: function getName()
376: {
377: return 'fileType';
378: }
379:
380: function handleCharacterData(&$parser, &$data)
381: {
382: switch ($parser->getParentTag()) {
383: case 'template':
384: $parser->setTempArr('type', $data);
385: break;
386: default:
387: break;
388: }
389: }
390: }
391:
392: class ThemeSetTagHandler extends XmlTagHandler
393: {
394: function ThemeSetTagHandler()
395: {
396:
397: }
398:
399: function getName()
400: {
401: return 'tag';
402: }
403:
404: function handleCharacterData(&$parser, &$data)
405: {
406: switch ($parser->getParentTag()) {
407: case 'image':
408: $parser->setTempArr('tag', $data);
409: break;
410: default:
411: break;
412: }
413: }
414: }
415: ?>