Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 39 and 311] [Versions 39 and 400] [Versions 39 and 401] [Versions 39 and 402] [Versions 39 and 403]

   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Writer\Ods;
   4  
   5  use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
   6  use PhpOffice\PhpSpreadsheet\Spreadsheet;
   7  
   8  class Meta extends WriterPart
   9  {
  10      /**
  11       * Write meta.xml to XML format.
  12       *
  13       * @param Spreadsheet $spreadsheet
  14       *
  15       * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
  16       *
  17       * @return string XML Output
  18       */
  19      public function write(Spreadsheet $spreadsheet = null)
  20      {
  21          if (!$spreadsheet) {
  22              $spreadsheet = $this->getParentWriter()->getSpreadsheet();
  23          }
  24  
  25          $objWriter = null;
  26          if ($this->getParentWriter()->getUseDiskCaching()) {
  27              $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  28          } else {
  29              $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
  30          }
  31  
  32          // XML header
  33          $objWriter->startDocument('1.0', 'UTF-8');
  34  
  35          // Meta
  36          $objWriter->startElement('office:document-meta');
  37  
  38          $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
  39          $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
  40          $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
  41          $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
  42          $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
  43          $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
  44          $objWriter->writeAttribute('office:version', '1.2');
  45  
  46          $objWriter->startElement('office:meta');
  47  
  48          $objWriter->writeElement('meta:initial-creator', $spreadsheet->getProperties()->getCreator());
  49          $objWriter->writeElement('dc:creator', $spreadsheet->getProperties()->getCreator());
  50          $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
  51          $objWriter->writeElement('dc:date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
  52          $objWriter->writeElement('dc:title', $spreadsheet->getProperties()->getTitle());
  53          $objWriter->writeElement('dc:description', $spreadsheet->getProperties()->getDescription());
  54          $objWriter->writeElement('dc:subject', $spreadsheet->getProperties()->getSubject());
  55          $keywords = explode(' ', $spreadsheet->getProperties()->getKeywords());
  56          foreach ($keywords as $keyword) {
  57              $objWriter->writeElement('meta:keyword', $keyword);
  58          }
  59  
  60          //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/>
  61          $objWriter->startElement('meta:user-defined');
  62          $objWriter->writeAttribute('meta:name', 'Company');
  63          $objWriter->writeRaw($spreadsheet->getProperties()->getCompany());
  64          $objWriter->endElement();
  65  
  66          $objWriter->startElement('meta:user-defined');
  67          $objWriter->writeAttribute('meta:name', 'category');
  68          $objWriter->writeRaw($spreadsheet->getProperties()->getCategory());
  69          $objWriter->endElement();
  70  
  71          $objWriter->endElement();
  72  
  73          $objWriter->endElement();
  74  
  75          return $objWriter->getData();
  76      }
  77  }