aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/utils/ReferenceLinkDB.php
blob: 61faef0575dcdd75faea3e003c01617e7f01bf03 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
/**
 * Populates a reference datastore to test LinkDB
 */
class ReferenceLinkDB
{
    private $_links = array();
    private $_publicCount = 0;
    private $_privateCount = 0;

    /**
     * Populates the test DB with reference data
     */
    function __construct()
    {
        $this->addLink(
            'Free as in Freedom 2.0 @website',
            'https://static.fsf.org/nosvn/faif-2.0.pdf',
            'Richard Stallman and the Free Software Revolution. Read this.',
            0,
            '20150310_114633',
            'free gnu software stallman -exclude stuff'
        );

        $this->addLink(
            'Link title: @website',
            'local',
            'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.',
            0,
            '20150310_114651',
            'stuff'
        );

        $this->addLink(
            'MediaGoblin',
            'http://mediagoblin.org/',
            'A free software media publishing platform',
            0,
            '20130614_184135',
            'gnu media web .hidden'
        );

        $this->addLink(
            'w3c-markup-validator',
            'https://dvcs.w3.org/hg/markup-validator/summary',
            'Mercurial repository for the W3C Validator',
            1,
            '20141125_084734',
            'css html w3c web Mercurial'
        );

        $this->addLink(
            'UserFriendly - Web Designer',
            'http://ars.userfriendly.org/cartoons/?id=20121206',
            'Naming conventions...',
            0,
            '20121206_142300',
            'dev cartoon web'
        );

        $this->addLink(
            'UserFriendly - Samba',
            'http://ars.userfriendly.org/cartoons/?id=20010306',
            'Tropical printing',
            0,
            '20121206_172539',
            'samba cartoon web'
        );

        $this->addLink(
            'Geek and Poke',
            'http://geek-and-poke.com/',
            '',
            1,
            '20121206_182539',
            'dev cartoon'
        );
    }

    /**
     * Adds a new link
     */
    protected function addLink($title, $url, $description, $private, $date, $tags)
    {
        $link = array(
            'title' => $title,
            'url' => $url,
            'description' => $description,
            'private' => $private,
            'linkdate' => $date,
            'tags' => $tags,
        );
        $this->_links[$date] = $link;

        if ($private) {
            $this->_privateCount++;
            return;
        }
        $this->_publicCount++;
    }

    /**
     * Writes data to the datastore
     */
    public function write($filename)
    {
        file_put_contents(
            $filename,
            '<?php /* '.base64_encode(gzdeflate(serialize($this->_links))).' */ ?>'
        );
    }

    /**
     * Returns the number of links in the reference data
     */
    public function countLinks()
    {
        return $this->_publicCount + $this->_privateCount;
    }

    /**
     * Returns the number of public links in the reference data
     */
    public function countPublicLinks()
    {
        return $this->_publicCount;
    }

    /**
     * Returns the number of private links in the reference data
     */
    public function countPrivateLinks()
    {
        return $this->_privateCount;
    }

    public function getLinks()
    {
        return $this->_links;
    }
}