1: <?php
2: /**
3: * PHPWord
4: *
5: * Copyright (c) 2013 PHPWord
6: *
7: * This library is free software; you can redistribute it and/or
8: * modify it under the terms of the GNU Lesser General Public
9: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20: *
21: * @category PHPWord
22: * @package PHPWord
23: * @copyright Copyright (c) 2013 PHPWord
24: * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25: * @version 0.7.0
26: */
27:
28: /**
29: * Class PHPWord_Writer_Word2007_Rels
30: */
31: class PHPWord_Writer_Word2007_Rels extends PHPWord_Writer_Word2007_WriterPart
32: {
33:
34: public function writeRelationships(PHPWord $pPHPWord = null)
35: {
36: // Create XML writer
37: $objWriter = null;
38: if ($this->getParentWriter()->getUseDiskCaching()) {
39: $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
40: } else {
41: $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
42: }
43:
44: // XML header
45: $objWriter->startDocument('1.0', 'UTF-8', 'yes');
46:
47: // Relationships
48: $objWriter->startElement('Relationships');
49: $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
50:
51: $relationId = 1;
52:
53: // Relationship word/document.xml
54: $this->_writeRelationship(
55: $objWriter,
56: $relationId,
57: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
58: 'word/document.xml'
59: );
60:
61: // Relationship docProps/core.xml
62: $this->_writeRelationship(
63: $objWriter,
64: ++$relationId,
65: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
66: 'docProps/core.xml'
67: );
68:
69: // Relationship docProps/app.xml
70: $this->_writeRelationship(
71: $objWriter,
72: ++$relationId,
73: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
74: 'docProps/app.xml'
75: );
76:
77: $objWriter->endElement();
78:
79: // Return
80: return $objWriter->getData();
81: }
82:
83: /**
84: * Write Override content type
85: *
86: * @param PHPWord_Shared_XMLWriter $objWriter XML Writer
87: * @param int $pId Relationship ID. rId will be prepended!
88: * @param string $pType Relationship type
89: * @param string $pTarget Relationship target
90: * @param string $pTargetMode Relationship target mode
91: * @throws Exception
92: */
93: private function _writeRelationship(PHPWord_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
94: {
95: if ($pType != '' && $pTarget != '') {
96: if (strpos($pId, 'rId') === false) {
97: $pId = 'rId' . $pId;
98: }
99:
100: // Write relationship
101: $objWriter->startElement('Relationship');
102: $objWriter->writeAttribute('Id', $pId);
103: $objWriter->writeAttribute('Type', $pType);
104: $objWriter->writeAttribute('Target', $pTarget);
105:
106: if ($pTargetMode != '') {
107: $objWriter->writeAttribute('TargetMode', $pTargetMode);
108: }
109:
110: $objWriter->endElement();
111: } else {
112: throw new Exception("Invalid parameters passed.");
113: }
114: }
115: }
116: