Test Failed
Push — develop ( 01a8a8...14ce66 )
by Guilherme
65:10
created

CmsUser::loadMetadata()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 211
Code Lines 102

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 211
rs 8.2857
c 0
b 0
f 0
cc 1
eloc 102
nc 1
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\Models\CMS;
6
7
use Doctrine\Common\Collections\ArrayCollection;
8
use Doctrine\ORM\Annotation as ORM;
9
use Doctrine\ORM\Mapping;
10
11
/**
12
 * @ORM\Entity
13
 * @ORM\Table(name="cms_users")
14
 * @ORM\NamedQueries({
15
 *     @ORM\NamedQuery(name="all", query="SELECT u FROM __CLASS__ u")
16
 * })
17
 *
18
 * @ORM\NamedNativeQueries({
19
 *      @ORM\NamedNativeQuery(
20
 *          name           = "fetchIdAndUsernameWithResultClass",
21
 *          resultClass    = "CmsUser",
22
 *          query          = "SELECT id, username FROM cms_users WHERE username = ?"
23
 *      ),
24
 *      @ORM\NamedNativeQuery(
25
 *          name           = "fetchAllColumns",
26
 *          resultClass    = "CmsUser",
27
 *          query          = "SELECT * FROM cms_users WHERE username = ?"
28
 *      ),
29
 *      @ORM\NamedNativeQuery(
30
 *          name            = "fetchJoinedAddress",
31
 *          resultSetMapping= "mappingJoinedAddress",
32
 *          query           = "SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?"
33
 *      ),
34
 *      @ORM\NamedNativeQuery(
35
 *          name            = "fetchJoinedPhonenumber",
36
 *          resultSetMapping= "mappingJoinedPhonenumber",
37
 *          query           = "SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?"
38
 *      ),
39
 *      @ORM\NamedNativeQuery(
40
 *          name            = "fetchUserPhonenumberCount",
41
 *          resultSetMapping= "mappingUserPhonenumberCount",
42
 *          query           = "SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username"
43
 *      ),
44
 *      @ORM\NamedNativeQuery(
45
 *          name            = "fetchMultipleJoinsEntityResults",
46
 *          resultSetMapping= "mappingMultipleJoinsEntityResults",
47
 *          query           = "SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username"
48
 *      ),
49
 * })
50
 *
51
 * @ORM\SqlResultSetMappings({
52
 *      @ORM\SqlResultSetMapping(
53
 *          name    = "mappingJoinedAddress",
54
 *          entities= {
55
 *              @ORM\EntityResult(
56
 *                  entityClass = "__CLASS__",
57
 *                  fields      = {
58
 *                      @ORM\FieldResult(name = "id"),
59
 *                      @ORM\FieldResult(name = "name"),
60
 *                      @ORM\FieldResult(name = "status"),
61
 *                      @ORM\FieldResult(name = "address.zip"),
62
 *                      @ORM\FieldResult(name = "address.city"),
63
 *                      @ORM\FieldResult(name = "address.country"),
64
 *                      @ORM\FieldResult(name = "address.id", column = "a_id"),
65
 *                  }
66
 *              )
67
 *          }
68
 *      ),
69
 *      @ORM\SqlResultSetMapping(
70
 *          name    = "mappingJoinedPhonenumber",
71
 *          entities= {
72
 *              @ORM\EntityResult(
73
 *                  entityClass = "CmsUser",
74
 *                  fields      = {
75
 *                      @ORM\FieldResult("id"),
76
 *                      @ORM\FieldResult("name"),
77
 *                      @ORM\FieldResult("status"),
78
 *                      @ORM\FieldResult("phonenumbers.phonenumber" , column = "number"),
79
 *                  }
80
 *              )
81
 *          }
82
 *      ),
83
 *      @ORM\SqlResultSetMapping(
84
 *          name    = "mappingUserPhonenumberCount",
85
 *          entities= {
86
 *              @ORM\EntityResult(
87
 *                  entityClass = "CmsUser",
88
 *                  fields      = {
89
 *                      @ORM\FieldResult(name = "id"),
90
 *                      @ORM\FieldResult(name = "name"),
91
 *                      @ORM\FieldResult(name = "status"),
92
 *                  }
93
 *              )
94
 *          },
95
 *          columns = {
96
 *              @ORM\ColumnResult("numphones")
97
 *          }
98
 *      ),
99
 *      @ORM\SqlResultSetMapping(
100
 *          name    = "mappingMultipleJoinsEntityResults",
101
 *          entities= {
102
 *              @ORM\EntityResult(
103
 *                  entityClass = "__CLASS__",
104
 *                  fields      = {
105
 *                      @ORM\FieldResult(name = "id",       column="u_id"),
106
 *                      @ORM\FieldResult(name = "name",     column="u_name"),
107
 *                      @ORM\FieldResult(name = "status",   column="u_status"),
108
 *                  }
109
 *              ),
110
 *              @ORM\EntityResult(
111
 *                  entityClass = "CmsAddress",
112
 *                  fields      = {
113
 *                      @ORM\FieldResult(name = "id",       column="a_id"),
114
 *                      @ORM\FieldResult(name = "zip",      column="a_zip"),
115
 *                      @ORM\FieldResult(name = "country",  column="a_country"),
116
 *                  }
117
 *              )
118
 *          },
119
 *          columns = {
120
 *              @ORM\ColumnResult("numphones")
121
 *          }
122
 *      )
123
 * })
124
 */
