Passed
Push — master ( affe64...6c9189 )
by Jason
02:51
created
tests/objects/LocationTest.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@
 block discarded – undo
23 23
     public function testGetCoords()
24 24
     {
25 25
         $location = $this->objFromFixture(Location::class, 'dynamic');
26
-        $coords = ((int)$location->Lat != 0 && (int)$location->Lng != 0) ? 'true' : 'false';
26
+        $coords = ((int) $location->Lat != 0 && (int) $location->Lng != 0) ? 'true' : 'false';
27 27
         $this->assertEquals($coords, $location->getCoords());
28 28
     }
29 29
 
Please login to merge, or discard this patch.
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -14,172 +14,172 @@
 block discarded – undo
14 14
  */
15 15
 class LocationTest extends SapphireTest
16 16
 {
17
-    /**
18
-     * @var string
19
-     */
20
-    protected static $fixture_file = '../fixtures.yml';
21
-
22
-    /**
23
-     *
24
-     */
25
-    public function testGetCoords()
26
-    {
27
-        $location = $this->objFromFixture(Location::class, 'dynamic');
28
-        $coords = ((int)$location->Lat != 0 && (int)$location->Lng != 0) ? 'true' : 'false';
29
-        $this->assertEquals($coords, $location->getCoords());
30
-    }
31
-
32
-    /**
33
-     *
34
-     */
35
-    public function testFieldLabels()
36
-    {
37
-        $this->markTestSkipped();
38
-        // Link and File tracking display as "Tracking" in SS 4.2 & 4.3, "Tracking" in 4.4
39
-        $location = $this->objFromFixture(Location::class, 'dynamic');
40
-        $labels = $location->FieldLabels();
41
-        $expected = array(
42
-            'Title' => 'Name',
43
-            'Featured' => 'Featured',
44
-            'Website' => 'Website',
45
-            'Phone' => 'Phone',
46
-            'Email' => 'Email',
47
-            'Fax' => 'Fax',
48
-            'Address' => 'Address',
49
-            'City' => 'City',
50
-            'State' => 'State',
51
-            'PostalCode' => 'Postal Code',
52
-            'Country' => 'Country',
53
-            'Lat' => 'Lat',
54
-            'Lng' => 'Lng',
55
-            'Categories' => 'Categories',
56
-            'Category.Name' => 'Category',
57
-            'Category.ID' => 'Category',
58
-            'Featured.NiceAsBoolean' => 'Featured',
59
-            'Import_ID' => 'Import_ID',
60
-            'Version' => 'Version',
61
-            'Versions' => 'Versions',
62
-            'Address2' => 'Address2',
63
-            'LinkTracking' => 'Link tracking',
64
-            'FileTracking' => 'File tracking',
65
-        );
66
-        $this->assertEquals($expected, $labels);
67
-    }
68
-
69
-    /**
70
-     *
71
-     */
72
-    public function testGetCMSFields()
73
-    {
74
-        $object = new Location();
75
-        $fieldset = $object->getCMSFields();
76
-        $this->assertinstanceOf(FieldList::class, $fieldset);
77
-    }
78
-
79
-    /**
80
-     *
81
-     */
82
-    public function testCanView()
83
-    {
84
-        $object = $this->objFromFixture(Location::class, 'dynamic');
85
-        $object->write();
86
-
87
-        $this->assertTrue($object->canView());
88
-
89
-        $nullMember = Member::create();
90
-        $nullMember->write();
91
-
92
-        $this->assertTrue($object->canView($nullMember));
93
-
94
-        $nullMember->delete();
95
-    }
96
-
97
-    /**
98
-     *
99
-     */
100
-    public function testCanEdit()
101
-    {
102
-        $object = $this->objFromFixture(Location::class, 'dynamic');
103
-        $object->write();
104
-
105
-        $objectID = $object->ID;
106
-
107
-        //test permissions per permission setting
108
-        $create = $this->objFromFixture(Member::class, 'locationcreate');
109
-        $edit = $this->objFromFixture(Member::class, 'locationedit');
110
-        $delete = $this->objFromFixture(Member::class, 'locationdelete');
111
-
112
-        $originalTitle = $object->Title;
113
-        $this->assertEquals($originalTitle, 'Dynamic, Inc.');
114
-
115
-        $this->assertTrue($object->canEdit($edit));
116
-        $this->assertFalse($object->canEdit($create));
117
-        $this->assertFalse($object->canEdit($delete));
118
-
119
-        $object->Title = 'Changed Title';
120
-        $object->write();
121
-
122
-        $testEdit = Location::get()->byID($objectID);
123
-        $this->assertEquals($testEdit->Title, 'Changed Title');
124
-    }
125
-
126
-    /**
127
-     *
128
-     */
129
-    public function testCanDelete()
130
-    {
131
-        $object = $this->objFromFixture(Location::class, 'dynamic');
132
-        $object->write();
133
-
134
-        //test permissions per permission setting
135
-        $create = $this->objFromFixture(Member::class, 'locationcreate');
136
-        $edit = $this->objFromFixture(Member::class, 'locationedit');
137
-        $delete = $this->objFromFixture(Member::class, 'locationdelete');
138
-
139
-        $this->assertTrue($object->canDelete($delete));
140
-        $this->assertFalse($object->canDelete($create));
141
-        $this->assertFalse($object->canDelete($edit));
142
-
143
-        $checkObject = $object;
144
-        $object->delete();
145
-
146
-        $this->assertEquals($checkObject->ID, 0);
147
-    }
148
-
149
-    /**
150
-     *
151
-     */
152
-    public function testCanCreate()
153
-    {
154
-        $object = singleton(Location::class);
155
-
156
-        //test permissions per permission setting
157
-        $create = $this->objFromFixture(Member::class, 'locationcreate');
158
-        $edit = $this->objFromFixture(Member::class, 'locationedit');
159
-        $delete = $this->objFromFixture(Member::class, 'locationdelete');
160
-
161
-        $this->assertTrue($object->canCreate($create));
162
-        $this->assertFalse($object->canCreate($edit));
163
-        $this->assertFalse($object->canCreate($delete));
164
-
165
-        $nullMember = Member::create();
166
-        $nullMember->write();
167
-        $this->assertFalse($object->canCreate($nullMember));
168
-
169
-        $nullMember->delete();
170
-    }
171
-
172
-    /**
173
-     *
174
-     */
175
-    public function testProvidePermissions()
176
-    {
177
-        $object = Location::create();
178
-        $expected = array(
179
-            'Location_EDIT' => 'Edit a Location',
180
-            'Location_DELETE' => 'Delete a Location',
181
-            'Location_CREATE' => 'Create a Location',
182
-        );
183
-        $this->assertEquals($expected, $object->providePermissions());
184
-    }
17
+	/**
18
+	 * @var string
19
+	 */
20
+	protected static $fixture_file = '../fixtures.yml';
21
+
22
+	/**
23
+	 *
24
+	 */
25
+	public function testGetCoords()
26
+	{
27
+		$location = $this->objFromFixture(Location::class, 'dynamic');
28
+		$coords = ((int)$location->Lat != 0 && (int)$location->Lng != 0) ? 'true' : 'false';
29
+		$this->assertEquals($coords, $location->getCoords());
30
+	}
31
+
32
+	/**
33
+	 *
34
+	 */
35
+	public function testFieldLabels()
36
+	{
37
+		$this->markTestSkipped();
38
+		// Link and File tracking display as "Tracking" in SS 4.2 & 4.3, "Tracking" in 4.4
39
+		$location = $this->objFromFixture(Location::class, 'dynamic');
40
+		$labels = $location->FieldLabels();
41
+		$expected = array(
42
+			'Title' => 'Name',
43
+			'Featured' => 'Featured',
44
+			'Website' => 'Website',
45
+			'Phone' => 'Phone',
46
+			'Email' => 'Email',
47
+			'Fax' => 'Fax',
48
+			'Address' => 'Address',
49
+			'City' => 'City',
50
+			'State' => 'State',
51
+			'PostalCode' => 'Postal Code',
52
+			'Country' => 'Country',
53
+			'Lat' => 'Lat',
54
+			'Lng' => 'Lng',
55
+			'Categories' => 'Categories',
56
+			'Category.Name' => 'Category',
57
+			'Category.ID' => 'Category',
58
+			'Featured.NiceAsBoolean' => 'Featured',
59
+			'Import_ID' => 'Import_ID',
60
+			'Version' => 'Version',
61
+			'Versions' => 'Versions',
62
+			'Address2' => 'Address2',
63
+			'LinkTracking' => 'Link tracking',
64
+			'FileTracking' => 'File tracking',
65
+		);
66
+		$this->assertEquals($expected, $labels);
67
+	}
68
+
69
+	/**
70
+	 *
71
+	 */
72
+	public function testGetCMSFields()
73
+	{
74
+		$object = new Location();
75
+		$fieldset = $object->getCMSFields();
76
+		$this->assertinstanceOf(FieldList::class, $fieldset);
77
+	}
78
+
79
+	/**
80
+	 *
81
+	 */
82
+	public function testCanView()
83
+	{
84
+		$object = $this->objFromFixture(Location::class, 'dynamic');
85
+		$object->write();
86
+
87
+		$this->assertTrue($object->canView());
88
+
89
+		$nullMember = Member::create();
90
+		$nullMember->write();
91
+
92
+		$this->assertTrue($object->canView($nullMember));
93
+
94
+		$nullMember->delete();
95
+	}
96
+
97
+	/**
98
+	 *
99
+	 */
100
+	public function testCanEdit()
101
+	{
102
+		$object = $this->objFromFixture(Location::class, 'dynamic');
103
+		$object->write();
104
+
105
+		$objectID = $object->ID;
106
+
107
+		//test permissions per permission setting
108
+		$create = $this->objFromFixture(Member::class, 'locationcreate');
109
+		$edit = $this->objFromFixture(Member::class, 'locationedit');
110
+		$delete = $this->objFromFixture(Member::class, 'locationdelete');
111
+
112
+		$originalTitle = $object->Title;
113
+		$this->assertEquals($originalTitle, 'Dynamic, Inc.');
114
+
115
+		$this->assertTrue($object->canEdit($edit));
116
+		$this->assertFalse($object->canEdit($create));
117
+		$this->assertFalse($object->canEdit($delete));
118
+
119
+		$object->Title = 'Changed Title';
120
+		$object->write();
121
+
122
+		$testEdit = Location::get()->byID($objectID);
123
+		$this->assertEquals($testEdit->Title, 'Changed Title');
124
+	}
125
+
126
+	/**
127
+	 *
128
+	 */
129
+	public function testCanDelete()
130
+	{
131
+		$object = $this->objFromFixture(Location::class, 'dynamic');
132
+		$object->write();
133
+
134
+		//test permissions per permission setting
135
+		$create = $this->objFromFixture(Member::class, 'locationcreate');
136
+		$edit = $this->objFromFixture(Member::class, 'locationedit');
137
+		$delete = $this->objFromFixture(Member::class, 'locationdelete');
138
+
139
+		$this->assertTrue($object->canDelete($delete));
140
+		$this->assertFalse($object->canDelete($create));
141
+		$this->assertFalse($object->canDelete($edit));
142
+
143
+		$checkObject = $object;
144
+		$object->delete();
145
+
146
+		$this->assertEquals($checkObject->ID, 0);
147
+	}
148
+
149
+	/**
150
+	 *
151
+	 */
152
+	public function testCanCreate()
153
+	{
154
+		$object = singleton(Location::class);
155
+
156
+		//test permissions per permission setting
157
+		$create = $this->objFromFixture(Member::class, 'locationcreate');
158
+		$edit = $this->objFromFixture(Member::class, 'locationedit');
159
+		$delete = $this->objFromFixture(Member::class, 'locationdelete');
160
+
161
+		$this->assertTrue($object->canCreate($create));
162
+		$this->assertFalse($object->canCreate($edit));
163
+		$this->assertFalse($object->canCreate($delete));
164
+
165
+		$nullMember = Member::create();
166
+		$nullMember->write();
167
+		$this->assertFalse($object->canCreate($nullMember));
168
+
169
+		$nullMember->delete();
170
+	}
171
+
172
+	/**
173
+	 *
174
+	 */
175
+	public function testProvidePermissions()
176
+	{
177
+		$object = Location::create();
178
+		$expected = array(
179
+			'Location_EDIT' => 'Edit a Location',
180
+			'Location_DELETE' => 'Delete a Location',
181
+			'Location_CREATE' => 'Create a Location',
182
+		);
183
+		$this->assertEquals($expected, $object->providePermissions());
184
+	}
185 185
 }
