Issues (3641)

Cms/Business/Version/Mapper/VersionDataMapper.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\Version\Mapper;
9
10
use ArrayObject;
11
use Generated\Shared\Transfer\CmsGlossaryAttributesTransfer;
12
use Generated\Shared\Transfer\CmsGlossaryTransfer;
13
use Generated\Shared\Transfer\CmsPageAttributesTransfer;
14
use Generated\Shared\Transfer\CmsPageMetaAttributesTransfer;
15
use Generated\Shared\Transfer\CmsPageTransfer;
16
use Generated\Shared\Transfer\CmsPlaceholderTranslationTransfer;
17
use Generated\Shared\Transfer\CmsTemplateTransfer;
18
use Generated\Shared\Transfer\CmsVersionDataTransfer;
19
use Generated\Shared\Transfer\CmsVersionTransfer;
20
use Generated\Shared\Transfer\StoreRelationTransfer;
21
use Orm\Zed\Cms\Persistence\Base\SpyCmsGlossaryKeyMapping;
22
use Orm\Zed\Cms\Persistence\SpyCmsPage;
23
use Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes;
24
use Orm\Zed\Cms\Persistence\SpyCmsVersion;
25
use Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationReaderInterface;
26
use Spryker\Zed\Cms\Dependency\Service\CmsToUtilEncodingInterface;
27
28
class VersionDataMapper implements VersionDataMapperInterface
29
{
30
    /**
31
     * @var \Spryker\Zed\Cms\Dependency\Service\CmsToUtilEncodingInterface
32
     */
33
    protected $utilEncoding;
34
35
    /**
36
     * @var \Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationReaderInterface
37
     */
38
    protected $cmsPageStoreRelationReader;
39
40
    /**
41
     * @param \Spryker\Zed\Cms\Dependency\Service\CmsToUtilEncodingInterface $utilEncoding
42
     * @param \Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationReaderInterface $cmsPageStoreRelationReader
43
     */
44
    public function __construct(
45
        CmsToUtilEncodingInterface $utilEncoding,
46
        CmsPageStoreRelationReaderInterface $cmsPageStoreRelationReader
47
    ) {
48
        $this->utilEncoding = $utilEncoding;
49
        $this->cmsPageStoreRelationReader = $cmsPageStoreRelationReader;
50
    }
51
52
    /**
53
     * @param \Generated\Shared\Transfer\CmsVersionDataTransfer $cmsVersionDataTransfer
54
     *
55
     * @return string
56
     */
57
    public function mapToJsonData(CmsVersionDataTransfer $cmsVersionDataTransfer): string
58
    {
59
        return $this->utilEncoding->encodeJson($cmsVersionDataTransfer->toArray());
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->utilEncodi...ataTransfer->toArray()) could return the type null which is incompatible with the type-hinted return string. Consider adding an additional type-check to rule them out.
Loading history...
60
    }
61
62
    /**
63
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
64
     *
65
     * @return \Generated\Shared\Transfer\CmsVersionDataTransfer
66
     */
67
    public function mapToCmsVersionDataTransfer(SpyCmsPage $cmsPageEntity): CmsVersionDataTransfer
68
    {
69
        $cmsVersionDataTransfer = new CmsVersionDataTransfer();
70
71
        $cmsTemplateTransfer = $this->mapToCmsTemplateData($cmsPageEntity);
72
        $cmsVersionDataTransfer->setCmsTemplate($cmsTemplateTransfer);
73
74
        $cmsPageTransfer = $this->mapToCmsPageLocalizedAttributesData($cmsPageEntity);
75
        $cmsPageTransfer = $this->mapToCmsPageStoreRelationData($cmsPageTransfer, $cmsPageEntity);
76
        $cmsVersionDataTransfer->setCmsPage($cmsPageTransfer);
77
78
        $cmsGlossaryTransfer = $this->mapToCmsGlossaryKeyMappingsData($cmsPageEntity);
79
        $cmsVersionDataTransfer->setCmsGlossary($cmsGlossaryTransfer);
80
81
        return $cmsVersionDataTransfer;
82
    }
