Failed Conditions
Push — develop ( a6bb49...7a4cbd )
by Adrien
36:15
created

Meta::write()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 57

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 37
CRAP Score 4.0002

Importance

Changes 0
Metric Value
cc 4
nc 8
nop 1
dl 0
loc 57
ccs 37
cts 38
cp 0.9737
crap 4.0002
rs 8.9381
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 5
    public function write(Spreadsheet $spreadsheet = null)
20
    {
21 5
        if (!$spreadsheet) {
22 5
            $spreadsheet = $this->getParentWriter()->getSpreadsheet();
23
        }
24
25 5
        $objWriter = null;
26 5
        if ($this->getParentWriter()->getUseDiskCaching()) {
27
            $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
28
        } else {
29 5
            $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
30
        }
31
32
        // XML header
33 5
        $objWriter->startDocument('1.0', 'UTF-8');
34
35
        // Meta
36 5
        $objWriter->startElement('office:document-meta');
37
38 5
        $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
39 5
        $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
40 5
        $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
41 5
        $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
42 5
        $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
43 5
        $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
44 5
        $objWriter->writeAttribute('office:version', '1.2');
45
46 5
        $objWriter->startElement('office:meta');
47
48 5
        $objWriter->writeElement('meta:initial-creator', $spreadsheet->getProperties()->getCreator());
49 5
        $objWriter->writeElement('dc:creator', $spreadsheet->getProperties()->getCreator());
50 5
        $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
51 5
        $objWriter->writeElement('dc:date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
52 5
        $objWriter->writeElement('dc:title', $spreadsheet->getProperties()->getTitle());
53 5
        $objWriter->writeElement('dc:description', $spreadsheet->getProperties()->getDescription());
54 5
        $objWriter->writeElement('dc:subject', $spreadsheet->getProperties()->getSubject());
55 5
        $keywords = explode(' ', $spreadsheet->getProperties()->getKeywords());
56 5
        foreach ($keywords as $keyword) {
57 5
            $objWriter->writeElement('meta:keyword', $keyword);
58
        }
59
60
        //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/>
61 5
        $objWriter->startElement('meta:user-defined');
62 5
        $objWriter->writeAttribute('meta:name', 'Company');
63 5
        $objWriter->writeRaw($spreadsheet->getProperties()->getCompany());
64 5
        $objWriter->endElement();
65
66 5
        $objWriter->startElement('meta:user-defined');
67 5
        $objWriter->writeAttribute('meta:name', 'category');
68 5
        $objWriter->writeRaw($spreadsheet->getProperties()->getCategory());
69 5
        $objWriter->endElement();
70
71 5
        $objWriter->endElement();
72
73 5
        $objWriter->endElement();
74
75 5
        return $objWriter->getData();
76
    }
77
}
78