125
class CmsUser
126
{
127
    /**
128
     * @ORM\Id @ORM\Column(type="integer")
129
     * @ORM\GeneratedValue
130
     */
131
    public $id;
132
    /**
133
     * @ORM\Column(type="string", length=50, nullable=true)
134
     */
135
    public $status;
136
    /**
137
     * @ORM\Column(type="string", length=255, unique=true)
138
     */
139
    public $username;
140
    /**
141
     * @ORM\Column(type="string", length=255)
142
     */
143
    public $name;
144
    /**
145
     * @ORM\OneToMany(targetEntity="CmsPhonenumber", mappedBy="user", cascade={"persist", "merge"}, orphanRemoval=true)
146
     */
147
    public $phonenumbers;
148
    /**
149
     * @ORM\OneToMany(targetEntity="CmsArticle", mappedBy="user", cascade={"detach"})
150
     */
151
    public $articles;
152
    /**
153
     * @ORM\OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
154
     */
155
    public $address;
156
    /**
157
     * @ORM\OneToOne(targetEntity="CmsEmail", inversedBy="user", cascade={"persist"}, orphanRemoval=true)
158
     * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
159
     */
160
    public $email;
161
    /**
162
     * @ORM\ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge", "detach"})
163
     * @ORM\JoinTable(name="cms_users_groups",
164
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
165
     *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
166
     *      )
167
     */
168
    public $groups;
169
    /**
170
     * @ORM\ManyToMany(targetEntity="CmsTag", inversedBy="users", cascade={"all"})
171
     * @ORM\JoinTable(name="cms_users_tags",
172
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
173
     *      inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
174
     *      )
175
     */
176
    public $tags;
177
178
    public $nonPersistedProperty;
179
180
    public $nonPersistedPropertyObject;
181
182
    public function __construct() {
183
        $this->phonenumbers = new ArrayCollection;
184
        $this->articles = new ArrayCollection;
185
        $this->groups = new ArrayCollection;
186
        $this->tags = new ArrayCollection;
187
    }
188
189
    public function getId() {
190
        return $this->id;
191
    }
192
193
    public function getStatus() {
194
        return $this->status;
195
    }
196
197
    public function getUsername() {
198
        return $this->username;
199
    }
200
201
    public function getName() {
202
        return $this->name;
203
    }
204
205
    /**
206
     * Adds a phonenumber to the user.
207
     *
208
     * @param CmsPhonenumber $phone
209
     */
210
    public function addPhonenumber(CmsPhonenumber $phone) {
211
        $this->phonenumbers[] = $phone;
212
        $phone->setUser($this);
213
    }
214
215
    public function getPhonenumbers() {
216
        return $this->phonenumbers;
217
    }
218
219
    public function addArticle(CmsArticle $article) {
220
        $this->articles[] = $article;
221
        $article->setAuthor($this);
222
    }
223
224
    public function addGroup(CmsGroup $group) {
225
        $this->groups[] = $group;
226
        $group->addUser($this);
227
    }
228
229
    public function getGroups() {
230
        return $this->groups;
231
    }
232
233
    public function addTag(CmsTag $tag) {
234
        $this->tags[] = $tag;
235
        $tag->addUser($this);
236
    }
237
238
    public function getTags() {
239
        return $this->tags;
240
    }
241
242
    public function removePhonenumber($index) {
243
        if (isset($this->phonenumbers[$index])) {
244
            $ph = $this->phonenumbers[$index];
245
            unset($this->phonenumbers[$index]);
246
            $ph->user = null;
247
            return true;
248
        }
249
        return false;
250
    }
251
252
    public function getAddress() { return $this->address; }
253
254
    public function setAddress(CmsAddress $address) {
255
        if ($this->address !== $address) {
256
            $this->address = $address;
257
            $address->setUser($this);
258
        }
259
    }
260
261
    /**
262
     * @return CmsEmail
263
     */
264
    public function getEmail() { return $this->email; }
265
266
    public function setEmail(CmsEmail $email = null) {
267
        if ($this->email !== $email) {
268
            $this->email = $email;
269
270
            if ($email) {
271
                $email->setUser($this);
272
            }
273
        }
274
    }
275
}
276