1: <?php
2:
3: 4: 5: 6: 7: 8: 9:
10: class DefaultInitNode implements IInitNode {
11:
12: 13: 14:
15: protected $doc;
16:
17: 18: 19:
20: public function __construct(VsWord $doc = NULL) {
21: $this->doc = $doc;
22: }
23:
24: 25: 26:
27: public function getVsWord() {
28: return $this->doc;
29: }
30:
31: 32: 33: 34: 35:
36: function initNode($tagName, $attributes) {
37:
38: switch (strtolower($tagName)) {
39: case 'img':
40:
41: if(!is_null($this->getVsWord()) && isset($attributes['src']) && @file_get_contents($attributes['src'], false, NULL, -1, 1) !== FALSE) {
42: $file = $attributes['src'];
43: $attach = $this->getVsWord()->getAttachImage($file);
44: $drawingNode = new DrawingNode();
45: $drawingNode->addImage($attach);
46: return $drawingNode;
47: }
48: break;
49: case 'p': case 'div':
50: return new PCompositeNode();
51: break;
52: case 'br':case 'hr':
53: return new BrNode();
54: break;
55: case 'span':
56: return new RCompositeNode();
57: break;
58: case 'i':
59: $r = new RCompositeNode();
60: $r->addTextStyle(new ItalicStyleNode());
61: return $r;
62: break;
63: case 'b': case 'strong': case 'h4': case 'h5':
64: $r = new RCompositeNode();
65: $r->addTextStyle(new BoldStyleNode());
66: return $r;
67: break;
68: case 'u':
69: $r = new RCompositeNode();
70: $r->addTextStyle(new UnderlineStyleNode());
71: return $r;
72: break;
73: case 'h1':
74: $p = new PCompositeNode();
75: $r = new RCompositeNode();
76: $p->addNode($r);
77: $r->addTextStyle(new BoldStyleNode());
78: $r->addTextStyle(new FontSizeStyleNode(36));
79: return $p;
80: break;
81: case 'h2':
82: $p = new PCompositeNode();
83: $r = new RCompositeNode();
84: $p->addNode($r);
85: $r->addTextStyle(new BoldStyleNode());
86: $r->addTextStyle(new FontSizeStyleNode(26));
87: return $p;
88: break;
89: case 'h3':
90: $p = new PCompositeNode();
91: $r = new RCompositeNode();
92: $p->addNode($r);
93: $r->addTextStyle(new BoldStyleNode());
94: $r->addTextStyle(new FontSizeStyleNode(18));
95: return $p;
96: break;
97: case 'table':
98: return new TableCompositeNode();
99: break;
100: case 'tr':
101: return new TableRowCompositeNode();
102: break;
103: case 'td':case 'th':
104: $td = new TableColCompositeNode();
105: $td->addNode( new PCompositeNode());
106: return $td;
107: break;
108: case 'ul':case 'ol':
109: return new ListCompositeNode();
110: break;
111: case 'li':
112: return new ListItemCompositeNode();
113: break;
114: }
115: return new EmptyCompositeNode();
116: }
117: }