83
84
    /**
85
     * @param \Orm\Zed\Cms\Persistence\SpyCmsVersion $cmsVersionEntity
86
     *
87
     * @return \Generated\Shared\Transfer\CmsVersionTransfer
88
     */
89
    public function mapToCmsVersionTransfer(SpyCmsVersion $cmsVersionEntity): CmsVersionTransfer
90
    {
91
        $cmsVersionTransfer = new CmsVersionTransfer();
92
        $cmsVersionTransfer->fromArray($cmsVersionEntity->toArray(), true);
93
94
        return $cmsVersionTransfer;
95
    }
96
97
    /**
98
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
99
     *
100
     * @return \Generated\Shared\Transfer\CmsTemplateTransfer
101
     */
102
    public function mapToCmsTemplateData(SpyCmsPage $cmsPageEntity): CmsTemplateTransfer
103
    {
104
        $cmsTemplateTransfer = new CmsTemplateTransfer();
105
        $cmsTemplateTransfer->fromArray($cmsPageEntity->getCmsTemplate()->toArray(), true);
106
107
        return $cmsTemplateTransfer;
108
    }
109
110
    /**
111
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
112
     *
113
     * @return \Generated\Shared\Transfer\CmsPageTransfer
114
     */
115
    public function mapToCmsPageLocalizedAttributesData(SpyCmsPage $cmsPageEntity): CmsPageTransfer
116
    {
117
        $cmsPageTransfer = new CmsPageTransfer();
118
        $cmsPageTransfer->fromArray($cmsPageEntity->toArray(), true);
119
        $cmsPageTransfer->setFkPage($cmsPageEntity->getIdCmsPage());
120
        $cmsPageTransfer->setTemplateName($cmsPageEntity->getCmsTemplate()->getTemplateName());
121
122
        foreach ($cmsPageEntity->getSpyCmsPageLocalizedAttributessJoinLocale() as $spyCmsPageLocalizedAttributes) {
123
            $localeName = $spyCmsPageLocalizedAttributes->getLocale()->getLocaleName();
124
            $pageAttributeTransfer = $this->createCmsPageAttributesTransfer($spyCmsPageLocalizedAttributes, $localeName);
125
            $cmsPageTransfer->addPageAttribute($pageAttributeTransfer);
126
            $pageMetaAttributeTransfer = $this->createCmsPageMetaAttributesTransfer($spyCmsPageLocalizedAttributes, $localeName);
127
            $cmsPageTransfer->addMetaAttribute($pageMetaAttributeTransfer);
128
        }
129
130
        return $cmsPageTransfer;
131
    }
132
133
    /**
134
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
135
     *
136
     * @return \Generated\Shared\Transfer\CmsGlossaryTransfer
137
     */
138
    public function mapToCmsGlossaryKeyMappingsData(SpyCmsPage $cmsPageEntity): CmsGlossaryTransfer
139
    {
140
        $cmsGlossaryTransfer = new CmsGlossaryTransfer();
141
142
        foreach ($cmsPageEntity->getSpyCmsGlossaryKeyMappingsJoinGlossaryKey() as $spyCmsGlossaryKeyMapping) {
143
            $cmsGlossaryAttributeTransfer = new CmsGlossaryAttributesTransfer();
144
            $cmsGlossaryAttributeTransfer->setPlaceholder($spyCmsGlossaryKeyMapping->getPlaceholder());
145
            $cmsGlossaryAttributeTransfer->setFkPage($cmsPageEntity->getIdCmsPage());
146
            $cmsGlossaryAttributeTransfer->setTranslationKey($spyCmsGlossaryKeyMapping->getGlossaryKey()->getKey());
147
            $cmsGlossaryAttributeTransfer->setTemplateName($cmsPageEntity->getCmsTemplate()->getTemplateName());
148
            $translations = $this->createCmsPlaceholderTranslationTransfers($spyCmsGlossaryKeyMapping);
149
            $cmsGlossaryAttributeTransfer->setTranslations($translations);
150
            $cmsGlossaryTransfer->addGlossaryAttribute($cmsGlossaryAttributeTransfer);
151
        }
152
153
        return $cmsGlossaryTransfer;
154
    }
