Completed
Push — master ( 7e068f...d722f0 )
by Dan Michael O.
10:27
created

Record::make()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 10
rs 9.4285
cc 1
eloc 6
nc 1
nop 4
1
<?php namespace Scriptotek\Sru;
2
3
use Danmichaelo\QuiteSimpleXMLElement\QuiteSimpleXMLElement;
4
5
/**
6
 * Single record from a SRU response
7
 */
8
class Record
9
{
10
    /** @var int */
11
    public $position;
12
13
    /** @var string */
14
    public $packing;
15
16
    /** @var string */
17
    public $schema;
18
19
    /** @var QuiteSimpleXMLElement */
20
    public $data;
21
22
    static $recordTpl = '<srw:record xmlns:srw="http://www.loc.gov/zing/srw/">
23
            <srw:recordSchema>{{recordSchema}}</srw:recordSchema>
24
            <srw:recordPacking>{{recordPacking}}</srw:recordPacking>
25
            <srw:recordPosition>{{position}}</srw:recordPosition>
26
            <srw:recordData>{{data}}</srw:recordData>
27
          </srw:record>';
28
29
    /**
30
     * Create a new record
31
     * @param QuiteSimpleXMLElement $doc
32
     */
33
    public function __construct(QuiteSimpleXMLElement $doc)
34
    {
35
        $this->position = intval($doc->text('./srw:recordPosition'));
36
        $this->packing = $doc->text('./srw:recordPacking');
37
        $this->schema = $doc->text('./srw:recordSchema');
38
        $this->data = $doc->first('./srw:recordData');
39
    }
40
41
    /**
42
     * @param int $position
43
     * @param string|QuiteSimpleXMLElement $data
44
     * @param string $recordSchema
45
     * @param string $recordPacking
46
     * @return Record
47
     */
48
    public static function make($position, $data, $recordSchema='marcxchange', $recordPacking='xml')
49
    {
50
        $record = str_replace(
51
            array('{{position}}', '{{data}}', '{{recordSchema}}', '{{recordPacking}}'),
52
            array($position, $data, $recordSchema, $recordPacking),
53
            self::$recordTpl
54
        );
55
56
        return new Record(new QuiteSimpleXMLElement($record));
57
    }
58
}
59