RelsRibbon.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. class RelsRibbon extends WriterPart
  6. {
  7. /**
  8. * Write relationships for additional objects of custom UI (ribbon).
  9. *
  10. * @param Spreadsheet $spreadsheet
  11. *
  12. * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
  13. *
  14. * @return string XML Output
  15. */
  16. public function writeRibbonRelationships(Spreadsheet $spreadsheet)
  17. {
  18. // Create XML writer
  19. $objWriter = null;
  20. if ($this->getParentWriter()->getUseDiskCaching()) {
  21. $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  22. } else {
  23. $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
  24. }
  25. // XML header
  26. $objWriter->startDocument('1.0', 'UTF-8', 'yes');
  27. // Relationships
  28. $objWriter->startElement('Relationships');
  29. $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
  30. $localRels = $spreadsheet->getRibbonBinObjects('names');
  31. if (is_array($localRels)) {
  32. foreach ($localRels as $aId => $aTarget) {
  33. $objWriter->startElement('Relationship');
  34. $objWriter->writeAttribute('Id', $aId);
  35. $objWriter->writeAttribute('Type', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image');
  36. $objWriter->writeAttribute('Target', $aTarget);
  37. $objWriter->endElement();
  38. }
  39. }
  40. $objWriter->endElement();
  41. return $objWriter->getData();
  42. }
  43. }