Please login to merge, or discard this patch.
tests/form/LocatorFormTest.php 1 patch
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -11,34 +11,34 @@
 block discarded – undo
11 11
 
12 12
 class LocatorFormTest extends FunctionalTest
13 13
 {
14
-    /**
15
-     * @var string
16
-     */
17
-    protected static $fixture_file = '../fixtures.yml';
18
-
19
-    /**
20
-     *
21
-     */
22
-    public function testLocatorFormBase()
23
-    {
24
-        $form = LocatorForm::create(LocatorController::create(Locator::get()->first()), 'LocatorForm');
25
-
26
-        $this->assertInstanceOf(FieldList::class, $form->Fields());
27
-        $this->assertInstanceOf(RequiredFields::class, $form->getValidator());
28
-    }
29
-
30
-    /**
31
-     *
32
-     */
33
-    public function testUpdateRequiredFields()
34
-    {
35
-        $form = LocatorForm::create(LocatorController::create(Locator::get()->first()), 'LocatorForm');
36
-        $validator = $form->getValidator();
37
-
38
-        $validator->removeRequiredField('Address');
39
-        $validator->addRequiredField('Foo');
40
-
41
-        $this->assertEquals(['Foo'], $form->getValidator()->getRequired());
42
-    }
14
+	/**
15
+	 * @var string
16
+	 */
17
+	protected static $fixture_file = '../fixtures.yml';
18
+
19
+	/**
20
+	 *
21
+	 */
22
+	public function testLocatorFormBase()
23
+	{
24
+		$form = LocatorForm::create(LocatorController::create(Locator::get()->first()), 'LocatorForm');
25
+
26
+		$this->assertInstanceOf(FieldList::class, $form->Fields());
27
+		$this->assertInstanceOf(RequiredFields::class, $form->getValidator());
28
+	}
29
+
30
+	/**
31
+	 *
32
+	 */
33
+	public function testUpdateRequiredFields()
34
+	{
35
+		$form = LocatorForm::create(LocatorController::create(Locator::get()->first()), 'LocatorForm');
36
+		$validator = $form->getValidator();
37
+
38
+		$validator->removeRequiredField('Address');
39
+		$validator->addRequiredField('Foo');
40
+
41
+		$this->assertEquals(['Foo'], $form->getValidator()->getRequired());
42
+	}
43 43
 
44 44
 }
Please login to merge, or discard this patch.
tests/objects/LocationCategoryTest.php 1 patch
Indentation   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -14,69 +14,69 @@
 block discarded – undo
14 14
  */
15 15
 class LocationCategoryTest extends SapphireTest
16 16
 {
17
-    /**
18
-     * @var string
19
-     */
20
-    protected static $fixture_file = '../fixtures.yml';
17
+	/**
18
+	 * @var string
19
+	 */
20
+	protected static $fixture_file = '../fixtures.yml';
21 21
 
22
-    /**
23
-     *
24
-     */
25
-    public function testGetCMSFields()
26
-    {
27
-        $object = $this->objFromFixture(LocationCategory::class, 'service');
28
-        $fieldset = $object->getCMSFields();
29
-        $this->assertInstanceOf(FieldList::class, $fieldset);
30
-    }
22
+	/**
23
+	 *
24
+	 */
25
+	public function testGetCMSFields()
26
+	{
27
+		$object = $this->objFromFixture(LocationCategory::class, 'service');
28
+		$fieldset = $object->getCMSFields();
29
+		$this->assertInstanceOf(FieldList::class, $fieldset);
30
+	}
31 31
 
32
-    /**
33
-     *
34
-     */
35
-    public function testCanView()
36
-    {
37
-        $object = $this->objFromFixture(LocationCategory::class, 'service');
38
-        $this->assertTrue($object->canView());
39
-    }
32
+	/**
33
+	 *
34
+	 */
35
+	public function testCanView()
36
+	{
37
+		$object = $this->objFromFixture(LocationCategory::class, 'service');
38
+		$this->assertTrue($object->canView());
39
+	}
40 40
 
41
-    /**
42
-     *
43
-     */
44
-    public function testCanEdit()
45
-    {
46
-        $object = $this->objFromFixture(LocationCategory::class, 'service');
41
+	/**
42
+	 *
43
+	 */
44
+	public function testCanEdit()
45
+	{
46
+		$object = $this->objFromFixture(LocationCategory::class, 'service');
47 47
 
48
-        $admin = $this->objFromFixture(Member::class, 'locationedit');
49
-        $this->assertTrue($object->canEdit($admin));
48
+		$admin = $this->objFromFixture(Member::class, 'locationedit');
49
+		$this->assertTrue($object->canEdit($admin));
50 50
 
51
-        $member = $this->objFromFixture(Member::class, 'default');
52
-        $this->assertFalse($object->canEdit($member));
53
-    }
51
+		$member = $this->objFromFixture(Member::class, 'default');
52
+		$this->assertFalse($object->canEdit($member));
53
+	}
54 54
 
55
-    /**
56
-     *
57
-     */
58
-    public function testCanDelete()
59
-    {
60
-        $object = $this->objFromFixture(LocationCategory::class, 'service');
55
+	/**
56
+	 *
57
+	 */
58
+	public function testCanDelete()
59
+	{
60
+		$object = $this->objFromFixture(LocationCategory::class, 'service');
61 61
 
62
-        $admin = $this->objFromFixture(Member::class, 'locationdelete');
63
-        $this->assertTrue($object->canDelete($admin));
62
+		$admin = $this->objFromFixture(Member::class, 'locationdelete');
63
+		$this->assertTrue($object->canDelete($admin));
64 64
 
65
-        $member = $this->objFromFixture(Member::class, 'default');
66
-        $this->assertFalse($object->canDelete($member));
67
-    }
65
+		$member = $this->objFromFixture(Member::class, 'default');
66
+		$this->assertFalse($object->canDelete($member));
67
+	}
68 68
 
69
-    /**
70
-     *
71
-     */
72
-    public function testCanCreate()
73
-    {
74
-        $object = $this->objFromFixture(LocationCategory::class, 'service');
69
+	/**
70
+	 *
71
+	 */
72
+	public function testCanCreate()
73
+	{
74
+		$object = $this->objFromFixture(LocationCategory::class, 'service');
75 75
 
76
-        $admin = $this->objFromFixture(Member::class, 'locationcreate');
77
-        $this->assertTrue($object->canCreate($admin));
76
+		$admin = $this->objFromFixture(Member::class, 'locationcreate');
77
+		$this->assertTrue($object->canCreate($admin));
78 78
 
79
-        $member = $this->objFromFixture(Member::class, 'default');
80
-        $this->assertFalse($object->canCreate($member));
81
-    }
79
+		$member = $this->objFromFixture(Member::class, 'default');
80
+		$this->assertFalse($object->canCreate($member));
81
+	}
82 82
 }
Please login to merge, or discard this patch.
src/admin/LocationAdmin.php 1 patch
Indentation   +63 added lines, -63 removed lines patch added patch discarded remove patch
@@ -12,72 +12,72 @@
 block discarded – undo
12 12
 class LocationAdmin extends ModelAdmin
