Passed
Pull Request — master (#32)
by
unknown
02:59 queued 01:02
created

ResourceLocatorField::setSiteName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
namespace SilverStripe\CKANRegistry\Forms;
3
4
use SilverStripe\Forms\FormField;
5
6
class ResourceLocatorField extends FormField
7
{
8
    /**
9
     * The default CKAN endpoint to be used in a default isn't provided on construction
10
     * @see ResourceLocatorField::$defaultEndpoint
11
     *
12
     * @config
13
     * @var string
14
     */
15
    private static $default_endpoint = 'https://catalogue.data.govt.nz/';
0 ignored issues
show
introduced by
The private property $default_endpoint is not used, and could be removed.
Loading history...
16
17
    /**
18
     * The default CKAN endpoint to be used in this field. This will allow consumers of the field to only provide
19
     * package or dataset IDs and still work. If not set the configured default will instead be used.
20
     *
21
     * @var string|null
22
     */
23
    protected $defaultEndpoint;
24
25
    /**
26
     * Set a site name that can be used to refer to the CKAN endpoint. By default this will be "a CKAN website".
27
     *
28
     * @var string|null
29
     */
30
    protected $siteName = null;
31
32
    /**
33
     * @param string $name
34
     * @param string $title
35
     * @param string $value
36
     * @param string $defaultEndpoint
37
     */
38
    public function __construct($name, $title = null, $value = null, $defaultEndpoint = null)
39
    {
40
        parent::__construct($name, $title, $value);
41
        $this->setDefaultEndpoint($defaultEndpoint);
42
43
        // Set a default description
44
        $this->setDescription(_t(
45
            __CLASS__ . '.DESCRIPTION',
46
            'Connect to a data source from {site}. Once added and saved you can configure the appearance and add search'
47
            . ' filters.',
48
            [ 'site' => $this->getSiteName() ]
49
        ));
50
51
        $this->addExtraClass('ckan-resource-locator__container');
52
    }
53
54
    public function getSchemaDataDefaults()
55
    {
56
        $schemaData = parent::getSchemaDataDefaults();
57
58
        $schemaData['defaultEndpoint'] = $this->getDefaultEndpoint();
59
60
        return $schemaData;
61
    }
62
63
    /**
64
     * @see ResourceLocatorField::$defaultEndpoint
65
     * @return string
66
     */
67
    public function getDefaultEndpoint()
68
    {
69
        if (!$this->defaultEndpoint) {
70
            return self::config()->get('default_endpoint');
71
        }
72
73
        return $this->defaultEndpoint;
74
    }
75
76
    /**
77
     * @see ResourceLocatorField::$defaultEndpoint
78
     * @param string $defaultEndpoint
79
     * @return $this
80
     */
81
    public function setDefaultEndpoint($defaultEndpoint)
82
    {
83
        $this->defaultEndpoint = $defaultEndpoint;
84
        return $this;
85
    }
86
87
    /**
88
     * @return null|string
89
     */
90
    public function getSiteName()
91
    {
92
        // Allow empty site names
93
        if ($this->siteName === null) {
94
            return _t(__CLASS__ . '.GENERIC_SITE_NAME', 'a CKAN website');
95
        }
96
97
        return $this->siteName;
98
    }
99
100
    /**
101
     * @param null|string $siteName
102
     * @return $this
103
     */
104
    public function setSiteName($siteName)
105
    {
106
        $this->siteName = $siteName;
107
        return $this;
108
    }
109
}
110