1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
* WellCommerce Open-Source E-Commerce Platform |
4
|
|
|
* |
5
|
|
|
* This file is part of the WellCommerce package. |
6
|
|
|
* |
7
|
|
|
* (c) Adam Piotrowski <[email protected]> |
8
|
|
|
* |
9
|
|
|
* For the full copyright and license information, |
10
|
|
|
* please view the LICENSE file that was distributed with this source code. |
11
|
|
|
*/ |
12
|
|
|
|
13
|
|
|
namespace WellCommerce\Bundle\CmsBundle\Entity; |
14
|
|
|
|
15
|
|
|
use Doctrine\Common\Collections\ArrayCollection; |
16
|
|
|
use Doctrine\Common\Collections\Collection; |
17
|
|
|
use Knp\DoctrineBehaviors\Model\Blameable\Blameable; |
18
|
|
|
use Knp\DoctrineBehaviors\Model\Timestampable\Timestampable; |
19
|
|
|
use Knp\DoctrineBehaviors\Model\Translatable\Translatable; |
20
|
|
|
use WellCommerce\Bundle\AppBundle\Entity\ShopCollectionAwareTrait; |
21
|
|
|
use WellCommerce\Bundle\CoreBundle\Doctrine\Behaviours\Identifiable; |
22
|
|
|
use WellCommerce\Bundle\CoreBundle\Doctrine\Behaviours\Sortable; |
23
|
|
|
use WellCommerce\Bundle\CoreBundle\Entity\EntityInterface; |
24
|
|
|
use WellCommerce\Extra\CmsBundle\Entity\PageExtraTrait; |
25
|
|
|
|
26
|
|
|
/** |
27
|
|
|
* Class Page |
28
|
|
|
* |
29
|
|
|
* @author Adam Piotrowski <[email protected]> |
30
|
|
|
*/ |
31
|
|
|
class Page implements EntityInterface |
32
|
|
|
{ |
33
|
|
|
use Identifiable; |
34
|
|
|
use Sortable; |
35
|
|
|
use Translatable; |
36
|
|
|
use Timestampable; |
37
|
|
|
use Blameable; |
38
|
|
|
use ShopCollectionAwareTrait; |
39
|
|
|
use PageExtraTrait; |
40
|
|
|
|
41
|
|
|
protected $publish = true; |
42
|
|
|
protected $section = ''; |
43
|
|
|
protected $redirectType = 1; |
44
|
|
|
protected $redirectUrl = ''; |
45
|
|
|
protected $redirectRoute = ''; |
46
|
|
|
protected $layout = []; |
47
|
|
|
|
48
|
|
|
/** |
49
|
|
|
* @var Page|null |
50
|
|
|
*/ |
51
|
|
|
protected $parent; |
52
|
|
|
|
53
|
|
|
/** |
54
|
|
|
* @var Collection |
55
|
|
|
*/ |
56
|
|
|
protected $clientGroups; |
57
|
|
|
|
58
|
|
|
/** |
59
|
|
|
* @var Collection |
60
|
|
|
*/ |
61
|
|
|
protected $children; |
62
|
|
|
|
63
|
|
|
public function __construct() |
64
|
|
|
{ |
65
|
|
|
$this->clientGroups = new ArrayCollection(); |
66
|
|
|
$this->shops = new ArrayCollection(); |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
public function getPublish(): bool |
70
|
|
|
{ |
71
|
|
|
return $this->publish; |
72
|
|
|
} |
73
|
|
|
|
74
|
|
|
public function setPublish(bool $publish) |
75
|
|
|
{ |
76
|
|
|
$this->publish = $publish; |
77
|
|
|
} |
78
|
|
|
|
79
|
|
|
public function getParent() |
80
|
|
|
{ |
81
|
|
|
return $this->parent; |
82
|
|
|
} |
83
|
|
|
|
84
|
|
|
public function setParent(self $parent = null) |
85
|
|
|
{ |
86
|
|
|
$this->parent = $parent; |
|
|
|
|
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
public function getChildren(): Collection |
90
|
|
|
{ |
91
|
|
|
return $this->children; |
92
|
|
|
} |
93
|
|
|
|
94
|
|
|
public function addChild(self $child) |
95
|
|
|
{ |
96
|
|
|
$this->children[] = $child; |
97
|
|
|
$child->setParent($this); |
98
|
|
|
} |
99
|
|
|
|
100
|
|
|
public function getRedirectRoute() |
101
|
|
|
{ |
102
|
|
|
return $this->redirectRoute; |
103
|
|
|
} |
104
|
|
|
|
105
|
|
|
public function setRedirectRoute($redirectRoute) |
106
|
|
|
{ |
107
|
|
|
$this->redirectRoute = $redirectRoute; |
108
|
|
|
} |
109
|
|
|
|
110
|
|
|
public function getRedirectUrl() |
111
|
|
|
{ |
112
|
|
|
return $this->redirectUrl; |
113
|
|
|
} |
114
|
|
|
|
115
|
|
|
public function setRedirectUrl($redirectUrl) |
116
|
|
|
{ |
117
|
|
|
$this->redirectUrl = $redirectUrl; |
118
|
|
|
} |
119
|
|
|
|
120
|
|
|
public function getClientGroups(): Collection |
121
|
|
|
{ |
122
|
|
|
return $this->clientGroups; |
123
|
|
|
} |
124
|
|
|
|
125
|
|
|
public function setClientGroups(Collection $clientGroups) |
126
|
|
|
{ |
127
|
|
|
$this->clientGroups = $clientGroups; |
128
|
|
|
} |
129
|
|
|
|
130
|
|
|
public function prePersist() |
131
|
|
|
{ |
132
|
|
|
$redirectType = $this->getRedirectType(); |
133
|
|
|
switch ($redirectType) { |
134
|
|
|
case 0: |
135
|
|
|
$this->setRedirectRoute(null); |
136
|
|
|
$this->setRedirectUrl(null); |
137
|
|
|
break; |
138
|
|
|
case 1: |
139
|
|
|
$this->setRedirectRoute(null); |
140
|
|
|
break; |
141
|
|
|
case 2: |
142
|
|
|
$this->setRedirectUrl(null); |
143
|
|
|
break; |
144
|
|
|
} |
145
|
|
|
} |
146
|
|
|
|
147
|
|
|
public function getRedirectType(): int |
148
|
|
|
{ |
149
|
|
|
return $this->redirectType; |
150
|
|
|
} |
151
|
|
|
|
152
|
|
|
public function setRedirectType(int $redirectType) |
153
|
|
|
{ |
154
|
|
|
$this->redirectType = $redirectType; |
155
|
|
|
} |
156
|
|
|
|
157
|
|
|
public function getSection(): string |
158
|
|
|
{ |
159
|
|
|
return $this->section; |
160
|
|
|
} |
161
|
|
|
|
162
|
|
|
public function setSection(string $section) |
163
|
|
|
{ |
164
|
|
|
$this->section = $section; |
165
|
|
|
} |
166
|
|
|
|
167
|
|
|
public function getLayout(): array |
168
|
|
|
{ |
169
|
|
|
return $this->layout; |
170
|
|
|
} |
171
|
|
|
|
172
|
|
|
public function setLayout(array $layout) |
173
|
|
|
{ |
174
|
|
|
$this->layout = $layout; |
175
|
|
|
} |
176
|
|
|
|
177
|
|
|
public function translate($locale = null, $fallbackToDefault = true): PageTranslation |
178
|
|
|
{ |
179
|
|
|
return $this->doTranslate($locale, $fallbackToDefault); |
180
|
|
|
} |
181
|
|
|
} |
182
|
|
|
|
Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly.
For example, imagine you have a variable
$accountId
that can either hold an Id object or false (if there is no account id yet). Your code now assigns that value to theid
property of an instance of theAccount
class. This class holds a proper account, so the id value must no longer be false.Either this assignment is in error or a type check should be added for that assignment.