1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace ManiaLive\Gui;
13:
14: use ManiaLib\Gui\Manialink;
15:
16: 17: 18: 19: 20:
21: abstract class Manialinks
22: {
23: public static $domDocument;
24: public static $parentNodes;
25:
26: final public static function load()
27: {
28: self::$domDocument = new \DOMDocument;
29: self::$parentNodes = array();
30:
31: $manialink = self::$domDocument->createElement('manialinks');
32: self::$domDocument->appendChild($manialink);
33: self::$parentNodes[] = $manialink;
34: }
35:
36: final public static function getXml()
37: {
38: return self::$domDocument->saveXML(self::$domDocument);
39: }
40:
41: final public static function beginManialink($id=null, $version=1)
42: {
43:
44: $manialink = self::$domDocument->createElement('manialink');
45:
46: if($id)
47: $manialink->setAttribute('id', $id);
48: if($version)
49: $manialink->setAttribute('version', $version);
50:
51: end(self::$parentNodes)->appendChild($manialink);
52:
53:
54: self::$parentNodes[] = $manialink;
55:
56:
57: Manialink::$domDocument = self::$domDocument;
58: Manialink::$parentNodes = self::$parentNodes;
59: Manialink::$parentLayouts = array();
60: }
61:
62: final public static function endManialink()
63: {
64: if(!end(self::$parentNodes)->hasChildNodes())
65: {
66: end(self::$parentNodes)->nodeValue = ' ';
67: }
68: array_pop(self::$parentNodes);
69:
70: Manialink::$domDocument = null;
71: Manialink::$parentNodes = null;
72: Manialink::$parentLayouts = null;
73: }
74:
75: final public static function beginCustomUi()
76: {
77: $customUi = self::$domDocument->createElement('custom_ui');
78: end(self::$parentNodes)->appendChild($customUi);
79: self::$parentNodes[] = $customUi;
80: }
81:
82: final public static function endCustomUi()
83: {
84: array_pop(self::$parentNodes);
85: }
86:
87: final public static function setVisibility($parameter, $visibility)
88: {
89: $parameterNode = self::$domDocument->createElement($parameter);
90: $parameterNode->setAttribute('visible', $visibility ? 'true' : 'false');
91: end(self::$parentNodes)->appendChild($parameterNode);
92: }
93:
94: static function appendXML($XML)
95: {
96: $doc = new DOMDocument();
97: $doc->loadXML($XML);
98: $node = self::$domDocument->importNode($doc->firstChild, true);
99: end(self::$parentNodes)->appendChild($node);
100: }
101: }
102: ?>