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