Passed
Push — master ( 4b954d...b01812 )
by Gabor
03:38
created

UserMetaStorage::populateEntity()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 8
cts 8
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 2
crap 1
1
<?php
2
/**
3
 * WebHemi.
4
 *
5
 * PHP version 5.6
6
 *
7
 * @copyright 2012 - 2016 Gixx-web (http://www.gixx-web.com)
8
 * @license   https://opensource.org/licenses/MIT The MIT License (MIT)
9
 *
10
 * @link      http://www.gixx-web.com
11
 */
12
namespace WebHemi\Data\Storage\User;
13
14
use DateTime;
15
use WebHemi\Data\Entity\DataEntityInterface;
16
use WebHemi\Data\Entity\User\UserMetaEntity;
17
use WebHemi\Data\Storage\AbstractDataStorage;
18
use WebHemi\Data\Storage\Traits\GetEntityListFromDataSetTrait;
19
20
/**
21
 * Class UserMetaStorage.
22
 */
23
class UserMetaStorage extends AbstractDataStorage
24
{
25
    /** @var string */
26
    protected $dataGroup = 'webhemi_user_meta';
27
    /** @var string */
28
    protected $idKey = 'id_user_meta';
29
    /** @var string */
30
    private $userId = 'fk_user';
31
    /** @var string */
32
    private $metaKey = 'meta_key';
33
    /** @var string */
34
    private $metaData = 'meta_data';
35
    /** @var string */
36
    private $dateCreated = 'date_created';
37
    /** @var string */
38
    private $dateModified = 'date_modified';
39
40
    /** @method bool|array<UserMetaEntity> getEntityListFromDataSet(array $dataList) */
41
    use GetEntityListFromDataSetTrait;
42
43
    /**
44
     * Populates an entity with storage data.
45
     *
46
     * @param DataEntityInterface $entity
47
     * @param array               $data
48
     */
49 2
    protected function populateEntity(DataEntityInterface &$entity, array $data)
50
    {
51
        /* @var UserMetaEntity $entity */
52 2
        $entity->setUserMetaId($data[$this->idKey])
53 2
            ->setUserId($data[$this->userId])
54 2
            ->setMetaKey($data[$this->metaKey])
55 2
            ->setMetaData($data[$this->metaData])
56 2
            ->setDateCreated(new DateTime($data[$this->dateCreated]))
57 2
            ->setDateModified(new DateTime($data[$this->dateModified]));
58 2
    }
59
60
    /**
61
     * Get data from an entity.
62
     *
63
     * @param DataEntityInterface $entity
64
     * @return array
65
     */
66 1
    protected function getEntityData(DataEntityInterface $entity)
67
    {
68
        /** @var UserMetaEntity $entity */
69 1
        $dateCreated = $entity->getDateCreated();
70 1
        $dateModified = $entity->getDateModified();
71
72
        return [
73 1
            $this->idKey => $entity->getKeyData(),
74 1
            $this->userId => $entity->getUserId(),
75 1
            $this->metaKey => $entity->getMetaKey(),
76 1
            $this->metaData => $entity->getMetaData(),
77 1
            $this->dateCreated => $dateCreated instanceof DateTime ? $dateCreated->format('Y-m-d H:i:s') : null,
78 1
            $this->dateModified => $dateModified instanceof DateTime ? $dateModified->format('Y-m-d H:i:s') : null
79 1
        ];
80
    }
81
82
    /**
83
     * Returns a User Meta entity identified by (unique) ID.
84
     *
85
     * @param int $identifier
86
     *
87
     * @return bool|UserMetaEntity
88
     */
89 1
    public function getUserMetaById($identifier)
90
    {
91 1
        $entity = false;
92 1
        $data = $this->getDataAdapter()->getData($identifier);
93
94 1
        if (!empty($data)) {
95 1
            $entity = $this->createEntity();
96 1
            $this->populateEntity($entity, $data);
97 1
        }
98
99 1
        return $entity;
100
    }
101
102
    /**
103
     * Returns a User Meta entity list identified by user ID.
104
     *
105
     * @param mixed $userId
106
     *
107
     * @return array<UserMetaEntity>
108
     */
109 1
    public function getUserMetaForUserId($userId)
110
    {
111 1
        $dataList = $this->getDataAdapter()->getDataSet([$this->userId => $userId]);
112
113 1
        return $this->getEntityListFromDataSet($dataList);
114
    }
115
}
116