13 13
 {
14 14
 
15
-    /**
16
-     * @var array
17
-     */
18
-    private static $managed_models = array(
19
-        Location::class,
20
-        LocationCategory::class,
21
-    );
15
+	/**
16
+	 * @var array
17
+	 */
18
+	private static $managed_models = array(
19
+		Location::class,
20
+		LocationCategory::class,
21
+	);
22 22
 
23
-    /**
24
-     * @var array
25
-     */
26
-    private static $model_importers = array(
27
-        Location::class => LocationCsvBulkLoader::class,
28
-        LocationCategory::class => CsvBulkLoader::class,
29
-    );
23
+	/**
24
+	 * @var array
25
+	 */
26
+	private static $model_importers = array(
27
+		Location::class => LocationCsvBulkLoader::class,
28
+		LocationCategory::class => CsvBulkLoader::class,
29
+	);
30 30
 
31
-    /**
32
-     * @var string
33
-     */
34
-    private static $menu_title = 'Locator';
35
-    /**
36
-     * @var string
37
-     */
38
-    private static $url_segment = 'locator';
31
+	/**
32
+	 * @var string
33
+	 */
34
+	private static $menu_title = 'Locator';
35
+	/**
36
+	 * @var string
37
+	 */
38
+	private static $url_segment = 'locator';
39 39
 
40
-    /**
41
-     * @return array
42
-     */
43
-    public function getExportFields()
44
-    {
45
-        if ($this->modelClass == 'Location') {
46
-            return array(
47
-                'Title' => 'Name',
48
-                'Address' => 'Address',
49
-                'City' => 'City',
50
-                'State' => 'State',
51
-                'PostalCode' => 'PostalCode',
52
-                'Country' => 'Country',
53
-                'Website' => 'Website',
54
-                'Phone' => 'Phone',
55
-                'Fax' => 'Fax',
56
-                'Email' => 'Email',
57
-                'ShowInLocator' => 'ShowInLocator',
58
-                'Featured' => 'Featured',
59
-                'Lat' => 'Lat',
60
-                'Lng' => 'Lng',
61
-            );
62
-        }
40
+	/**
41
+	 * @return array
42
+	 */
43
+	public function getExportFields()
44
+	{
45
+		if ($this->modelClass == 'Location') {
46
+			return array(
47
+				'Title' => 'Name',
48
+				'Address' => 'Address',
49
+				'City' => 'City',
50
+				'State' => 'State',
51
+				'PostalCode' => 'PostalCode',
52
+				'Country' => 'Country',
53
+				'Website' => 'Website',
54
+				'Phone' => 'Phone',
55
+				'Fax' => 'Fax',
56
+				'Email' => 'Email',
57
+				'ShowInLocator' => 'ShowInLocator',
58
+				'Featured' => 'Featured',
59
+				'Lat' => 'Lat',
60
+				'Lng' => 'Lng',
61
+			);
62
+		}
63 63
 
64
-        return parent::getExportFields();
65
-    }
64
+		return parent::getExportFields();
65
+	}
66 66
 
67
-    /**
68
-     * @param null $id
69
-     * @param null $fields
70
-     * @return $this|Form
71
-     */
72
-    public function getEditForm($id = null, $fields = null)
73
-    {
74
-        $form = parent::getEditForm($id, $fields);
75
-        $class = $this->sanitiseClassName($this->modelClass);
76
-        if ($class == 'Location') {
77
-            $gridField = $form->Fields()->fieldByName($class);
78
-            $config = $gridField->getConfig();
79
-            $config->removeComponentsByType('GridFieldDeleteAction');
80
-        }
81
-        return $form;
82
-    }
67
+	/**
68
+	 * @param null $id
69
+	 * @param null $fields
70
+	 * @return $this|Form
71
+	 */
72
+	public function getEditForm($id = null, $fields = null)
73
+	{
74
+		$form = parent::getEditForm($id, $fields);
75
+		$class = $this->sanitiseClassName($this->modelClass);
76
+		if ($class == 'Location') {
77
+			$gridField = $form->Fields()->fieldByName($class);
78
+			$config = $gridField->getConfig();
79
+			$config->removeComponentsByType('GridFieldDeleteAction');
80
+		}
81
+		return $form;
82
+	}
83 83
 }
Please login to merge, or discard this patch.
src/objects/Location.php 2 patches
Indentation   +201 added lines, -201 removed lines patch added patch discarded remove patch
@@ -26,205 +26,205 @@
 block discarded – undo
26 26
  */
27 27
 class Location extends DataObject implements PermissionProvider
