Hyperlink   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 4
Bugs 1 Features 1
Metric Value
wmc 4
c 4
b 1
f 1
lcom 1
cbo 2
dl 0
loc 53
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getData() 0 12 1
A getOptions() 0 8 1
A getCommonData() 0 9 1
A getTextMarkData() 0 7 1
1
<?php
2
namespace Xls\Record;
3
4
use Xls\StringUtils;
5
use Xls\Range;
6
7
class Hyperlink extends AbstractRecord
8
{
9
    const NAME = 'HYPERLINK';
10
    const ID = 0x01B8;
11
    const STDLINK_GUID = "D0C9EA79F9BACE118C8200AA004BA90B";
12
    const MONIKER_GUID = "E0C9EA79F9BACE118C8200AA004BA90B";
13
14
    /**
15
     * @param Range $range
16
     * @param $url
17
     *
18
     * @return string
19
     */
20
    public function getData(Range $range, $url)
21
    {
22
        $url = StringUtils::toNullTerminatedWchar($url);
23
24
        $options = $this->getOptions($url);
25
        $data = $this->getCommonData($range, $options);
26
        $data .= pack("H*", static::MONIKER_GUID);
27
        $data .= pack("V", strlen($url));
28
        $data .= $url;
29
30
        return $this->getFullRecord($data);
31
    }
32
33
    protected function getOptions($url)
34
    {
35
        $options = 0x00;
36
        $options |= 1 << 0; //File link or URL
37
        $options |= 1 << 1; //Absolute path or URL
38
39
        return $options;
40
    }
41
42
    protected function getCommonData(Range $range, $options)
43
    {
44
        $data = $this->getSubRecord('Range', array(array($range), false));
45
        $data .= pack("H*", static::STDLINK_GUID);
46
        $data .= pack("H*", "02000000");
47
        $data .= pack("V", $options);
48
49
        return $data;
50
    }
51
52
    protected function getTextMarkData($textMark)
53
    {
54
        $data = pack("V", floor(strlen($textMark) / 2));
55
        $data .= $textMark;
56
57
        return $data;
58
    }
59
}
60