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_Media
32: {
33:
34: 35: 36: 37: 38:
39: private static $_sectionMedia = array('images' => array(),
40: 'embeddings' => array(),
41: 'links' => array());
42:
43: 44: 45: 46: 47:
48: private static = array();
49:
50: 51: 52: 53: 54:
55: private static = array();
56:
57: 58: 59: 60: 61:
62: private static $_objectId = 1325353440;
63:
64:
65: 66: 67: 68: 69: 70: 71:
72: public static function addSectionMediaElement($src, $type, PHPWord_Section_MemoryImage $memoryImage = null)
73: {
74: $mediaId = md5($src);
75: $key = ($type == 'image') ? 'images' : 'embeddings';
76:
77: if (!array_key_exists($mediaId, self::$_sectionMedia[$key])) {
78: $cImg = self::countSectionMediaElements('images');
79: $cObj = self::countSectionMediaElements('embeddings');
80: $rID = self::countSectionMediaElements() + 7;
81:
82: $media = array();
83:
84: if ($type == 'image') {
85: $cImg++;
86: $inf = pathinfo($src);
87: $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php' && $type == 'image') ? true : false;
88:
89: if ($isMemImage) {
90: $ext = $memoryImage->getImageExtension();
91: $media['isMemImage'] = true;
92: $media['createfunction'] = $memoryImage->getImageCreateFunction();
93: $media['imagefunction'] = $memoryImage->getImageFunction();
94: } else {
95: $ext = $inf['extension'];
96: if ($ext == 'jpeg') {
97: $ext = 'jpg';
98: }
99: }
100:
101: $folder = 'media';
102: $file = $type . $cImg . '.' . strtolower($ext);
103: } elseif ($type == 'oleObject') {
104: $cObj++;
105: $folder = 'embedding';
106: $file = $type . $cObj . '.bin';
107: }
108:
109: $media['source'] = $src;
110: $media['target'] = "$folder/section_$file";
111: $media['type'] = $type;
112: $media['rID'] = $rID;
113:
114: self::$_sectionMedia[$key][$mediaId] = $media;
115:
116: if ($type == 'oleObject') {
117: return array($rID, ++self::$_objectId);
118: } else {
119: return $rID;
120: }
121: } else {
122: if ($type == 'oleObject') {
123: $rID = self::$_sectionMedia[$key][$mediaId]['rID'];
124: return array($rID, ++self::$_objectId);
125: } else {
126: return self::$_sectionMedia[$key][$mediaId]['rID'];
127: }
128: }
129: }
130:
131: 132: 133: 134: 135: 136: 137: 138:
139: public static function addSectionLinkElement($linkSrc)
140: {
141: $rID = self::countSectionMediaElements() + 7;
142:
143: $link = array();
144: $link['target'] = $linkSrc;
145: $link['rID'] = $rID;
146: $link['type'] = 'hyperlink';
147:
148: self::$_sectionMedia['links'][] = $link;
149:
150: return $rID;
151: }
152:
153: 154: 155: 156: 157: 158:
159: public static function getSectionMediaElements($key = null)
160: {
161: if (!is_null($key)) {
162: return self::$_sectionMedia[$key];
163: } else {
164: $arrImages = self::$_sectionMedia['images'];
165: $arrObjects = self::$_sectionMedia['embeddings'];
166: $arrLinks = self::$_sectionMedia['links'];
167: return array_merge($arrImages, $arrObjects, $arrLinks);
168: }
169: }
170:
171: 172: 173: 174: 175: 176:
177: public static function countSectionMediaElements($key = null)
178: {
179: if (!is_null($key)) {
180: return count(self::$_sectionMedia[$key]);
181: } else {
182: $cImages = count(self::$_sectionMedia['images']);
183: $cObjects = count(self::$_sectionMedia['embeddings']);
184: $cLinks = count(self::$_sectionMedia['links']);
185: return ($cImages + $cObjects + $cLinks);
186: }
187: }
188:
189: 190: 191: 192: 193: 194: 195:
196: public static function ($headerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null)
197: {
198: $mediaId = md5($src);
199: $key = 'header' . $headerCount;
200:
201: if (!array_key_exists($key, self::$_headerMedia)) {
202: self::$_headerMedia[$key] = array();
203: }
204:
205: if (!array_key_exists($mediaId, self::$_headerMedia[$key])) {
206: $cImg = self::countHeaderMediaElements($key);
207: $rID = $cImg + 1;
208:
209: $cImg++;
210: $inf = pathinfo($src);
211: $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false;
212:
213: $media = array();
214: if ($isMemImage) {
215: $ext = $memoryImage->getImageExtension();
216: $media['isMemImage'] = true;
217: $media['createfunction'] = $memoryImage->getImageCreateFunction();
218: $media['imagefunction'] = $memoryImage->getImageFunction();
219: } else {
220: $ext = $inf['extension'];
221: if ($ext == 'jpeg') {
222: $ext = 'jpg';
223: }
224: }
225: $file = 'image' . $cImg . '.' . strtolower($ext);
226:
227: $media['source'] = $src;
228: $media['target'] = 'media/' . $key . '_' . $file;
229: $media['type'] = 'image';
230: $media['rID'] = $rID;
231:
232: self::$_headerMedia[$key][$mediaId] = $media;
233:
234: return $rID;
235: } else {
236: return self::$_headerMedia[$key][$mediaId]['rID'];
237: }
238: }
239:
240: 241: 242: 243: 244: 245:
246: public static function ($key)
247: {
248: return count(self::$_headerMedia[$key]);
249: }
250:
251: 252: 253: 254: 255:
256: public static function ()
257: {
258: return self::$_headerMedia;
259: }
260:
261: 262: 263: 264: 265: 266: 267:
268: public static function ($footerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null)
269: {
270: $mediaId = md5($src);
271: $key = 'footer' . $footerCount;
272:
273: if (!array_key_exists($key, self::$_footerMedia)) {
274: self::$_footerMedia[$key] = array();
275: }
276:
277: if (!array_key_exists($mediaId, self::$_footerMedia[$key])) {
278: $cImg = self::countFooterMediaElements($key);
279: $rID = $cImg + 1;
280:
281: $cImg++;
282: $inf = pathinfo($src);
283: $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false;
284:
285: $media = array();
286: if ($isMemImage) {
287: $ext = $memoryImage->getImageExtension();
288: $media['isMemImage'] = true;
289: $media['createfunction'] = $memoryImage->getImageCreateFunction();
290: $media['imagefunction'] = $memoryImage->getImageFunction();
291: } else {
292: $ext = $inf['extension'];
293: if ($ext == 'jpeg') {
294: $ext = 'jpg';
295: }
296: }
297: $file = 'image' . $cImg . '.' . strtolower($ext);
298:
299: $media['source'] = $src;
300: $media['target'] = 'media/' . $key . '_' . $file;
301: $media['type'] = 'image';
302: $media['rID'] = $rID;
303:
304: self::$_footerMedia[$key][$mediaId] = $media;
305:
306: return $rID;
307: } else {
308: return self::$_footerMedia[$key][$mediaId]['rID'];
309: }
310: }
311:
312: 313: 314: 315: 316: 317:
318: public static function ($key)
319: {
320: return count(self::$_footerMedia[$key]);
321: }
322:
323: 324: 325: 326: 327:
328: public static function ()
329: {
330: return self::$_footerMedia;
331: }
332: }
333:
334: