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