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: class PHPWord_Section_Table_Cell
32: {
33:
34: 35: 36: 37: 38:
39: private $_width = null;
40:
41: 42: 43: 44: 45:
46: private $_style;
47:
48: 49: 50: 51: 52:
53: private $_elementCollection = array();
54:
55: 56: 57: 58: 59:
60: private $_insideOf;
61:
62: 63: 64: 65: 66:
67: private $_pCount;
68:
69:
70: 71: 72: 73: 74: 75: 76: 77:
78: public function __construct($insideOf, $pCount, $width = null, $style = null)
79: {
80: $this->_insideOf = $insideOf;
81: $this->_pCount = $pCount;
82: $this->_width = $width;
83:
84: if (!is_null($style)) {
85: if (is_array($style)) {
86: $this->_style = new PHPWord_Style_Cell();
87:
88: foreach ($style as $key => $value) {
89: if (substr($key, 0, 1) != '_') {
90: $key = '_' . $key;
91: }
92: $this->_style->setStyleValue($key, $value);
93: }
94: } else {
95: $this->_style = $style;
96: }
97: }
98: }
99:
100: 101: 102: 103: 104: 105: 106:
107: public function addText($text, $styleFont = null, $styleParagraph = null)
108: {
109: if (!PHPWord_Shared_String::IsUTF8($text)) {
110: $text = utf8_encode($text);
111: }
112: $text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
113: $this->_elementCollection[] = $text;
114: return $text;
115: }
116:
117: 118: 119: 120: 121: 122: 123: 124:
125: public function addLink($linkSrc, $linkName = null, $style = null)
126: {
127: if ($this->_insideOf == 'section') {
128: if (!PHPWord_Shared_String::IsUTF8($linkSrc)) {
129: $linkSrc = utf8_encode($linkSrc);
130: }
131: if (!is_null($linkName)) {
132: if (!PHPWord_Shared_String::IsUTF8($linkName)) {
133: $linkName = utf8_encode($linkName);
134: }
135: }
136:
137: $link = new PHPWord_Section_Link($linkSrc, $linkName, $style);
138: $rID = PHPWord_Media::addSectionLinkElement($linkSrc);
139: $link->setRelationId($rID);
140:
141: $this->_elementCollection[] = $link;
142: return $link;
143: } else {
144: trigger_error('Unsupported Link header / footer reference');
145: return false;
146: }
147: }
148:
149: 150: 151: 152: 153:
154: public function addTextBreak()
155: {
156: $this->_elementCollection[] = new PHPWord_Section_TextBreak();
157: }
158:
159: 160: 161: 162: 163: 164: 165: 166: 167:
168: public function addListItem($text, $depth = 0, $styleText = null, $styleList = null)
169: {
170: if (!PHPWord_Shared_String::IsUTF8($text)) {
171: $text = utf8_encode($text);
172: }
173: $listItem = new PHPWord_Section_ListItem($text, $depth, $styleText, $styleList);
174: $this->_elementCollection[] = $listItem;
175: return $listItem;
176: }
177:
178: 179: 180: 181: 182: 183: 184:
185: public function addImage($src, $style = null)
186: {
187: $image = new PHPWord_Section_Image($src, $style);
188:
189: if (!is_null($image->getSource())) {
190: if ($this->_insideOf == 'section') {
191: $rID = PHPWord_Media::addSectionMediaElement($src, 'image');
192: } elseif ($this->_insideOf == 'header') {
193: $rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $src);
194: } elseif ($this->_insideOf == 'footer') {
195: $rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $src);
196: }
197: $image->setRelationId($rID);
198:
199: $this->_elementCollection[] = $image;
200: return $image;
201: } else {
202: trigger_error('Source does not exist or unsupported image type.');
203: }
204: }
205:
206: 207: 208: 209: 210: 211: 212:
213: public function addMemoryImage($link, $style = null)
214: {
215: $memoryImage = new PHPWord_Section_MemoryImage($link, $style);
216: if (!is_null($memoryImage->getSource())) {
217: if ($this->_insideOf == 'section') {
218: $rID = PHPWord_Media::addSectionMediaElement($link, 'image', $memoryImage);
219: } elseif ($this->_insideOf == 'header') {
220: $rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $link, $memoryImage);
221: } elseif ($this->_insideOf == 'footer') {
222: $rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $link, $memoryImage);
223: }
224: $memoryImage->setRelationId($rID);
225:
226: $this->_elementCollection[] = $memoryImage;
227: return $memoryImage;
228: } else {
229: trigger_error('Unsupported image type.');
230: }
231: }
232:
233: 234: 235: 236: 237: 238: 239:
240: public function addObject($src, $style = null)
241: {
242: $object = new PHPWord_Section_Object($src, $style);
243:
244: if (!is_null($object->getSource())) {
245: $inf = pathinfo($src);
246: $ext = $inf['extension'];
247: if (strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') {
248: $ext = substr($ext, 0, -1);
249: }
250:
251: $iconSrc = PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/';
252: if (!file_exists($iconSrc . '_' . $ext . '.png')) {
253: $iconSrc = $iconSrc . '_default.png';
254: } else {
255: $iconSrc .= '_' . $ext . '.png';
256: }
257:
258: $rIDimg = PHPWord_Media::addSectionMediaElement($iconSrc, 'image');
259: $data = PHPWord_Media::addSectionMediaElement($src, 'oleObject');
260: $rID = $data[0];
261: $objectId = $data[1];
262:
263: $object->setRelationId($rID);
264: $object->setObjectId($objectId);
265: $object->setImageRelationId($rIDimg);
266:
267: $this->_elementCollection[] = $object;
268: return $object;
269: } else {
270: trigger_error('Source does not exist or unsupported object type.');
271: }
272: }
273:
274: 275: 276: 277: 278: 279: 280: 281:
282: public function addPreserveText($text, $styleFont = null, $styleParagraph = null)
283: {
284: if ($this->_insideOf == 'footer' || $this->_insideOf == 'header') {
285: if (!PHPWord_Shared_String::IsUTF8($text)) {
286: $text = utf8_encode($text);
287: }
288: $ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
289: $this->_elementCollection[] = $ptext;
290: return $ptext;
291: } else {
292: trigger_error('addPreserveText only supported in footer/header.');
293: }
294: }
295:
296: 297: 298: 299: 300:
301: public function createTextRun($styleParagraph = null)
302: {
303: $textRun = new PHPWord_Section_TextRun($styleParagraph);
304: $this->_elementCollection[] = $textRun;
305: return $textRun;
306: }
307:
308: 309: 310: 311: 312:
313: public function getElements()
314: {
315: return $this->_elementCollection;
316: }
317:
318: 319: 320: 321: 322:
323: public function getStyle()
324: {
325: return $this->_style;
326: }
327:
328: 329: 330: 331: 332:
333: public function getWidth()
334: {
335: return $this->_width;
336: }
337: }