Passed
Push — v3 ( 0924cc...a9bf7a )
by Andrew
34:45 queued 22:10
created

actionFrontendTemplateContainer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
c 0
b 0
f 0
nc 1
nop 3
dl 0
loc 17
ccs 0
cts 15
cp 0
crap 2
rs 9.9666
1
<?php
2
/**
3
 * SEOmatic plugin for Craft CMS 3.x
4
 *
5
 * @link      https://nystudio107.com/
6
 * @copyright Copyright (c) 2017 nystudio107
7
 * @license   https://nystudio107.com/license
0 ignored issues
show
Coding Style introduced by
@license tag must contain a URL and a license name
Loading history...
8
 */
9
10
namespace nystudio107\seomatic\controllers;
11
12
use nystudio107\seomatic\Seomatic;
13
use nystudio107\seomatic\helpers\Container as ContainerHelper;
14
use nystudio107\seomatic\models\FrontendTemplateContainer;
15
use nystudio107\seomatic\models\MetaJsonLdContainer;
16
use nystudio107\seomatic\models\MetaLinkContainer;
17
use nystudio107\seomatic\models\MetaScriptContainer;
18
use nystudio107\seomatic\models\MetaSiteVars;
19
use nystudio107\seomatic\models\MetaTitleContainer;
20
use nystudio107\seomatic\models\MetaTagContainer;
21
22
use Craft;
23
use craft\web\Controller;
24
25
use yii\web\Response;
26
use yii\web\JsonResponseFormatter;
27
28
/**
29
 * @author    nystudio107
0 ignored issues
show
Coding Style introduced by
Content of the @author tag must be in the form "Display Name <[email protected]>"
Loading history...
Coding Style introduced by
The tag in position 1 should be the @package tag
Loading history...
30
 * @package   Seomatic
31
 * @since     3.0.0
32
 */
33
class MetaContainerController extends Controller
34
{
35
    // Protected Properties
36
    // =========================================================================
37
38
    /**
39
     * @inheritdoc
40
     */
41
    protected $allowAnonymous = [
42
        'all-meta-containers',
43
        'meta-title-container',
44
        'meta-tag-container',
45
        'meta-link-container',
46
        'meta-script-container',
47
        'meta-json-ld-container',
48
        'meta-site-vars-container',
49
        'frontend-template-container',
50
    ];
51
52
    // Public Methods
53
    // =========================================================================
54
55
    /**
0 ignored issues
show
Coding Style introduced by
Parameter $action should have a doc-comment as per coding-style.
Loading history...
56
     * @inheritDoc
57
     */
58
    public function beforeAction($action)
59
    {
60
        if (!Seomatic::$settings->enableMetaContainerEndpoint) {
61
            $this->allowAnonymous = false;
62
        }
63
64
        return parent::beforeAction($action);
65
    }
66
67
    /**
68
     * Return all of the containers
69
     * URI: /actions/seomatic/meta-container/all-meta-containers?uri=/
70
     *
71
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
72
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
73
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
74
     *
75
     * @return Response
76
     */
77
    public function actionAllMetaContainers(string $uri, int $siteId = null, bool $asArray = false): Response
78
    {
79
        $result = ContainerHelper::getContainerArrays(
80
            [
81
                MetaTitleContainer::CONTAINER_TYPE,
82
                MetaTagContainer::CONTAINER_TYPE,
83
                MetaLinkContainer::CONTAINER_TYPE,
84
                MetaScriptContainer::CONTAINER_TYPE,
85
                MetaJsonLdContainer::CONTAINER_TYPE,
86
                MetaSiteVars::CONTAINER_TYPE,
87
                MetaSiteVars::CONTAINER_TYPE,
88
                FrontendTemplateContainer::CONTAINER_TYPE,
89
                ],
90
            $uri,
91
            $siteId,
92
            $asArray
93
        );
94
        // use "pretty" output in debug mode
95
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
96
            'class' => JsonResponseFormatter::class,
97
            'prettyPrint' => YII_DEBUG,
98
        ];
99
100
        return $this->asJson($result);
101
    }
102
103
    /**
104
     * Return the MetaTitleContainer
105
     * URI: /actions/seomatic/meta-container/meta-title-container?uri=/
106
     *
107
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
108
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
109
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
110
     *
111
     * @return Response
112
     */
113
    public function actionMetaTitleContainer(string $uri, int $siteId = null, bool $asArray = false): Response
114
    {
115
        $result = ContainerHelper::getContainerArrays(
116
            [
117
                MetaTitleContainer::CONTAINER_TYPE,
118
            ],
119
            $uri,
120
            $siteId,
121
            $asArray
122
        );
123
        // use "pretty" output in debug mode
124
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
125
            'class' => JsonResponseFormatter::class,
126
            'prettyPrint' => YII_DEBUG,
127
        ];
128
129
        return $this->asJson($result);
130
    }