155
156
    /**
157
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
158
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPage $cmsPageEntity
159
     *
160
     * @return \Generated\Shared\Transfer\CmsPageTransfer
161
     */
162
    protected function mapToCmsPageStoreRelationData(CmsPageTransfer $cmsPageTransfer, SpyCmsPage $cmsPageEntity): CmsPageTransfer
163
    {
164
        $storeRelationTransfer = $this->cmsPageStoreRelationReader->getStoreRelation(
165
            (new StoreRelationTransfer())->setIdEntity($cmsPageEntity->getIdCmsPage()),
166
        );
167
168
        $cmsPageTransfer->setStoreRelation($storeRelationTransfer);
169
170
        return $cmsPageTransfer;
171
    }
172
173
    /**
174
     * @param \Orm\Zed\Cms\Persistence\Base\SpyCmsGlossaryKeyMapping $spyCmsGlossaryKeyMapping
175
     *
176
     * @return \ArrayObject<int, \Generated\Shared\Transfer\CmsPlaceholderTranslationTransfer>
177
     */
178
    protected function createCmsPlaceholderTranslationTransfers(SpyCmsGlossaryKeyMapping $spyCmsGlossaryKeyMapping): ArrayObject
179
    {
180
        /** @var \ArrayObject<int, \Generated\Shared\Transfer\CmsPlaceholderTranslationTransfer> $cmsGlossaryAttributeTransfers */
181
        $cmsGlossaryAttributeTransfers = new ArrayObject();
182
        foreach ($spyCmsGlossaryKeyMapping->getGlossaryKey()->getSpyGlossaryTranslationsJoinLocale() as $glossaryTranslation) {
183
            $cmsPlaceholderTranslation = new CmsPlaceholderTranslationTransfer();
184
            $cmsPlaceholderTranslation->setTranslation($glossaryTranslation->getValue());
185
            $cmsPlaceholderTranslation->setLocaleName($glossaryTranslation->getLocale()->getLocaleName());
186
            $cmsGlossaryAttributeTransfers[] = $cmsPlaceholderTranslation;
187
        }
188
189
        return $cmsGlossaryAttributeTransfers;
190
    }
191
192
    /**
193
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes $spyCmsPageLocalizedAttributes
194
     * @param string $localeName
195
     *
196
     * @return \Generated\Shared\Transfer\CmsPageAttributesTransfer
197
     */
198
    protected function createCmsPageAttributesTransfer(
199
        SpyCmsPageLocalizedAttributes $spyCmsPageLocalizedAttributes,
200
        string $localeName
201
    ): CmsPageAttributesTransfer {
202
        $pageAttributeTransfer = new CmsPageAttributesTransfer();
203
        $pageAttributeTransfer->setName($spyCmsPageLocalizedAttributes->getName());
204
        $pageAttributeTransfer->setLocaleName($localeName);
205
206
        return $pageAttributeTransfer;
207
    }
208
209
    /**
210
     * @param \Orm\Zed\Cms\Persistence\SpyCmsPageLocalizedAttributes $spyCmsPageLocalizedAttributes
211
     * @param string $localeName
212
     *
213
     * @return \Generated\Shared\Transfer\CmsPageMetaAttributesTransfer
214
     */
215
    protected function createCmsPageMetaAttributesTransfer(
216
        SpyCmsPageLocalizedAttributes $spyCmsPageLocalizedAttributes,
217
        string $localeName
218
    ): CmsPageMetaAttributesTransfer {
219
        $pageMetaAttributeTransfer = new CmsPageMetaAttributesTransfer();
220
        $pageMetaAttributeTransfer->setLocaleName($localeName);
221
        $pageMetaAttributeTransfer->setMetaTitle($spyCmsPageLocalizedAttributes->getMetaTitle());
222
        $pageMetaAttributeTransfer->setMetaDescription($spyCmsPageLocalizedAttributes->getMetaDescription());
223
        $pageMetaAttributeTransfer->setMetaKeywords($spyCmsPageLocalizedAttributes->getMetaKeywords());
224
225
        return $pageMetaAttributeTransfer;
226
    }
227
}
228