/** * Write relationships * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param null|array $xmlRels * @param null|array $mediaRels * @param integer $relId */ private function writeRels(XMLWriter $xmlWriter, $xmlRels = null, $mediaRels = null, $relId = 1) { $xmlWriter->startDocument('1.0', 'UTF-8', 'yes'); $xmlWriter->startElement('Relationships'); $xmlWriter->writeAttribute('xmlns', self::RELS_BASE . 'package/2006/relationships'); // XML files relationships if (is_array($xmlRels)) { foreach ($xmlRels as $target => $type) { $this->writeRel($xmlWriter, $relId++, $type, $target); } } // Media relationships if (!is_null($mediaRels) && is_array($mediaRels)) { $mapping = array('image' => 'image', 'object' => 'oleObject', 'link' => 'hyperlink'); $targetPaths = array('image' => 'media/', 'object' => 'embeddings/'); foreach ($mediaRels as $mediaRel) { $mediaType = $mediaRel['type']; $type = array_key_exists($mediaType, $mapping) ? $mapping[$mediaType] : $mediaType; $target = array_key_exists($mediaType, $targetPaths) ? $targetPaths[$mediaType] : ''; $target .= $mediaRel['target']; $targetMode = $type == 'hyperlink' ? 'External' : ''; $this->writeRel($xmlWriter, $relId++, "officeDocument/2006/relationships/{$type}", $target, $targetMode); } } $xmlWriter->endElement(); // Relationships }
/** * Write relationships. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param array $xmlRels * @param array $mediaRels * @param int $relId * @return void */ protected function writeRels(XMLWriter $xmlWriter, $xmlRels = array(), $mediaRels = array(), $relId = 1) { $xmlWriter->startDocument('1.0', 'UTF-8', 'yes'); $xmlWriter->startElement('Relationships'); $xmlWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); // XML files relationships foreach ($xmlRels as $target => $type) { $this->writeRel($xmlWriter, $relId++, $type, $target); } // Media relationships foreach ($mediaRels as $mediaRel) { $this->writeMediaRel($xmlWriter, $relId++, $mediaRel); } $xmlWriter->endElement(); // Relationships }