Issues (3641)

src/Spryker/Zed/Cms/Business/Page/CmsPageSaver.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace Spryker\Zed\Cms\Business\Page;
9
10
use Generated\Shared\Transfer\CmsPageAttributesTransfer;
11
use Generated\Shared\Transfer\CmsPageMetaAttributesTransfer;
12
use Generated\Shared\Transfer\CmsPageTransfer;
13
use Generated\Shared\Transfer\UrlTransfer;
14
use Orm\Zed\Cms\Persistence\SpyCmsPage;
15
use Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes;
16
use Orm\Zed\Url\Persistence\SpyUrl;
17
use Spryker\Shared\Cms\CmsConstants;
18
use Spryker\Zed\Cms\Business\Exception\MissingPageException;
19
use Spryker\Zed\Cms\Business\Mapping\CmsGlossarySaverInterface;
20
use Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationWriterInterface;
21
use Spryker\Zed\Cms\Business\Template\TemplateManagerInterface;
22
use Spryker\Zed\Cms\Dependency\Facade\CmsToTouchFacadeInterface;
23
use Spryker\Zed\Cms\Dependency\Facade\CmsToUrlFacadeInterface;
24
use Spryker\Zed\Cms\Persistence\CmsQueryContainerInterface;
25
use Throwable;
26
27
class CmsPageSaver implements CmsPageSaverInterface
28
{
29
    /**
30
     * @var \Spryker\Zed\Cms\Dependency\Facade\CmsToUrlFacadeInterface
31
     */
32
    protected $urlFacade;
33
34
    /**
35
     * @var \Spryker\Zed\Cms\Dependency\Facade\CmsToTouchFacadeInterface
36
     */
37
    protected $touchFacade;
38
39
    /**
40
     * @var \Spryker\Zed\Cms\Persistence\CmsQueryContainerInterface
41
     */
42
    protected $cmsQueryContainer;
43
44
    /**
45
     * @var \Spryker\Zed\Cms\Business\Page\CmsPageUrlBuilderInterface
46
     */
47
    protected $cmsPageUrlBuilder;
48
49
    /**
50
     * @var \Spryker\Zed\Cms\Business\Mapping\CmsGlossarySaverInterface
51
     */
52
    protected $cmsGlossarySaver;
53
54
    /**
55
     * @var \Spryker\Zed\Cms\Business\Template\TemplateManagerInterface
56
     */
57
    protected $templateManager;
58
59
    /**
60
     * @var \Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationWriterInterface
61
     */
62
    protected $cmsPageStoreRelationWriter;
63
64
    /**
65
     * @param \Spryker\Zed\Cms\Dependency\Facade\CmsToUrlFacadeInterface $urlFacade
66
     * @param \Spryker\Zed\Cms\Dependency\Facade\CmsToTouchFacadeInterface $touchFacade
67
     * @param \Spryker\Zed\Cms\Persistence\CmsQueryContainerInterface $cmsQueryContainer
68
     * @param \Spryker\Zed\Cms\Business\Page\CmsPageUrlBuilderInterface $cmsPageUrlBuilder
69
     * @param \Spryker\Zed\Cms\Business\Mapping\CmsGlossarySaverInterface $cmsGlossarySaver
70
     * @param \Spryker\Zed\Cms\Business\Template\TemplateManagerInterface $templateManager
71
     * @param \Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationWriterInterface $cmsPageStoreRelationWriter
72
     */
73
    public function __construct(
74
        CmsToUrlFacadeInterface $urlFacade,
75
        CmsToTouchFacadeInterface $touchFacade,
76
        CmsQueryContainerInterface $cmsQueryContainer,
77
        CmsPageUrlBuilderInterface $cmsPageUrlBuilder,
78
        CmsGlossarySaverInterface $cmsGlossarySaver,
79
        TemplateManagerInterface $templateManager,
80
        CmsPageStoreRelationWriterInterface $cmsPageStoreRelationWriter
81
    ) {
82
        $this->urlFacade = $urlFacade;
83
        $this->touchFacade = $touchFacade;
84
        $this->cmsQueryContainer = $cmsQueryContainer;
85
        $this->cmsPageUrlBuilder = $cmsPageUrlBuilder;
86
        $this->cmsGlossarySaver = $cmsGlossarySaver;
87
        $this->templateManager = $templateManager;
88
        $this->cmsPageStoreRelationWriter = $cmsPageStoreRelationWriter;
89
    }
90
91
    /**
92
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
93
     *
94
     * @throws \Throwable
95
     *
96
     * @return int
97
     */
98
    public function createPage(CmsPageTransfer $cmsPageTransfer): int
99
    {
100
        try {
101
            $cmsPageTransfer->requirePageAttributes();
102
            $this->checkTemplateFileExists($cmsPageTransfer->getFkTemplate());
103
104
            $this->cmsQueryContainer->getConnection()->beginTransaction();
105
106
            $cmsPageEntity = $this->createCmsPageEntity();
107
            $cmsPageEntity = $this->mapCmsPageEntity($cmsPageTransfer, $cmsPageEntity);
108
            $cmsPageEntity->save();
109
110
            $this->persistStoreRelation($cmsPageTransfer, $cmsPageEntity->getIdCmsPage());
111
112
            $localizedAttributeEntities = [];
113
            foreach ($cmsPageTransfer->getPageAttributes() as $cmsPageAttributesTransfer) {
114
                $cmsPageLocalizedAttributesEntity = $this->createLocalizedAttributes($cmsPageAttributesTransfer, $cmsPageEntity);
115
                $localizedAttributeEntities[$cmsPageAttributesTransfer->getFkLocale()] = $cmsPageLocalizedAttributesEntity;
116
            }
117
118
            $this->saveCmsPageLocalizedMetaAttributes($cmsPageTransfer, $localizedAttributeEntities);
119
120
            $this->cmsQueryContainer->getConnection()->commit();
121
        } catch (Throwable $exception) {
122
            $this->cmsQueryContainer->getConnection()->rollBack();
123
124
            throw $exception;
125
        }
126
127
        return $cmsPageEntity->getIdCmsPage();
128
    }
129
130
    /**
131
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
132
     *
133
     * @throws \Throwable
134
     * @throws \Spryker\Zed\Cms\Business\Exception\MissingPageException
135
     *
136
     * @return \Generated\Shared\Transfer\CmsPageTransfer
137
     */
138
    public function updatePage(CmsPageTransfer $cmsPageTransfer): CmsPageTransfer
139
    {
140
        $cmsPageEntity = $this->getCmsPageEntity($cmsPageTransfer);
141
        $this->checkTemplateFileExists($cmsPageTransfer->getFkTemplate());
142
143
        if ($cmsPageEntity === null) {
144
            throw new MissingPageException(
145
                sprintf(
146
                    'CMS page with id "%d" was not found',
147
                    $cmsPageTransfer->getFkPage(),
148
                ),
149
            );
150
        }
151
152
        try {
153
            $this->cmsQueryContainer->getConnection()->beginTransaction();
154
155
            $cmsPageEntity = $this->mapCmsPageEntity($cmsPageTransfer, $cmsPageEntity);
156
            $cmsPageEntity->save();
157
158
            $this->persistStoreRelation($cmsPageTransfer, $cmsPageEntity->getIdCmsPage());
159
160
            $cmsPageLocalizedAttributesList = $this->createCmsPageLocalizedAttributesList($cmsPageEntity);
161
            $this->updateCmsPageLocalizedAttributes($cmsPageTransfer, $cmsPageLocalizedAttributesList, $cmsPageEntity);
162
            $cmsPageLocalizedAttributesList
163
                = $this->createNewCmsPageLocalizedAttributes($cmsPageTransfer, $cmsPageLocalizedAttributesList, $cmsPageEntity);
164
            $this->updateCmsPageLocalizedMetaAttributes($cmsPageTransfer, $cmsPageLocalizedAttributesList);
165
166
            if ($cmsPageEntity->getIsActive()) {
167
                $this->touchFacade->touchActive(CmsConstants::RESOURCE_TYPE_PAGE, $cmsPageEntity->getIdCmsPage());
168
            }
169
170
            $this->cmsQueryContainer->getConnection()->commit();
171
        } catch (Throwable $exception) {
172
            $this->cmsQueryContainer->getConnection()->rollBack();
173
174
            throw $exception;
175
        }
176
177
        return $cmsPageTransfer;
178
    }
179
180
    /**
181
     * @param int|null $idTemplate
182
     *
183
     * @return void
184
     */
185
    protected function checkTemplateFileExists(?int $idTemplate): void
186
    {
187
        $templateTransfer = $this->templateManager
188
            ->getTemplateById($idTemplate);
0 ignored issues
show
It seems like $idTemplate can also be of type null; however, parameter $idTemplate of Spryker\Zed\Cms\Business...face::getTemplateById() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

188
            ->getTemplateById(/** @scrutinizer ignore-type */ $idTemplate);
Loading history...
189
190
        $this->templateManager
191
            ->checkTemplateFileExists($templateTransfer->getTemplatePath());
192
    }
193
194
    /**
195
     * @param \Generated\Shared\Transfer\CmsPageAttributesTransfer $cmsPageAttributesTransfer
196
     * @param int $idCmsPage
197
     *
198
     * @return void
199
     */
200
    protected function createPageUrl(CmsPageAttributesTransfer $cmsPageAttributesTransfer, int $idCmsPage): void
201
    {
202
        $url = $this->cmsPageUrlBuilder->buildPageUrl($cmsPageAttributesTransfer);
203
204
        $urlTransfer = $this->createUrlTransfer($cmsPageAttributesTransfer, $idCmsPage, $url);
205
206
        $this->urlFacade->createUrl($urlTransfer);
207
    }
208
209
    /**
210
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
211
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
212
     *
213
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPage
214
     */
215
    protected function mapCmsPageEntity(CmsPageTransfer $cmsPageTransfer, SpyCmsPage $cmsPageEntity): SpyCmsPage
216
    {
217
        $cmsPageEntity->fromArray($cmsPageTransfer->toArray());
218
219
        return $cmsPageEntity;
220
    }
221
222
    /**
223
     * @param \Generated\Shared\Transfer\CmsPageAttributesTransfer $cmsPageAttributesTransfer
224
     * @param \Orm\Zed\Url\Persistence\SpyUrl $urlEntity
225
     *
226
     * @return void
227
     */
228
    protected function updatePageUrl(CmsPageAttributesTransfer $cmsPageAttributesTransfer, SpyUrl $urlEntity): void
229
    {
230
        $url = $this->cmsPageUrlBuilder->buildPageUrl($cmsPageAttributesTransfer);
231
232
        if ($urlEntity->getUrl() !== $url) {
233
            $urlTransfer = $this->createUrlTransfer(
234
                $cmsPageAttributesTransfer,
235
                $cmsPageAttributesTransfer->getIdCmsPage(),
236
                $url,
237
            );
238
            $urlTransfer->setIdUrl($urlEntity->getIdUrl());
239
            $this->urlFacade->updateUrl($urlTransfer);
240
        }
241
    }
242
243
    /**
244
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
245
     *
246
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPage|null
247
     */
248
    protected function getCmsPageEntity(CmsPageTransfer $cmsPageTransfer): ?SpyCmsPage
249
    {
250
        $cmsPageEntity = $this->cmsQueryContainer
251
            ->queryPageById($cmsPageTransfer->getFkPage())
252
            ->findOne();
253
254
        return $cmsPageEntity;
255
    }
256
257
    /**
258
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
259
     *
260
     * @return array
261
     */
262
    protected function createCmsPageList(SpyCmsPage $cmsPageEntity): array
263
    {
264
        $cmsPageUrlList = [];
265
        foreach ($cmsPageEntity->getSpyUrls() as $urlEntity) {
266
            $cmsPageUrlList[$urlEntity->getFkLocale()] = $urlEntity;
267
        }
268
269
        return $cmsPageUrlList;
270
    }
271
272
    /**
273
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
274
     *
275
     * @return array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes>
276
     */
277
    protected function createCmsPageLocalizedAttributesList(SpyCmsPage $cmsPageEntity): array
278
    {
279
        $cmsPageLocalizedAttributesList = [];
280
        foreach ($cmsPageEntity->getSpyCmsPageLocalizedAttributess() as $cmsPageLocalizedAttributesEntity) {
281
            $cmsPageLocalizedAttributesList[$cmsPageLocalizedAttributesEntity->getIdCmsPageLocalizedAttributes()] = $cmsPageLocalizedAttributesEntity;
282
        }
283
284
        return $cmsPageLocalizedAttributesList;
285
    }
286
287
    /**
288
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity
289
     * @param \Generated\Shared\Transfer\CmsPageAttributesTransfer $cmsPageAttributesTransfer
290
     *
291
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes
292
     */
293
    protected function mapCmsPageLocalizedAttributes(
294
        SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity,
295
        CmsPageAttributesTransfer $cmsPageAttributesTransfer
296
    ): SpyCmsPageLocalizedAttributes {
297
        $cmsPageLocalizedAttributesEntity->fromArray($cmsPageAttributesTransfer->toArray());
298
299
        return $cmsPageLocalizedAttributesEntity;
300
    }
301
302
    /**
303
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity
304
     * @param \Generated\Shared\Transfer\CmsPageMetaAttributesTransfer $cmsPageMetaAttributesTransfer
305
     *
306
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes
307
     */
308
    protected function mapCmsPageLocalizedMetaAttributes(
309
        SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity,
310
        CmsPageMetaAttributesTransfer $cmsPageMetaAttributesTransfer
311
    ): SpyCmsPageLocalizedAttributes {
312
        $cmsPageLocalizedAttributesEntity->fromArray($cmsPageMetaAttributesTransfer->modifiedToArray());
313
314
        return $cmsPageLocalizedAttributesEntity;
315
    }
316
317
    /**
318
     * @param \Generated\Shared\Transfer\CmsPageAttributesTransfer $cmsPageAttributesTransfer
319
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
320
     *
321
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes
322
     */
323
    protected function createLocalizedAttributes(CmsPageAttributesTransfer $cmsPageAttributesTransfer, SpyCmsPage $cmsPageEntity): SpyCmsPageLocalizedAttributes
324
    {
325
        $cmsPageLocalizedAttributesEntity = $this->createCmsPageLocalizedAttributesEntity();
326
        $cmsPageLocalizedAttributesEntity = $this->mapCmsPageLocalizedAttributes($cmsPageLocalizedAttributesEntity, $cmsPageAttributesTransfer);
327
        $cmsPageLocalizedAttributesEntity->setFkCmsPage($cmsPageEntity->getIdCmsPage());
328
329
        $cmsPageLocalizedAttributesEntity->save();
330
331
        $cmsPageAttributesTransfer->setIdCmsPageLocalizedAttributes(
332
            $cmsPageLocalizedAttributesEntity->getIdCmsPageLocalizedAttributes(),
333
        );
334
335
        $this->createPageUrl($cmsPageAttributesTransfer, $cmsPageEntity->getIdCmsPage());
336
337
        return $cmsPageLocalizedAttributesEntity;
338
    }
339
340
    /**
341
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
342
     * @param array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes> $cmsPageLocalizedAttributesList
343
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
344
     *
345
     * @return void
346
     */
347
    protected function updateCmsPageLocalizedAttributes(
348
        CmsPageTransfer $cmsPageTransfer,
349
        array $cmsPageLocalizedAttributesList,
350
        SpyCmsPage $cmsPageEntity
351
    ): void {
352
        $cmsPageUrlList = $this->createCmsPageList($cmsPageEntity);
353
354
        foreach ($cmsPageTransfer->getPageAttributes() as $cmsPageAttributesTransfer) {
355
            if (!$cmsPageAttributesTransfer->getIdCmsPageLocalizedAttributes()) {
356
                continue;
357
            }
358
            $cmsPageLocalizedAttributesEntity = $cmsPageLocalizedAttributesList[$cmsPageAttributesTransfer->getIdCmsPageLocalizedAttributes()];
359
            $urlEntity = $cmsPageUrlList[$cmsPageAttributesTransfer->getFkLocale()];
360
361
            $cmsPageLocalizedAttributesEntity = $this->mapCmsPageLocalizedAttributes($cmsPageLocalizedAttributesEntity, $cmsPageAttributesTransfer);
362
            $this->updatePageUrl($cmsPageAttributesTransfer, $urlEntity);
363
364
            $cmsPageLocalizedAttributesEntity->save();
365
        }
366
    }
367
368
    /**
369
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
370
     * @param array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes> $cmsPageLocalizedAttributesList
371
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
372
     *
373
     * @return array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes>
374
     */
375
    protected function createNewCmsPageLocalizedAttributes(
376
        CmsPageTransfer $cmsPageTransfer,
377
        array $cmsPageLocalizedAttributesList,
378
        SpyCmsPage $cmsPageEntity
379
    ): array {
380
        foreach ($cmsPageTransfer->getPageAttributes() as $cmsPageAttributesTransfer) {
381
            if (!$cmsPageAttributesTransfer->getIdCmsPageLocalizedAttributes()) {
382
                $cmsPageLocalizedAttributesEntity = $this->createLocalizedAttributes($cmsPageAttributesTransfer, $cmsPageEntity);
383
                $cmsPageLocalizedAttributesList[$cmsPageLocalizedAttributesEntity->getIdCmsPageLocalizedAttributes()]
384
                    = $cmsPageLocalizedAttributesEntity;
385
                $this->updateMetaAttributeWithLocalizedAttributes($cmsPageTransfer, $cmsPageLocalizedAttributesEntity);
386
            }
387
        }
388
389
        return $cmsPageLocalizedAttributesList;
390
    }
391
392
    /**
393
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
394
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity
395
     *
396
     * @return void
397
     */
398
    protected function updateMetaAttributeWithLocalizedAttributes(
399
        CmsPageTransfer $cmsPageTransfer,
400
        SpyCmsPageLocalizedAttributes $cmsPageLocalizedAttributesEntity
401
    ): void {
402
        foreach ($cmsPageTransfer->getMetaAttributes() as $cmsPageMetaAttributesTransfer) {
403
            if ($cmsPageMetaAttributesTransfer->getFkLocale() === $cmsPageLocalizedAttributesEntity->getFkLocale()) {
404
                $cmsPageMetaAttributesTransfer->setIdCmsPageLocalizedAttributes(
405
                    $cmsPageLocalizedAttributesEntity->getIdCmsPageLocalizedAttributes(),
406
                );
407
            }
408
        }
409
    }
410
411
    /**
412
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
413
     * @param array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes> $localizedAttributeEntities
414
     *
415
     * @return void
416
     */
417
    protected function saveCmsPageLocalizedMetaAttributes(CmsPageTransfer $cmsPageTransfer, array $localizedAttributeEntities): void
418
    {
419
        foreach ($cmsPageTransfer->getMetaAttributes() as $cmsPageMetaAttributesTransfer) {
420
            $cmsPageLocalizedAttributesEntity = $localizedAttributeEntities[$cmsPageMetaAttributesTransfer->getFkLocale()];
421
            $cmsPageLocalizedAttributesEntity = $this->mapCmsPageLocalizedMetaAttributes(
422
                $cmsPageLocalizedAttributesEntity,
423
                $cmsPageMetaAttributesTransfer,
424
            );
425
            $cmsPageLocalizedAttributesEntity->save();
426
427
            $cmsPageMetaAttributesTransfer->setIdCmsPageLocalizedAttributes(
428
                $cmsPageLocalizedAttributesEntity->getIdCmsPageLocalizedAttributes(),
429
            );
430
        }
431
    }
432
433
    /**
434
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
435
     * @param array<\Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes> $cmsPageLocalizedAttributesList
436
     *
437
     * @return void
438
     */
439
    protected function updateCmsPageLocalizedMetaAttributes(
440
        CmsPageTransfer $cmsPageTransfer,
441
        array $cmsPageLocalizedAttributesList
442
    ): void {
443
        foreach ($cmsPageTransfer->getMetaAttributes() as $cmsPageMetaAttributesTransfer) {
444
            $cmsPageLocalizedAttributesEntity = $cmsPageLocalizedAttributesList[$cmsPageMetaAttributesTransfer->getIdCmsPageLocalizedAttributes()];
445
446
            $cmsPageLocalizedAttributesEntity = $this->mapCmsPageLocalizedMetaAttributes(
447
                $cmsPageLocalizedAttributesEntity,
448
                $cmsPageMetaAttributesTransfer,
449
            );
450
451
            $cmsPageLocalizedAttributesEntity->save();
452
        }
453
    }
454
455
    /**
456
     * @param \Generated\Shared\Transfer\CmsPageAttributesTransfer $cmsPageAttributesTransfer
457
     * @param int $idCmsPage
458
     * @param string $url
459
     *
460
     * @return \Generated\Shared\Transfer\UrlTransfer
461
     */
462
    protected function createUrlTransfer(CmsPageAttributesTransfer $cmsPageAttributesTransfer, int $idCmsPage, string $url): UrlTransfer
463
    {
464
        $urlTransfer = new UrlTransfer();
465
        $urlTransfer->setUrl($url);
466
        $urlTransfer->setFkLocale($cmsPageAttributesTransfer->getFkLocale());
467
        $urlTransfer->setFkResourcePage($idCmsPage);
468
469
        return $urlTransfer;
470
    }
471
472
    /**
473
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPage
474
     */
475
    protected function createCmsPageEntity(): SpyCmsPage
476
    {
477
        return new SpyCmsPage();
478
    }
479
480
    /**
481
     * @return \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes
482
     */
483
    protected function createCmsPageLocalizedAttributesEntity(): SpyCmsPageLocalizedAttributes
484
    {
485
        return new SpyCmsPageLocalizedAttributes();
486
    }
487
488
    /**
489
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
490
     * @param int $idCmsPage
491
     *
492
     * @return void
493
     */
494
    protected function persistStoreRelation(CmsPageTransfer $cmsPageTransfer, int $idCmsPage): void
495
    {
496
        $storeRelationTransfer = $cmsPageTransfer->getStoreRelation();
497
498
        if ($storeRelationTransfer === null) {
499
            return;
500
        }
501
502
        $storeRelationTransfer->setIdEntity($idCmsPage);
503
        $this->cmsPageStoreRelationWriter->update($storeRelationTransfer);
504
    }
505
}
506