28 28
 {
29
-    /**
30
-     * @var string
31
-     */
32
-    private static $singular_name = 'Location';
33
-
34
-    /**
35
-     * @var string
36
-     */
37
-    private static $plural_name = 'Locations';
38
-
39
-    /**
40
-     * @var bool
41
-     */
42
-    private static $versioned_gridfield_extensions = true;
43
-
44
-    /**
45
-     * @var array
46
-     */
47
-    private static $db = array(
48
-        'Title' => 'Varchar(255)',
49
-        'Featured' => 'Boolean',
50
-        'Website' => 'Varchar(255)',
51
-        'Phone' => 'Varchar(40)',
52
-        'Email' => 'Varchar(255)',
53
-        'Fax' => 'Varchar(45)',
54
-        'Import_ID' => 'Int',
55
-    );
56
-
57
-    private static $many_many = [
58
-        'Categories' => LocationCategory::class,
59
-    ];
60
-
61
-    /**
62
-     * @var string
63
-     */
64
-    private static $table_name = 'Location';
65
-
66
-    /**
67
-     * @var array
68
-     */
69
-    private static $casting = array(
70
-        'distance' => 'Decimal(9,3)',
71
-    );
72
-
73
-    /**
74
-     * @var string
75
-     */
76
-    private static $default_sort = 'Title';
77
-
78
-    /**
79
-     * api access via Restful Server module
80
-     *
81
-     * @var bool
82
-     */
83
-    private static $api_access = true;
84
-
85
-    /**
86
-     * search fields for Model Admin
87
-     *
88
-     * @var array
89
-     */
90
-    private static $searchable_fields = array(
91
-        'Title',
92
-        'Address',
93
-        'City',
94
-        'State',
95
-        'PostalCode',
96
-        'Country',
97
-        'Website',
98
-        'Phone',
99
-        'Email',
100
-        'Featured',
101
-    );
102
-
103
-    /**
104
-     * columns for grid field
105
-     *
106
-     * @var array
107
-     */
108
-    private static $summary_fields = array(
109
-        'Title',
110
-        'Address',
111
-        'City',
112
-        'State',
113
-        'PostalCode',
114
-        'Country',
115
-        'Featured.NiceAsBoolean',
116
-        'Coords',
117
-    );
118
-
119
-    /**
120
-     * Coords status for $summary_fields
121
-     *
122
-     * @return string
123
-     */
124
-    public function getCoords()
125
-    {
126
-        return ($this->Lat != 0 && $this->Lng != 0) ? 'true' : 'false';
127
-    }
128
-
129
-    /**
130
-     * custom labels for fields
131
-     *
132
-     * @param bool $includerelations
133
-     * @return array|string
134
-     */
135
-    public function fieldLabels($includerelations = true)
136
-    {
137
-        $labels = parent::fieldLabels($includerelations);
138
-        $labels['Title'] = 'Name';
139
-        $labels['PostalCode'] = 'Postal Code';
140
-        $labels['Category.Name'] = 'Category';
141
-        $labels['Category.ID'] = 'Category';
142
-        $labels['Featured.NiceAsBoolean'] = 'Featured';
143
-        return $labels;
144
-    }
145
-
146
-    /**
147
-     * @return FieldList
148
-     */
149
-    public function getCMSFields()
150
-    {
151
-        $this->beforeUpdateCMSFields(function ($fields) {
152
-            $fields->removeByName(array(
153
-                'Import_ID',
154
-                'LinkTracking',
155
-                'FileTracking',
156
-            ));
157
-
158
-            $fields->dataFieldByName('Website')
159
-                ->setAttribute('placeholder', 'http://');
160
-
161
-            $fields->replaceField('Email', EmailField::create('Email'));
162
-
163
-            $featured = $fields->dataFieldByName('Featured')
164
-                ->setDescription('Location will display near the top of the results list');
165
-            $fields->insertAfter(
166
-                $featured,
167
-                'CategoryID'
168
-            );
169
-        });
170
-
171
-        $fields = parent::getCMSFields();
172
-
173
-        // allow to be extended via DataExtension
174
-        $this->extend('updateLocationFields', $fields);
175
-
176
-        return $fields;
177
-    }
178
-
179
-    /**
180
-     * @param null $member
181
-     * @param array $context
182
-     * @return bool
183
-     */
184
-    public function canView($member = null, $context = [])
185
-    {
186
-        return true;
187
-    }
188
-
189
-    /**
190
-     * @param null $member
191
-     * @param array $context
192
-     * @return bool|int
193
-     */
194
-    public function canEdit($member = null, $context = [])
195
-    {
196
-        return Permission::check('Location_EDIT', 'any', $member);
197
-    }
198
-
199
-    /**
200
-     * @param null $member
201
-     * @param array $context
202
-     * @return bool|int
203
-     */
204
-    public function canDelete($member = null, $context = [])
205
-    {
206
-        return Permission::check('Location_DELETE', 'any', $member);
207
-    }
208
-
209
-    /**
210
-     * @param null $member
211
-     * @param array $context
212
-     * @return bool|int
213
-     */
214
-    public function canCreate($member = null, $context = [])
215
-    {
216
-        return Permission::check('Location_CREATE', 'any', $member);
217
-    }
218
-
219
-    /**
220
-     * @return array
221
-     */
222
-    public function providePermissions()
223
-    {
224
-        return array(
225
-            'Location_EDIT' => 'Edit a Location',
226
-            'Location_DELETE' => 'Delete a Location',
227
-            'Location_CREATE' => 'Create a Location',
228
-        );
229
-    }
29
+	/**
30
+	 * @var string
31
+	 */
32
+	private static $singular_name = 'Location';
33
+
34
+	/**
35
+	 * @var string
36
+	 */
37
+	private static $plural_name = 'Locations';
38
+
39
+	/**
40
+	 * @var bool
41
+	 */
42
+	private static $versioned_gridfield_extensions = true;
43
+
44
+	/**
45
+	 * @var array
46
+	 */
47
+	private static $db = array(
48
+		'Title' => 'Varchar(255)',
49
+		'Featured' => 'Boolean',
50
+		'Website' => 'Varchar(255)',
51
+		'Phone' => 'Varchar(40)',
52
+		'Email' => 'Varchar(255)',
53
+		'Fax' => 'Varchar(45)',
54
+		'Import_ID' => 'Int',
55
+	);
56
+
57
+	private static $many_many = [
58
+		'Categories' => LocationCategory::class,
59
+	];
60
+
61
+	/**
62
+	 * @var string
63
+	 */
64
+	private static $table_name = 'Location';
65
+
66
+	/**
67
+	 * @var array
68
+	 */
69
+	private static $casting = array(
70
+		'distance' => 'Decimal(9,3)',
71
+	);
72
+
73
+	/**
74
+	 * @var string
75
+	 */
76
+	private static $default_sort = 'Title';
77
+
78
+	/**
79
+	 * api access via Restful Server module
80
+	 *
81
+	 * @var bool
82
+	 */
83
+	private static $api_access = true;
84
+
85
+	/**
86
+	 * search fields for Model Admin
87
+	 *
88
+	 * @var array
89
+	 */
90
+	private static $searchable_fields = array(
91
+		'Title',
92
+		'Address',
93
+		'City',
94
+		'State',
95
+		'PostalCode',
96
+		'Country',
97
+		'Website',
98
+		'Phone',
99
+		'Email',
100
+		'Featured',
101
+	);
102
+
103
+	/**
104
+	 * columns for grid field
105
+	 *
106
+	 * @var array
107
+	 */
108
+	private static $summary_fields = array(
109
+		'Title',
110
+		'Address',
111
+		'City',
112
+		'State',
113
+		'PostalCode',
114
+		'Country',
115
+		'Featured.NiceAsBoolean',
116
+		'Coords',
117
+	);
118
+
119
+	/**
120
+	 * Coords status for $summary_fields
121
+	 *
122
+	 * @return string
123
+	 */
124
+	public function getCoords()
125
+	{
126
+		return ($this->Lat != 0 && $this->Lng != 0) ? 'true' : 'false';
127
+	}
128
+
129
+	/**
130
+	 * custom labels for fields
131
+	 *
132
+	 * @param bool $includerelations
133
+	 * @return array|string
134
+	 */
135
+	public function fieldLabels($includerelations = true)
136
+	{
137
+		$labels = parent::fieldLabels($includerelations);
138
+		$labels['Title'] = 'Name';
139
+		$labels['PostalCode'] = 'Postal Code';
140
+		$labels['Category.Name'] = 'Category';
141
+		$labels['Category.ID'] = 'Category';
142
+		$labels['Featured.NiceAsBoolean'] = 'Featured';
143
+		return $labels;
144
+	}
145
+
146
+	/**
147
+	 * @return FieldList
148
+	 */
149
+	public function getCMSFields()
150
+	{
151
+		$this->beforeUpdateCMSFields(function ($fields) {
152
+			$fields->removeByName(array(
153
+				'Import_ID',
154
+				'LinkTracking',
155
+				'FileTracking',
156
+			));
157
+
158
+			$fields->dataFieldByName('Website')
159
+				->setAttribute('placeholder', 'http://');
160
+
161
+			$fields->replaceField('Email', EmailField::create('Email'));
162
+
163
+			$featured = $fields->dataFieldByName('Featured')
164
+				->setDescription('Location will display near the top of the results list');
165
+			$fields->insertAfter(
166
+				$featured,
167
+				'CategoryID'
168
+			);
169
+		});
170
+
171
+		$fields = parent::getCMSFields();
172
+
173
+		// allow to be extended via DataExtension
174
+		$this->extend('updateLocationFields', $fields);
175
+
176
+		return $fields;
177
+	}
178
+
179
+	/**
180
+	 * @param null $member
181
+	 * @param array $context
182
+	 * @return bool
183
+	 */
184
+	public function canView($member = null, $context = [])
185
+	{
186
+		return true;
187
+	}
188
+
189
+	/**
190
+	 * @param null $member
191
+	 * @param array $context
192
+	 * @return bool|int
193
+	 */
194
+	public function canEdit($member = null, $context = [])
195
+	{
196
+		return Permission::check('Location_EDIT', 'any', $member);
197
+	}
198
+
199
+	/**
200
+	 * @param null $member
201
+	 * @param array $context
202
+	 * @return bool|int
203
+	 */
204
+	public function canDelete($member = null, $context = [])
205
+	{
206
+		return Permission::check('Location_DELETE', 'any', $member);
207
+	}
208
+
209
+	/**
210
+	 * @param null $member
211
+	 * @param array $context
212
+	 * @return bool|int
213
+	 */
214
+	public function canCreate($member = null, $context = [])
215
+	{
216
+		return Permission::check('Location_CREATE', 'any', $member);
217
+	}
218
+
219
+	/**
220
+	 * @return array
221
+	 */
222
+	public function providePermissions()
223
+	{
224
+		return array(
225
+			'Location_EDIT' => 'Edit a Location',
226
+			'Location_DELETE' => 'Delete a Location',
227
+			'Location_CREATE' => 'Create a Location',
228
+		);
229
+	}
230 230
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -148,7 +148,7 @@
 block discarded – undo
148 148
      */
149 149
     public function getCMSFields()
150 150
     {
151
-        $this->beforeUpdateCMSFields(function ($fields) {
151
+        $this->beforeUpdateCMSFields(function($fields) {
152 152
             $fields->removeByName(array(
153 153
                 'Import_ID',
154 154
                 'LinkTracking',
Please login to merge, or discard this patch.
src/objects/LocationCategory.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -59,7 +59,7 @@
 block discarded – undo
59 59
      */
60 60
     public function getCMSFields()
61 61
     {
62
-        $this->beforeUpdateCMSFields(function ($fields) {
62
+        $this->beforeUpdateCMSFields(function($fields) {
63 63
             $fields->removeByName([
64 64
                 'Locations',
65 65
                 'LocationSet',
Please login to merge, or discard this patch.
Indentation   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -19,120 +19,120 @@
 block discarded – undo
19 19
  */
20 20
 class LocationCategory extends DataObject
21 21
 {
22
-    /**
23
-     * @var string
24
-     */
25
-    private static $singular_name = 'Category';
26
-
27
-    /**
28
-     * @var string
29
-     */
30
-    private static $plural_name = 'Categories';
31
-
32
-    /**
33
-     * @var array
34
-     */
35
-    private static $db = array(
36
-        'Name' => 'Varchar(100)',
37
-    );
38
-
39
-    /**
40
-     * @var array
41
-     */
42
-    private static $belongs_many_many = array(
43
-        'Locators' => Locator::class,
44
-        'LocationSet' => Location::class,
45
-    );
46
-
47
-    /**
48
-     * @var string
49
-     */
50
-    private static $table_name = 'LocationCategory';
51
-
52
-    /**
53
-     * @var string
54
-     */
55
-    private static $default_sort = 'Name';
56
-
57
-    /**
58
-     * @return \SilverStripe\Forms\FieldList
59
-     */
60
-    public function getCMSFields()
61
-    {
62
-        $this->beforeUpdateCMSFields(function ($fields) {
63
-            $fields->removeByName([
64
-                'Locations',
65
-                'LocationSet',
66
-                'LinkTracking',
67
-                'FileTracking',
68
-            ]);
69
-
70
-            if ($this->ID) {
71
-                // Locations
72
-                $config = GridFieldConfig_RelationEditor::create();
73
-                $config->removeComponentsByType(GridFieldAddExistingAutocompleter::class);
74
-                $config->addComponent(new GridFieldAddExistingAutocompleter());
75
-                $config->removeComponentsByType(GridFieldAddNewButton::class);
76
-                $locations = $this->Locations();
77
-                $locationField = GridField::create('Locations', 'Locations', $locations, $config);
78
-
79
-                $fields->addFieldsToTab('Root.Locations', array(
80
-                    $locationField,
81
-                ));
82
-            }
83
-        });
84
-
85
-        $fields = parent::getCMSFields();
86
-
87
-        return $fields;
88
-    }
89
-
90
-    /**
91
-     * For backwards compatability
92
-     * @return Locations|ManyManyList
93
-     */
94
-    public function Locations()
95
-    {
96
-        return $this->LocationSet();
97
-    }
98
-
99
-    /**
100
-     * @param null $member
101
-     * @param array $context
102
-     * @return bool
103
-     */
104
-    public function canView($member = null, $context = [])
105
-    {
106
-        return true;
107
-    }
108
-
109
-    /**
110
-     * @param null $member
111
-     * @param array $context
112
-     * @return bool|int
113
-     */
114
-    public function canEdit($member = null, $context = [])
115
-    {
116
-        return Permission::check('Location_EDIT', 'any', $member);
117
-    }
118
-
119
-    /**
120
-     * @param null $member
121
-     * @param array $context
122
-     * @return bool|int
123
-     */
124
-    public function canDelete($member = null, $context = [])
125
-    {
126
-        return Permission::check('Location_DELETE', 'any', $member);
127
-    }
128
-
129
-    /**
130
-     * @param null $member
131
-     * @param array $context
132
-     * @return bool|int
133
-     */
134
-    public function canCreate($member = null, $context = [])
135
-    {
136
-        return Permission::check('Location_CREATE', 'any', $member);
137
-    }
22
+	/**
23
+	 * @var string
24
+	 */
25
+	private static $singular_name = 'Category';
26
+
27
+	/**
28
+	 * @var string
29
+	 */
30
+	private static $plural_name = 'Categories';
31
+
32
+	/**
33
+	 * @var array
34
+	 */
35
+	private static $db = array(
36
+		'Name' => 'Varchar(100)',
37
+	);
38
+
39
+	/**
40
+	 * @var array
41
+	 */
42
+	private static $belongs_many_many = array(
43
+		'Locators' => Locator::class,
44
+		'LocationSet' => Location::class,
45
+	);
46
+
47
+	/**
48
+	 * @var string
49
+	 */
50
+	private static $table_name = 'LocationCategory';
51
+
52
+	/**
53
+	 * @var string
54
+	 */
55
+	private static $default_sort = 'Name';
56
+
57
+	/**
58
+	 * @return \SilverStripe\Forms\FieldList
59
+	 */
60
+	public function getCMSFields()
61
+	{
62
+		$this->beforeUpdateCMSFields(function ($fields) {
63
+			$fields->removeByName([
64
+				'Locations',
65
+				'LocationSet',
66
+				'LinkTracking',
67
+				'FileTracking',
68
+			]);
69
+
70
+			if ($this->ID) {
71
+				// Locations
72
+				$config = GridFieldConfig_RelationEditor::create();
73
+				$config->removeComponentsByType(GridFieldAddExistingAutocompleter::class);
74
+				$config->addComponent(new GridFieldAddExistingAutocompleter());
75
+				$config->removeComponentsByType(GridFieldAddNewButton::class);
76
+				$locations = $this->Locations();
77
+				$locationField = GridField::create('Locations', 'Locations', $locations, $config);
78
+
79
+				$fields->addFieldsToTab('Root.Locations', array(
80
+					$locationField,
81
+				));
82
+			}
83
+		});
84
+
85
+		$fields = parent::getCMSFields();
86
+
87
+		return $fields;
88
+	}
89
+
90
+	/**
91
+	 * For backwards compatability
92
+	 * @return Locations|ManyManyList
93
+	 */
94
+	public function Locations()
95
+	{
96
+		return $this->LocationSet();
97
+	}
98
+
99
+	/**
100
+	 * @param null $member
101
+	 * @param array $context
102
+	 * @return bool
103
+	 */
104
+	public function canView($member = null, $context = [])
105
+	{
106
+		return true;
107
+	}
108
+
109
+	/**
110
+	 * @param null $member
111
+	 * @param array $context
112
+	 * @return bool|int
113
+	 */
114
+	public function canEdit($member = null, $context = [])
115
+	{
116
+		return Permission::check('Location_EDIT', 'any', $member);
117
+	}
118
+
119
+	/**
120
+	 * @param null $member
121
+	 * @param array $context
122
+	 * @return bool|int
123
+	 */
124
+	public function canDelete($member = null, $context = [])
125
+	{
126
+		return Permission::check('Location_DELETE', 'any', $member);
127
+	}
128
+
129
+	/**
130
+	 * @param null $member
131
+	 * @param array $context
132
+	 * @return bool|int
133
+	 */
134
+	public function canCreate($member = null, $context = [])
135
+	{
136
+		return Permission::check('Location_CREATE', 'any', $member);
137
+	}
138 138
 }
Please login to merge, or discard this patch.
src/pages/Locator.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@
 block discarded – undo
70 70
      */
71 71
     public function getCMSFields()
72 72
     {
73
-        $this->beforeUpdateCMSFields(function ($fields) {
73
+        $this->beforeUpdateCMSFields(function($fields) {
74 74
             // Settings
75 75
             $fields->addFieldsToTab('Root.Settings', array(
76 76
                 HeaderField::create('DisplayOptions', 'Display Options', 3),
Please login to merge, or discard this patch.
Indentation   +242 added lines, -242 removed lines patch added patch discarded remove patch
@@ -26,246 +26,246 @@
 block discarded – undo
26 26
  */
27 27
 class Locator extends \Page
28 28
 {
29
-    /**
30
-     * @var string
31
-     */
32
-    private static $singular_name = 'Locator';
33
-
34
-    /**
35
-     * @var string
36
-     */
37
-    private static $plural_name = 'Locators';
38
-
39
-    /**
40
-     * @var string
41
-     */
42
-    private static $description = 'Display locations on a map';
43
-
44
-    /**
45
-     * @var array
46
-     */
47
-    private static $db = array(
48
-        'Unit' => 'Enum("m,km","m")',
49
-    );
50
-
51
-    /**
52
-     * @var array
53
-     */
54
-    private static $many_many = array(
55
-        'Categories' => LocationCategory::class,
56
-    );
57
-
58
-    /**
59
-     * @var string
60
-     */
61
-    private static $table_name = 'Locator';
62
-
63
-    /**
64
-     * @var string
65
-     */
66
-    private static $location_class = Location::class;
67
-
68
-    /**
69
-     * @return FieldList
70
-     */
71
-    public function getCMSFields()
72
-    {
73
-        $this->beforeUpdateCMSFields(function ($fields) {
74
-            // Settings
75
-            $fields->addFieldsToTab('Root.Settings', array(
76
-                HeaderField::create('DisplayOptions', 'Display Options', 3),
77
-                OptionsetField::create('Unit', 'Unit of measure', array('m' => 'Miles', 'km' => 'Kilometers')),
78
-            ));
79
-
80
-            // Filter categories
81
-            $config = GridFieldConfig_RelationEditor::create();
82
-            $config->removeComponentsByType(GridFieldAddExistingAutocompleter::class);
83
-            $config->addComponent(new GridFieldAddExistingSearchButton());
84
-            $categories = $this->Categories();
85
-            $categoriesField = GridField::create('Categories', 'Categories', $categories, $config)
86
-                ->setDescription('only show locations from the selected category');
87
-
88
-            // Filter
89
-            $fields->addFieldsToTab('Root.Filter', array(
90
-                HeaderField::create('CategoryOptionsHeader', 'Location Filtering', 3),
91
-                $categoriesField,
92
-            ));
93
-        });
94
-
95
-        return parent::getCMSFields();
96
-    }
97
-
98
-    /**
99
-     * @param array $filter
100
-     * @param array $filterAny
101
-     * @param array $exclude
102
-     * @param null|callable $callback
103
-     *
104
-     * @return DataList|ArrayList
105
-     */
106
-    public static function get_locations(
107
-        $filter = [],
108
-        $filterAny = [],
109
-        $exclude = [],
110
-        $callback = null
111
-    ) {
112
-        $locationClass = Config::inst()->get(Locator::class, 'location_class');
113
-        $locations = $locationClass::get()->filter($filter)->exclude($exclude);
114
-
115
-        if (!empty($filterAny)) {
116
-            $locations = $locations->filterAny($filterAny);
117
-        }
118
-        if (!empty($exclude)) {
119
-            $locations = $locations->exclude($exclude);
120
-        }
121
-
122
-        if ($callback !== null && is_callable($callback)) {
123
-            $locations->filterByCallback($callback);
124
-        }
125
-
126
-        return $locations;
127
-    }
128
-
129
-    /**
130
-     * @return DataList
131
-     */
132
-    public static function get_all_categories()
133
-    {
134
-        return LocationCategory::get();
135
-    }
136
-
137
-    /**
138
-     * @return bool
139
-     */
140
-    public function getPageCategories()
141
-    {
142
-        return self::locator_categories_by_locator($this->ID);
143
-    }
144
-
145
-    /**
146
-     * @param int $id
147
-     *
148
-     * @return bool|
149
-     */
150
-    public static function locator_categories_by_locator($id = 0)
151
-    {
152
-        if ($id == 0) {
153
-            return false;
154
-        }
155
-
156
-        return Locator::get()->byID($id)->getUsedCategories();
157
-    }
158
-
159
-    /**
160
-     * Gets the list of radii
161
-     *
162
-     * @return ArrayList
163
-     */
164
-    public function getRadii()
165
-    {
166
-        $radii = [
167
-            '0' => '25',
168
-            '1' => '50',
169
-            '2' => '75',
170
-            '3' => '100',
171
-        ];
172
-        $config_radii = $this->config()->get('radii');
173
-        if ($config_radii) {
174
-            $radii = $config_radii;
175
-        }
176
-
177
-        return $radii;
178
-    }
179
-
180
-    public function getRadiiArrayList()
181
-    {
182
-        $list = [];
183
-
184
-        foreach ($this->getRadii() as $radius) {
185
-            $list[] = new ArrayData(array(
186
-                'Radius' => $radius,
187
-            ));
188
-        }
189
-
190
-        return new ArrayList($list);
191
-    }
192
-
193
-    /**
194
-     * Gets the limit of locations
195
-     * @return mixed
196
-     */
197
-    public function getLimit()
198
-    {
199
-        return $this->config()->get('limit');
200
-    }
201
-
202
-    /**
203
-     * Gets if the radius drop down should be shown
204
-     * @return mixed
205
-     */
206
-    public function getShowRadius()
207
-    {
208
-        return $this->config()->get('show_radius');
209
-    }
210
-
211
-    /**
212
-     * @return mixed
213
-     */
214
-    public function getUsedCategories()
215
-    {
216
-        return $this->Categories()->filter([
217
-            'LocationSet.ID:GreaterThan' => 0,
218
-        ]);
219
-    }
220
-
221
-    /**
222
-     * Gets the path of the info window template
223
-     *
224
-     * @return string
225
-     */
226
-    public function getInfoWindowTemplate()
227
-    {
228
-        return ModuleResourceLoader::singleton()->resolveURL(
229
-            Config::inst()->get(
230
-                Locator::class,
231
-                'infoWindowTemplate'
232
-            )
233
-        );
234
-    }
235
-
236
-    /**
237
-     * Gets the path of the list template
238
-     *
239
-     * @return string
240
-     */
241
-    public function getListTemplate()
242
-    {
243
-        return ModuleResourceLoader::singleton()->resolveURL(
244
-            Config::inst()->get(
245
-                Locator::class,
246
-                'listTemplate'
247
-            )
248
-        );
249
-    }
250
-
251
-    /**
252
-     * @return null|string
253
-     */
254
-    public function getMapStyle()
255
-    {
256
-        return AddressDataExtension::getMapStyleJSON();
257
-    }
258
-
259
-    public function getMapStyleJSONPath()
260
-    {
261
-        return AddressDataExtension::getMapStyleJSONPath();
262
-    }
263
-
264
-    /**
265
-     * @return null|string
266
-     */
267
-    public function getMarkerIcon()
268
-    {
269
-        return AddressDataExtension::getIconImage();
270
-    }
29
+	/**
30
+	 * @var string
31
+	 */
32
+	private static $singular_name = 'Locator';
33
+
34
+	/**
35
+	 * @var string
36
+	 */
37
+	private static $plural_name = 'Locators';
38
+
39
+	/**
40
+	 * @var string
41
+	 */
42
+	private static $description = 'Display locations on a map';
43
+
44
+	/**
45
+	 * @var array
46
+	 */
47
+	private static $db = array(
48
+		'Unit' => 'Enum("m,km","m")',
49
+	);
50
+
51
+	/**
52
+	 * @var array
53
+	 */
54
+	private static $many_many = array(
55
+		'Categories' => LocationCategory::class,
56
+	);
57
+
58
+	/**
59
+	 * @var string
60
+	 */
61
+	private static $table_name = 'Locator';
62
+
63
+	/**
64
+	 * @var string
65
+	 */
66
+	private static $location_class = Location::class;
67
+
68
+	/**
69
+	 * @return FieldList
70
+	 */
71
+	public function getCMSFields()
72
+	{
73
+		$this->beforeUpdateCMSFields(function ($fields) {
74
+			// Settings
75
+			$fields->addFieldsToTab('Root.Settings', array(
76
+				HeaderField::create('DisplayOptions', 'Display Options', 3),
77
+				OptionsetField::create('Unit', 'Unit of measure', array('m' => 'Miles', 'km' => 'Kilometers')),
78
+			));
79
+
80
+			// Filter categories
81
+			$config = GridFieldConfig_RelationEditor::create();
82
+			$config->removeComponentsByType(GridFieldAddExistingAutocompleter::class);
83
+			$config->addComponent(new GridFieldAddExistingSearchButton());
84
+			$categories = $this->Categories();
85
+			$categoriesField = GridField::create('Categories', 'Categories', $categories, $config)
86
+				->setDescription('only show locations from the selected category');
87
+
88
+			// Filter
89
+			$fields->addFieldsToTab('Root.Filter', array(
90
+				HeaderField::create('CategoryOptionsHeader', 'Location Filtering', 3),
91
+				$categoriesField,
92
+			));
93
+		});
94
+
95
+		return parent::getCMSFields();
96
+	}
97
+
98
+	/**
99
+	 * @param array $filter
100
+	 * @param array $filterAny
101
+	 * @param array $exclude
102
+	 * @param null|callable $callback
103
+	 *
104
+	 * @return DataList|ArrayList
105
+	 */
106
+	public static function get_locations(
107
+		$filter = [],
108
+		$filterAny = [],
109
+		$exclude = [],
110
+		$callback = null
111
+	) {
112
+		$locationClass = Config::inst()->get(Locator::class, 'location_class');
113
+		$locations = $locationClass::get()->filter($filter)->exclude($exclude);
114
+
115
+		if (!empty($filterAny)) {
116
+			$locations = $locations->filterAny($filterAny);
117
+		}
118
+		if (!empty($exclude)) {
119
+			$locations = $locations->exclude($exclude);
120
+		}
121
+
122
+		if ($callback !== null && is_callable($callback)) {
123
+			$locations->filterByCallback($callback);
124
+		}
125
+
126
+		return $locations;
127
+	}
128
+
129
+	/**
130
+	 * @return DataList
131
+	 */
132
+	public static function get_all_categories()
133
+	{
134
+		return LocationCategory::get();
135
+	}
136
+
137
+	/**
138
+	 * @return bool
139
+	 */
140
+	public function getPageCategories()
141
+	{
142
+		return self::locator_categories_by_locator($this->ID);
143
+	}
144
+
145
+	/**
146
+	 * @param int $id
147
+	 *
148
+	 * @return bool|
149
+	 */
150
+	public static function locator_categories_by_locator($id = 0)
151
+	{
152
+		if ($id == 0) {
153
+			return false;
154
+		}
155
+
156
+		return Locator::get()->byID($id)->getUsedCategories();
157
+	}
158
+
159
+	/**
160
+	 * Gets the list of radii
161
+	 *
162
+	 * @return ArrayList
163
+	 */
164
+	public function getRadii()
165
+	{
166
+		$radii = [
167
+			'0' => '25',
168
+			'1' => '50',
169
+			'2' => '75',
170
+			'3' => '100',
171
+		];
172
+		$config_radii = $this->config()->get('radii');
173
+		if ($config_radii) {
174
+			$radii = $config_radii;
175
+		}
176
+
177
+		return $radii;
178
+	}
179
+
180
+	public function getRadiiArrayList()
181
+	{
182
+		$list = [];
183
+
184
+		foreach ($this->getRadii() as $radius) {
185
+			$list[] = new ArrayData(array(
186
+				'Radius' => $radius,
187
+			));
188
+		}
189
+
190
+		return new ArrayList($list);
191
+	}
192
+
193
+	/**
194
+	 * Gets the limit of locations
195
+	 * @return mixed
196
+	 */
197
+	public function getLimit()
198
+	{
199
+		return $this->config()->get('limit');
200
+	}
201
+
202
+	/**
203
+	 * Gets if the radius drop down should be shown
204
+	 * @return mixed
205
+	 */
206
+	public function getShowRadius()
207
+	{
208
+		return $this->config()->get('show_radius');
209
+	}
210
+
211
+	/**
212
+	 * @return mixed
213
+	 */
214
+	public function getUsedCategories()
215
+	{
216
+		return $this->Categories()->filter([
217
+			'LocationSet.ID:GreaterThan' => 0,
218
+		]);
219
+	}
220
+
221
+	/**
222
+	 * Gets the path of the info window template
223
+	 *
224
+	 * @return string
225
+	 */
226
+	public function getInfoWindowTemplate()
227
+	{
228
+		return ModuleResourceLoader::singleton()->resolveURL(
229
+			Config::inst()->get(
230
+				Locator::class,
231
+				'infoWindowTemplate'
232
+			)
233
+		);
234
+	}
235
+
236
+	/**
237
+	 * Gets the path of the list template
238
+	 *
239
+	 * @return string
240
+	 */
241
+	public function getListTemplate()
242
+	{
243
+		return ModuleResourceLoader::singleton()->resolveURL(
244
+			Config::inst()->get(
245
+				Locator::class,
246
+				'listTemplate'
247
+			)
248
+		);
249
+	}
250
+
251
+	/**
252
+	 * @return null|string
253
+	 */
254
+	public function getMapStyle()
255
+	{
256
+		return AddressDataExtension::getMapStyleJSON();
257
+	}
258
+
259
+	public function getMapStyleJSONPath()
260
+	{
261
+		return AddressDataExtension::getMapStyleJSONPath();
262
+	}
263
+
264
+	/**
265
+	 * @return null|string
266
+	 */
267
+	public function getMarkerIcon()
268
+	{
269
+		return AddressDataExtension::getIconImage();
270
+	}
271 271
 }
Please login to merge, or discard this patch.
src/pages/LocatorController.php 2 patches
Indentation   +315 added lines, -315 removed lines patch added patch discarded remove patch
@@ -18,131 +18,131 @@  discard block
 block discarded – undo
18 18
  */
19 19
 class LocatorController extends \PageController
20 20
 {
21
-    /**
22
-     * @var array
23
-     */
24
-    private static $allowed_actions = [
25
-        'xml',
26
-        'json',
27
-    ];
28
-
29
-    /**
30
-     * @var array
31
-     */
32
-    private static $base_filter = [];
33
-
34
-    /**
35
-     * @var array
36
-     */
37
-    private static $base_exclude = [
38
-        'Lat' => 0,
39
-        'Lng' => 0,
40
-    ];
41
-
42
-    /**
43
-     * @var array
44
-     */
45
-    private static $base_filter_any = [];
46
-
47
-    /**
48
-     * @var bool
49
-     */
50
-    private static $bootstrapify = true;
51
-
52
-    /**
53
-     * ID of map container
54
-     *
55
-     * @var string
56
-     */
57
-    private static $map_container = 'map';
58
-
59
-    /**
60
-     * class of location list container
61
-     *
62
-     * @var string
63
-     */
64
-    private static $list_container = 'loc-list';
65
-
66
-    /**
67
-     * GET variable which, if isset, will trigger storeLocator init and return XML
68
-     *
69
-     * @var string
70
-     */
71
-    private static $query_trigger = 'action_doFilterLocations';
72
-
73
-    /**
74
-     * @var DataList|ArrayList
75
-     */
76
-    protected $locations;
77
-
78
-    /**
79
-     * Set Requirements based on input from CMS
80
-     */
81
-    public function init()
82
-    {
83
-        parent::init();
84
-        // google maps api key
85
-        $key = Config::inst()->get(GoogleGeocoder::class, 'geocoder_api_key');
86
-        Requirements::javascript('https://maps.google.com/maps/api/js?key=' . $key);
87
-
88
-        // prevent init of map if no query
89
-        $request = Controller::curr()->getRequest();
90
-
91
-        if ($this->getTrigger($request)) {
92
-            $locations = $this->getLocations();
93
-
94
-            if ($locations) {
95
-                $featuredInList = ($locations->filter('Featured', true)->count() > 0);
96
-                $defaultCoords = $this->getAddressSearchCoords() ?
97
-                    $this->getAddressSearchCoords() :
98
-                    new ArrayData([
99
-                        "Lat" => 0,
100
-                        "Lng" => 0,
101
-                    ]);
102
-
103
-                $featured = $featuredInList
104
-                    ? 'featuredLocations: true'
105
-                    : 'featuredLocations: false';
106
-
107
-                // map config based on user input in Settings tab
108
-                $limit = Config::inst()->get(LocatorController::class, 'limit');
109
-                if ($limit < 1) {
110
-                    $limit = -1;
111
-                }
112
-                $load = 'fullMapStart: true, storeLimit: ' . $limit . ', maxDistance: true,';
113
-
114
-                $listTemplatePath = $this->getListTemplate();
115
-                $infowindowTemplatePath = $this->getInfoWindowTemplate();
116
-
117
-                $kilometer = ($this->data()->Unit == 'km') ? "lengthUnit: 'km'" : "lengthUnit: 'm'";
118
-
119
-                // pass GET variables to xml action
120
-                $vars = $this->request->getVars();
121
-                unset($vars['url']);
122
-                $url = '';
123
-                if (count($vars)) {
124
-                    $url .= '?' . http_build_query($vars);
125
-                }
126
-                $link = Controller::join_links($this->Link(), 'xml.xml', $url);
127
-
128
-                // containers
129
-                $map_id = Config::inst()->get(LocatorController::class, 'map_container');
130
-                $list_class = Config::inst()->get(LocatorController::class, 'list_container');
131
-
132
-                $mapStyle = '';
133
-                if ($stylePath = $this->getMapStyleJSONPath()) {
134
-                    if ($style = file_get_contents($stylePath)) {
135
-                        $mapStyle = "styles: {$style},";
136
-                    }
137
-                };
138
-
139
-                $markerImage = '';
140
-                if ($imagePath = $this->getMarkerIcon()) {
141
-                    $markerImage = "markerImg: '{$imagePath}',";
142
-                }
143
-
144
-                // init map
145
-                Requirements::customScript("
21
+	/**
22
+	 * @var array
23
+	 */
24
+	private static $allowed_actions = [
25
+		'xml',
26
+		'json',
27
+	];
28
+
29
+	/**
30
+	 * @var array
31
+	 */
32
+	private static $base_filter = [];
33
+
34
+	/**
35
+	 * @var array
36
+	 */
37
+	private static $base_exclude = [
38
+		'Lat' => 0,
39
+		'Lng' => 0,
40
+	];
41
+
42
+	/**
43
+	 * @var array
44
+	 */
45
+	private static $base_filter_any = [];
46
+
47
+	/**
48
+	 * @var bool
49
+	 */
50
+	private static $bootstrapify = true;
51
+
52
+	/**
53
+	 * ID of map container
54
+	 *
55
+	 * @var string
56
+	 */
57
+	private static $map_container = 'map';
58
+
59
+	/**
60
+	 * class of location list container
61
+	 *
62
+	 * @var string
63
+	 */
64
+	private static $list_container = 'loc-list';
65
+
66
+	/**
67
+	 * GET variable which, if isset, will trigger storeLocator init and return XML
68
+	 *
69
+	 * @var string
70
+	 */
71
+	private static $query_trigger = 'action_doFilterLocations';
72
+
73
+	/**
74
+	 * @var DataList|ArrayList
75
+	 */
76
+	protected $locations;
77
+
78
+	/**
79
+	 * Set Requirements based on input from CMS
80
+	 */
81
+	public function init()
82
+	{
83
+		parent::init();
84
+		// google maps api key
85
+		$key = Config::inst()->get(GoogleGeocoder::class, 'geocoder_api_key');
86
+		Requirements::javascript('https://maps.google.com/maps/api/js?key=' . $key);
87
+
88
+		// prevent init of map if no query
89
+		$request = Controller::curr()->getRequest();
90
+
91
+		if ($this->getTrigger($request)) {
92
+			$locations = $this->getLocations();
93
+
94
+			if ($locations) {
95
+				$featuredInList = ($locations->filter('Featured', true)->count() > 0);
96
+				$defaultCoords = $this->getAddressSearchCoords() ?
97
+					$this->getAddressSearchCoords() :
98
+					new ArrayData([
99
+						"Lat" => 0,
100
+						"Lng" => 0,
101
+					]);
102
+
103
+				$featured = $featuredInList
104
+					? 'featuredLocations: true'
105
+					: 'featuredLocations: false';
106
+
107
+				// map config based on user input in Settings tab
108
+				$limit = Config::inst()->get(LocatorController::class, 'limit');
109
+				if ($limit < 1) {
110
+					$limit = -1;
111
+				}
112
+				$load = 'fullMapStart: true, storeLimit: ' . $limit . ', maxDistance: true,';
113
+
114
+				$listTemplatePath = $this->getListTemplate();
115
+				$infowindowTemplatePath = $this->getInfoWindowTemplate();
116
+
117
+				$kilometer = ($this->data()->Unit == 'km') ? "lengthUnit: 'km'" : "lengthUnit: 'm'";
118
+
119
+				// pass GET variables to xml action
120
+				$vars = $this->request->getVars();
121
+				unset($vars['url']);
122
+				$url = '';
123
+				if (count($vars)) {
124
+					$url .= '?' . http_build_query($vars);
125
+				}
126
+				$link = Controller::join_links($this->Link(), 'xml.xml', $url);
127
+
128
+				// containers
129
+				$map_id = Config::inst()->get(LocatorController::class, 'map_container');
130
+				$list_class = Config::inst()->get(LocatorController::class, 'list_container');
131
+
132
+				$mapStyle = '';
133
+				if ($stylePath = $this->getMapStyleJSONPath()) {
134
+					if ($style = file_get_contents($stylePath)) {
135
+						$mapStyle = "styles: {$style},";
136
+					}
137
+				};
138
+
139
+				$markerImage = '';
140
+				if ($imagePath = $this->getMarkerIcon()) {
141
+					$markerImage = "markerImg: '{$imagePath}',";
142
+				}
143
+
144
+				// init map
145
+				Requirements::customScript("
146 146
                 $(function(){
147 147
                     $('#map-container').storeLocator({
148 148
                         {$load}
@@ -171,194 +171,194 @@  discard block
 block discarded – undo
171 171
                     });
172 172
                 });
173 173
             ", 'jquery-locator');
174
-            }
175
-        }
176
-    }
177
-
178
-    /**
179
-     * @param HTTPRequest $request
180
-     *
181
-     * @return bool
182
-     */
183
-    public function getTrigger(HTTPRequest $request = null)
184
-    {
185
-        if ($request === null) {
186
-            $request = $this->getRequest();
187
-        }
188
-        $trigger = $request->getVar(Config::inst()->get(LocatorController::class, 'query_trigger'));
189
-
190
-        return isset($trigger);
191
-    }
192
-
193
-    /**
194
-     * @return ArrayList|DataList
195
-     */
196
-    public function getLocations()
197
-    {
198
-        if (!$this->locations) {
199
-            $this->setLocations($this->request);
200
-        }
201
-
202
-        return $this->locations;
203
-    }
204
-
205
-    /**
206
-     * @param HTTPRequest|null $request
207
-     *
208
-     * @return $this
209
-     */
210
-    public function setLocations(HTTPRequest $request = null)
211
-    {
212
-
213
-        if ($request === null) {
214
-            $request = $this->request;
215
-        }
216
-        $filter = $this->config()->get('base_filter');
217
-
218
-        $categoryVar = Config::inst()->get(Locator::class, 'category_var');
219
-        if ($request->getVar($categoryVar)) {
220
-            $filter['Categories.ID'] = $request->getVar($categoryVar);
221
-        } else {
222
-            if ($this->getPageCategories()->exists()) {
223
-                foreach ($this->getPageCategories() as $category) {
224
-                    $filter['Categories.ID'][] = $category->ID;
225
-                }
226
-            }
227
-        }
228
-
229
-        $this->extend('updateLocatorFilter', $filter, $request);
230
-
231
-        $filterAny = $this->config()->get('base_filter_any');
232
-        $this->extend('updateLocatorFilterAny', $filterAny, $request);
233
-
234
-        $exclude = $this->config()->get('base_exclude');
235
-        $this->extend('updateLocatorExclude', $exclude, $request);
236
-
237
-        $locations = Locator::get_locations($filter, $filterAny, $exclude);
238
-        $locations = DataToArrayListHelper::to_array_list($locations);
239
-
240
-        //allow for adjusting list post possible distance calculation
241
-        $this->extend('updateLocationList', $locations);
242
-
243
-        if ($locations->canSortBy('Distance')) {
244
-            $locations = $locations->sort('Distance');
245
-        }
246
-
247
-        if ($this->getShowRadius()) {
248
-            $radiusVar = Config::inst()->get(Locator::class, 'radius_var');
249
-
250
-            if ($radius = (int)$request->getVar($radiusVar)) {
251
-                $locations = $locations->filterByCallback(function ($location) use (&$radius) {
252
-                    return $location->Distance <= $radius;
253
-                });
254
-            }
255
-        }
256
-
257
-        //allow for returning list to be set as
258
-        $this->extend('updateListType', $locations);
259
-
260
-        $limit = $this->getLimit();
261
-        if ($limit > 0) {
262
-            $locations = $locations->limit($limit);
263
-        }
264
-
265
-        $this->locations = $locations;
266
-
267
-        return $this;
268
-    }
269
-
270
-    /**
271
-     * @return ArrayData|boolean
272
-     */
273
-    public function getAddressSearchCoords()
274
-    {
275
-        $addressVar = Config::inst()->get(DistanceDataExtension::class, 'address_var');
276
-        if (!$this->request->getVar($addressVar)) {
277
-            return false;
278
-        }
279
-        if (class_exists(GoogleGeocoder::class)) {
280
-            $geocoder = new GoogleGeocoder($this->request->getVar($addressVar));
281
-            $response = $geocoder->getResult();
282
-            $lat = $response->getLatitude();
283
-            $lng = $response->getLongitude();
284
-
285
-            return new ArrayData([
286
-                "Lat" => $lat,
287
-                "Lng" => $lng,
288
-            ]);
289
-        }
290
-    }
291
-
292
-    /**
293
-     * @param HTTPRequest $request
294
-     *
295
-     * @return \SilverStripe\View\ViewableData_Customised
296
-     */
297
-    public function index(HTTPRequest $request)
298
-    {
299
-        if ($this->getTrigger($request)) {
300
-            $locations = $this->getLocations();
301
-        } else {
302
-            $locations = ArrayList::create();
303
-        }
304
-
305
-        return $this->customise(array(
306
-            'Locations' => $locations,
307
-        ));
308
-    }
309
-
310
-    /**
311
-     * Renders locations in xml format
312
-     *
313
-     * @return \SilverStripe\ORM\FieldType\DBHTMLText
314
-     */
315
-    public function xml()
316
-    {
317
-        $this->getResponse()->addHeader("Content-Type", "application/xml");
318
-        $data = new ArrayData(array(
319
-            "Locations" => $this->getLocations(),
320
-            "AddressCoords" => $this->getAddressSearchCoords(),
321
-        ));
322
-
323
-        return $data->renderWith('Dynamic/Locator/Data/XML');
324
-    }
325
-
326
-    /**
327
-     * Renders locations in json format
328
-     *
329
-     * @return \SilverStripe\ORM\FieldType\DBHTMLText
330
-     */
331
-    public function json()
332
-    {
333
-        $this->getResponse()->addHeader("Content-Type", "application/json");
334
-        $data = new ArrayData(array(
335
-            "Locations" => $this->getLocations(),
336
-            "AddressCoords" => $this->getAddressSearchCoords(),
337
-        ));
338
-
339
-        return $data->renderWith('Dynamic/Locator/Data/JSON');
340
-    }
341
-
342
-    /**
343
-     * LocationSearch form.
344
-     *
345
-     * Search form for locations, updates map and results list via AJAX
346
-     *
347
-     * @return \SilverStripe\Forms\Form
348
-     */
349
-    public function LocationSearch()
350
-    {
351
-
352
-        $form = LocatorForm::create($this, 'LocationSearch');
353
-        if (class_exists(BootstrapForm::class) && $this->config()->get('bootstrapify')) {
354
-            $form->Fields()->bootstrapify();
355
-            $form->Actions()->bootstrapify();
356
-        }
357
-
358
-        return $form
359
-            ->setFormMethod('GET')
360
-            ->setFormAction($this->Link())
361
-            ->disableSecurityToken()
362
-            ->loadDataFrom($this->request->getVars());
363
-    }
174
+			}
175
+		}
176
+	}
177
+
178
+	/**
179
+	 * @param HTTPRequest $request
180
+	 *
181
+	 * @return bool
182
+	 */
183
+	public function getTrigger(HTTPRequest $request = null)
184
+	{
185
+		if ($request === null) {
186
+			$request = $this->getRequest();
187
+		}
188
+		$trigger = $request->getVar(Config::inst()->get(LocatorController::class, 'query_trigger'));
189
+
190
+		return isset($trigger);
191
+	}
192
+
193
+	/**
194
+	 * @return ArrayList|DataList
195
+	 */
196
+	public function getLocations()
197
+	{
198
+		if (!$this->locations) {
199
+			$this->setLocations($this->request);
200
+		}
201
+
202
+		return $this->locations;
203
+	}
204
+
205
+	/**
206
+	 * @param HTTPRequest|null $request
207
+	 *
208
+	 * @return $this
209
+	 */
210
+	public function setLocations(HTTPRequest $request = null)
211
+	{
212
+
213
+		if ($request === null) {
214
+			$request = $this->request;
215
+		}
216
+		$filter = $this->config()->get('base_filter');
217
+
218
+		$categoryVar = Config::inst()->get(Locator::class, 'category_var');
219
+		if ($request->getVar($categoryVar)) {
220
+			$filter['Categories.ID'] = $request->getVar($categoryVar);
221
+		} else {
222
+			if ($this->getPageCategories()->exists()) {
223
+				foreach ($this->getPageCategories() as $category) {
224
+					$filter['Categories.ID'][] = $category->ID;
225
+				}
226
+			}
227
+		}
228
+
229
+		$this->extend('updateLocatorFilter', $filter, $request);
230
+
231
+		$filterAny = $this->config()->get('base_filter_any');
232
+		$this->extend('updateLocatorFilterAny', $filterAny, $request);
233
+
234
+		$exclude = $this->config()->get('base_exclude');
235
+		$this->extend('updateLocatorExclude', $exclude, $request);
236
+
237
+		$locations = Locator::get_locations($filter, $filterAny, $exclude);
238
+		$locations = DataToArrayListHelper::to_array_list($locations);
239
+
240
+		//allow for adjusting list post possible distance calculation
241
+		$this->extend('updateLocationList', $locations);
242
+
243
+		if ($locations->canSortBy('Distance')) {
244
+			$locations = $locations->sort('Distance');
245
+		}
246
+
247
+		if ($this->getShowRadius()) {
248
+			$radiusVar = Config::inst()->get(Locator::class, 'radius_var');
249
+
250
+			if ($radius = (int)$request->getVar($radiusVar)) {
251
+				$locations = $locations->filterByCallback(function ($location) use (&$radius) {
252
+					return $location->Distance <= $radius;
253
+				});
254
+			}
255
+		}
256
+
257
+		//allow for returning list to be set as
258
+		$this->extend('updateListType', $locations);
259
+
260
+		$limit = $this->getLimit();
261
+		if ($limit > 0) {
262
+			$locations = $locations->limit($limit);
263
+		}
264
+
265
+		$this->locations = $locations;
266
+
267
+		return $this;
268
+	}
269
+
270
+	/**
271
+	 * @return ArrayData|boolean
272
+	 */
273
+	public function getAddressSearchCoords()
274
+	{
275
+		$addressVar = Config::inst()->get(DistanceDataExtension::class, 'address_var');
276
+		if (!$this->request->getVar($addressVar)) {
277
+			return false;
278
+		}
279
+		if (class_exists(GoogleGeocoder::class)) {
280
+			$geocoder = new GoogleGeocoder($this->request->getVar($addressVar));
281
+			$response = $geocoder->getResult();
282
+			$lat = $response->getLatitude();
283
+			$lng = $response->getLongitude();
284
+
285
+			return new ArrayData([
286
+				"Lat" => $lat,
287
+				"Lng" => $lng,
288
+			]);
289
+		}
290
+	}
291
+
292
+	/**
293
+	 * @param HTTPRequest $request
294
+	 *
295
+	 * @return \SilverStripe\View\ViewableData_Customised
296
+	 */
297
+	public function index(HTTPRequest $request)
298
+	{
299
+		if ($this->getTrigger($request)) {
300
+			$locations = $this->getLocations();
301
+		} else {
302
+			$locations = ArrayList::create();
303
+		}
304
+
305
+		return $this->customise(array(
306
+			'Locations' => $locations,
307
+		));
308
+	}
309
+
310
+	/**
311
+	 * Renders locations in xml format
312
+	 *
313
+	 * @return \SilverStripe\ORM\FieldType\DBHTMLText
314
+	 */
315
+	public function xml()
316
+	{
317
+		$this->getResponse()->addHeader("Content-Type", "application/xml");
318
+		$data = new ArrayData(array(
319
+			"Locations" => $this->getLocations(),
320
+			"AddressCoords" => $this->getAddressSearchCoords(),
321
+		));
322
+
323
+		return $data->renderWith('Dynamic/Locator/Data/XML');
324
+	}
325
+
326
+	/**
327
+	 * Renders locations in json format
328
+	 *
329
+	 * @return \SilverStripe\ORM\FieldType\DBHTMLText
330
+	 */
331
+	public function json()
332
+	{
333
+		$this->getResponse()->addHeader("Content-Type", "application/json");
334
+		$data = new ArrayData(array(
335
+			"Locations" => $this->getLocations(),
336
+			"AddressCoords" => $this->getAddressSearchCoords(),
337
+		));
338
+
339
+		return $data->renderWith('Dynamic/Locator/Data/JSON');
340
+	}
341
+
342
+	/**
343
+	 * LocationSearch form.
344
+	 *
345
+	 * Search form for locations, updates map and results list via AJAX
346
+	 *
347
+	 * @return \SilverStripe\Forms\Form
348
+	 */
349
+	public function LocationSearch()
350
+	{
351
+
352
+		$form = LocatorForm::create($this, 'LocationSearch');
353
+		if (class_exists(BootstrapForm::class) && $this->config()->get('bootstrapify')) {
354
+			$form->Fields()->bootstrapify();
355
+			$form->Actions()->bootstrapify();
356
+		}
357
+
358
+		return $form
359
+			->setFormMethod('GET')
360
+			->setFormAction($this->Link())
361
+			->disableSecurityToken()
362
+			->loadDataFrom($this->request->getVars());
363
+	}
364 364
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -7 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
         parent::init();
84 84
         // google maps api key
85 85
         $key = Config::inst()->get(GoogleGeocoder::class, 'geocoder_api_key');
86
-        Requirements::javascript('https://maps.google.com/maps/api/js?key=' . $key);
86
+        Requirements::javascript('https://maps.google.com/maps/api/js?key='.$key);
87 87
 
88 88
         // prevent init of map if no query
89 89
         $request = Controller::curr()->getRequest();
@@ -94,8 +94,7 @@  discard block
 block discarded – undo
94 94
             if ($locations) {
95 95
                 $featuredInList = ($locations->filter('Featured', true)->count() > 0);
96 96
                 $defaultCoords = $this->getAddressSearchCoords() ?
97
-                    $this->getAddressSearchCoords() :
98
-                    new ArrayData([
97
+                    $this->getAddressSearchCoords() : new ArrayData([
99 98
                         "Lat" => 0,
100 99
                         "Lng" => 0,
101 100
                     ]);
@@ -109,7 +108,7 @@  discard block
 block discarded – undo
109 108
                 if ($limit < 1) {
110 109
                     $limit = -1;
111 110
                 }
112
-                $load = 'fullMapStart: true, storeLimit: ' . $limit . ', maxDistance: true,';
111
+                $load = 'fullMapStart: true, storeLimit: '.$limit.', maxDistance: true,';
113 112
 
114 113
                 $listTemplatePath = $this->getListTemplate();
115 114
                 $infowindowTemplatePath = $this->getInfoWindowTemplate();
@@ -121,7 +120,7 @@  discard block
 block discarded – undo
121 120
                 unset($vars['url']);
122 121
                 $url = '';
123 122
                 if (count($vars)) {
124
-                    $url .= '?' . http_build_query($vars);
123
+                    $url .= '?'.http_build_query($vars);
125 124
                 }
126 125
                 $link = Controller::join_links($this->Link(), 'xml.xml', $url);
127 126
 
@@ -247,8 +246,8 @@  discard block
 block discarded – undo
247 246
         if ($this->getShowRadius()) {
248 247
             $radiusVar = Config::inst()->get(Locator::class, 'radius_var');
249 248
 
250
-            if ($radius = (int)$request->getVar($radiusVar)) {
251
-                $locations = $locations->filterByCallback(function ($location) use (&$radius) {
249
+            if ($radius = (int) $request->getVar($radiusVar)) {
250
+                $locations = $locations->filterByCallback(function($location) use (&$radius) {
252 251
                     return $location->Distance <= $radius;
253 252
                 });
254 253
             }
Please login to merge, or discard this patch.
src/bulkloader/LocationCsvBulkLoader.php 1 patch
Indentation   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -11,27 +11,27 @@  discard block
 block discarded – undo
11 11
 class LocationCsvBulkLoader extends CsvBulkLoader
12 12
 {
13 13
 
14
-    /**
15
-     * @var array
16
-     */
17
-    public $columnMap = array(
18
-        'Name' => 'Title',
19
-        'City' => 'Suburb',
20
-        'EmailAddress' => 'Email',
21
-        'Import_ID' => 'Import_ID',
22
-    );
23
-
24
-    /**
25
-     * @var array
26
-     */
27
-    public $duplicateChecks = array(
28
-        'Import_ID' => 'Import_ID'
29
-    );
30
-
31
-    /**
32
-     * @var array
33
-     */
34
-    /*
14
+	/**
15
+	 * @var array
16
+	 */
17
+	public $columnMap = array(
18
+		'Name' => 'Title',
19
+		'City' => 'Suburb',
20
+		'EmailAddress' => 'Email',
21
+		'Import_ID' => 'Import_ID',
22
+	);
23
+
24
+	/**
25
+	 * @var array
26
+	 */
27
+	public $duplicateChecks = array(
28
+		'Import_ID' => 'Import_ID'
29
+	);
30
+
31
+	/**
32
+	 * @var array
33
+	 */
34
+	/*
35 35
     public $relationCallbacks = array(
36 36
        'Category.Name' => array(
37 37
            'relationname' => 'Category',
@@ -39,22 +39,22 @@  discard block
 block discarded – undo
39 39
         ),
40 40
     );*/
41 41
 
42
-    /**
43
-     * @param $obj
44
-     * @param $val
45
-     * @param $record
46
-     * @return \SilverStripe\ORM\DataObject|static
47
-     */
48
-    public static function getCategoryByName(&$obj, $val, $record)
49
-    {
50
-        $val = Convert::raw2sql($val);
51
-        $category = LocationCategory::get()->filter(array('Name' => $val))->First();
52
-        if (!$category) {
53
-            $category = LocationCategory::create();
54
-            $category->Name = $val;
55
-            $category->write();
56
-        }
57
-
58
-        return $category;
59
-    }
42
+	/**
43
+	 * @param $obj
44
+	 * @param $val
45
+	 * @param $record
46
+	 * @return \SilverStripe\ORM\DataObject|static
47
+	 */
48
+	public static function getCategoryByName(&$obj, $val, $record)
49
+	{
50
+		$val = Convert::raw2sql($val);
51
+		$category = LocationCategory::get()->filter(array('Name' => $val))->First();
52
+		if (!$category) {
53
+			$category = LocationCategory::create();
54
+			$category->Name = $val;
55
+			$category->write();
56
+		}
57
+
58
+		return $category;
59
+	}
60 60
 }
Please login to merge, or discard this patch.