131
132
    /**
133
     * Return the MetaTagContainer
134
     * URI: /actions/seomatic/meta-container/meta-tag-container?uri=/
135
     *
136
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
137
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
138
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
139
     *
140
     * @return Response
141
     */
142
    public function actionMetaTagContainer(string $uri, int $siteId = null, bool $asArray = false): Response
143
    {
144
        $result = ContainerHelper::getContainerArrays(
145
            [
146
                MetaTagContainer::CONTAINER_TYPE,
147
            ],
148
            $uri,
149
            $siteId,
150
            $asArray
151
        );
152
        // use "pretty" output in debug mode
153
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
154
            'class' => JsonResponseFormatter::class,
155
            'prettyPrint' => YII_DEBUG,
156
        ];
157
158
        return $this->asJson($result);
159
    }
160
161
    /**
162
     * Return the MetaLinkContainer
163
     * URI: /actions/seomatic/meta-container/meta-link-container?uri=/
164
     *
165
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
166
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
167
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
168
     *
169
     * @return Response
170
     */
171
    public function actionMetaLinkContainer(string $uri, int $siteId = null, bool $asArray = false): Response
172
    {
173
        $result = ContainerHelper::getContainerArrays(
174
            [
175
                MetaLinkContainer::CONTAINER_TYPE,
176
            ],
177
            $uri,
178
            $siteId,
179
            $asArray
180
        );
181
        // use "pretty" output in debug mode
182
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
183
            'class' => JsonResponseFormatter::class,
184
            'prettyPrint' => YII_DEBUG,
185
        ];
186
187
        return $this->asJson($result);
188
    }
189
190
    /**
191
     * Return the MetaScriptContainer
192
     * URI: /actions/seomatic/meta-container/meta-script-container?uri=/
193
     *
194
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
195
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
196
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
197
     *
198
     * @return Response
199
     */
200
    public function actionMetaScriptContainer(string $uri, int $siteId = null, bool $asArray = false): Response
201
    {
202
        $result = ContainerHelper::getContainerArrays(
203
            [
204
                MetaScriptContainer::CONTAINER_TYPE,
205
            ],
206
            $uri,
207
            $siteId,
208
            $asArray
209
        );
210
        // use "pretty" output in debug mode
211
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
212
            'class' => JsonResponseFormatter::class,
213
            'prettyPrint' => YII_DEBUG,
214
        ];
215
216
        return $this->asJson($result);
217
    }
218
219
    /**
220
     * Return the MetaJsonLdContainer
221
     * URI: /actions/seomatic/meta-container/meta-json-ld-container?uri=/
222
     *
223
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
224
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
225
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
226
     *
227
     * @return Response
228
     */
229
    public function actionMetaJsonLdContainer(string $uri, int $siteId = null, bool $asArray = false): Response
230
    {
231
        $result = ContainerHelper::getContainerArrays(
232
            [
233
                MetaJsonLdContainer::CONTAINER_TYPE,
234
            ],
235
            $uri,
236
            $siteId,
237
            $asArray
238
        );
239
        // use "pretty" output in debug mode
240
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
241
            'class' => JsonResponseFormatter::class,
242
            'prettyPrint' => YII_DEBUG,
243
        ];
244
245
        return $this->asJson($result);
246
    }
247
248
    /**
249
     * Return the MetaSiteVars "container"
250
     * URI: /actions/seomatic/meta-container/meta-site-vars-container?uri=/
251
     *
252
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
253
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
254
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
255
     *
256
     * @return Response
257
     */
258
    public function actionMetaSiteVarsContainer(string $uri, int $siteId = null, bool $asArray = false): Response
259
    {
260
        $result = ContainerHelper::getContainerArrays(
261
            [
262
                MetaSiteVars::CONTAINER_TYPE,
263
            ],
264
            $uri,
265
            $siteId,
266
            $asArray
267
        );
268
        // use "pretty" output in debug mode
269
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
270
            'class' => JsonResponseFormatter::class,
271
            'prettyPrint' => YII_DEBUG,
272
        ];
273
274
        return $this->asJson($result);
275
    }
276
277
    /**
278
     * Return the FrontendTemplateContainer "container"
279
     * URI: /actions/seomatic/meta-container/frontend-template-container?uri=/
280
     *
281
     * @param string $uri
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
282
     * @param int    $siteId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
283
     * @param bool   $asArray
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
284
     *
285
     * @return Response
286
     */
287
    public function actionFrontendTemplateContainer(string $uri, int $siteId = null, bool $asArray = false): Response
288
    {
289
        $result = ContainerHelper::getContainerArrays(
290
            [
291
                FrontendTemplateContainer::CONTAINER_TYPE,
292
            ],
293
            $uri,
294
            $siteId,
295
            $asArray
296
        );
297
        // use "pretty" output in debug mode
298
        Craft::$app->response->formatters[Response::FORMAT_JSON] = [
299
            'class' => JsonResponseFormatter::class,
300
            'prettyPrint' => YII_DEBUG,
301
        ];
302
303
        return $this->asJson($result);
304
    }
305
306
}
307