Completed
Push — master ( 2c2a55...46eca6 )
by Gianluca
05:40
created

MappingCollector::unserialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
crap 1
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the MIT license. For more information, see
17
 * <http://www.doctrine-project.org>.
18
 */
19
20
namespace DoctrineORMModule\Collector;
21
22
use Serializable;
23
24
use ZendDeveloperTools\Collector\CollectorInterface;
25
use ZendDeveloperTools\Collector\AutoHideInterface;
26
27
use Zend\Mvc\MvcEvent;
28
29
use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory;
30
31
/**
32
 * Collector to be used in ZendDeveloperTools to record and display mapping information
33
 *
34
 * @license MIT
35
 * @link    www.doctrine-project.org
36
 * @author  Marco Pivetta <[email protected]>
37
 */
38
class MappingCollector implements CollectorInterface, AutoHideInterface, Serializable
39
{
40
    /**
41
     * Collector priority
42
     */
43
    const PRIORITY = 10;
44
45
    /**
46
     * @var string
47
     */
48
    protected $name;
49
50
    /**
51
     * @var ClassMetadataFactory|null
52
     */
53
    protected $classMetadataFactory = array();
54
55
    /**
56
     * @var \Doctrine\Common\Persistence\Mapping\ClassMetadata[] indexed by class name
57
     */
58
    protected $classes = array();
59
60
    /**
61
     * @param ClassMetadataFactory $classMetadataFactory
62
     * @param string               $name
63
     */
64
    public function __construct(ClassMetadataFactory $classMetadataFactory, $name)
65
    {
66
        $this->classMetadataFactory = $classMetadataFactory;
67
        $this->name                 = (string) $name;
68
    }
69
70
    /**
71
     * {@inheritDoc}
72
     */
73 1
    public function getName()
74
    {
75 1
        return $this->name;
76
    }
77
78
    /**
79
     * {@inheritDoc}
80
     */
81 1
    public function getPriority()
82
    {
83 1
        return static::PRIORITY;
84
    }
85
86
    /**
87
     * {@inheritDoc}
88
     */
89 2
    public function collect(MvcEvent $mvcEvent)
90
    {
91 2
        if (!$this->classMetadataFactory) {
92 1
            return;
93
        }
94
95
        /* @var $metadata \Doctrine\Common\Persistence\Mapping\ClassMetadata[] */
96 2
        $metadata      = $this->classMetadataFactory->getAllMetadata();
97 2
        $this->classes = array();
98
99 2
        foreach ($metadata as $class) {
100 2
            $this->classes[$class->getName()] = $class;
101 2
        }
102 2
        ksort($this->classes);
103 2
    }
104
105
    /**
106
     * {@inheritDoc}
107
     */
108 1
    public function canHide()
109
    {
110 1
        return empty($this->classes);
111
    }
112
113
    /**
114
     * {@inheritDoc}
115
     */
116 1
    public function serialize()
117
    {
118 1
        return serialize(
119
            array(
120 1
                'name'    => $this->name,
121 1
                'classes' => $this->classes,
122
            )
123 1
        );
124
    }
125
126
    /**
127
     * {@inheritDoc}
128
     */
129 1
    public function unserialize($serialized)
130
    {
131 1
        $data          = unserialize($serialized);
132 1
        $this->name    = $data['name'];
133 1
        $this->classes = $data['classes'];
134 1
    }
135
136
    /**
137
     * @return \Doctrine\Common\Persistence\Mapping\ClassMetadata[]
138
     */
139 1
    public function getClasses()
140
    {
141 1
        return $this->classes;
142
    }
143
}
144