Completed
Push — master ( 9684f5...5d31f9 )
by Sander
36:56 queued 12:48
created

Repository/AnalyticsConfigRepository.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\DashboardBundle\Repository;
4
5
use Doctrine\ORM\EntityRepository;
6
use Kunstmaan\DashboardBundle\Entity\AnalyticsConfig;
7
8
/**
9
 * AnalyticsConfigRepository
10
 *
11
 * This class was generated by the Doctrine ORM. Add your own custom
12
 * repository methods below.
13
 */
14
class AnalyticsConfigRepository extends EntityRepository
15
{
16
    /**
17
     * Get the first config from the database, creates a new entry if the config doesn't exist yet
18
     *
19
     * @return AnalyticsConfig $config
20
     */
21
    public function findFirst($createNew = true)
22
    {
23
        // Backwards compatibility: select the first config, still used in the dashboard, specified config ids are set in the dashboard collection bundle
24
        $em = $this->getEntityManager();
25
        $query = $em->createQuery('SELECT c FROM KunstmaanDashboardBundle:AnalyticsConfig c');
26
        $result = $query->getResult();
27
        // if no configs exist, create a new one
28
        if (!$result && $createNew) {
29
            return $this->createConfig();
30
        } elseif ($result) {
31
            return $result[0];
32
        } else {
33
            return false;
34
        }
35
    }
36
37
    /**
38
     * Get the default overviews for a config
39
     *
40
     * @return AnalyticsConfig $config
0 ignored issues
show
Should the return type not be array? Also, consider making the array more specific, something like array<String>, or String[].

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

If the return type contains the type array, this check recommends the use of a more specific type like String[] or array<String>.

Loading history...
41
     */
42
    public function findDefaultOverviews($config)
43
    {
44
        $em = $this->getEntityManager();
45
46
        return $em->getRepository('KunstmaanDashboardBundle:AnalyticsOverview')
47
            ->findBy(array(
48
                    'config' => $config,
49
                    'segment' => null,
50
                ));
51
    }
52
53
    /**
54
     * Create a new config
55
     *
56
     * @return AnalyticsConfig
57
     */
58
    public function createConfig()
59
    {
60
        $em = $this->getEntityManager();
61
62
        $config = new AnalyticsConfig();
63
        $em->persist($config);
64
        $em->flush();
65
66
        $this->getEntityManager()->getRepository('KunstmaanDashboardBundle:AnalyticsOverview')->addOverviews($config);
67
68
        return $config;
69
    }
70
71
    /**
72
     * Flush a config
73
     *
74
     * @param int $id the config id
75
     */
76
    public function flushConfig($id = false)
77
    {
78
        $em = $this->getEntityManager();
79
80
        // Backward compatibilty to flush overviews without a config set
81
        if (!$id) {
82
            $overviewRepository = $em->getRepository('KunstmaanDashboardBundle:AnalyticsOverview');
83
            foreach ($overviewRepository->findAll() as $overview) {
84
                $em->remove($overview);
85
            }
86
            $em->flush();
87
88
            return;
89
        }
90
91
        $config = $id ? $this->find($id) : $this->findFirst();
92
        foreach ($config->getOverviews() as $overview) {
93
            $em->remove($overview);
94
        }
95
        foreach ($config->getSegments() as $segment) {
96
            $em->remove($segment);
97
        }
98
        $em->flush();
99
    }
100
101
    /**
102
     * Update the timestamp when data is collected
103
     *
104
     * @param int id
105
     */
106
    public function setUpdated($id = false)
107
    {
108
        $em = $this->getEntityManager();
109
        $config = $id ? $this->find($id) : $this->findFirst();
110
        $config->setLastUpdate(new \DateTime());
111
        $em->persist($config);
112
        $em->flush();
113
    }
114
115
    /**
116
     * saves the token
117
     *
118
     * @param string $token
119
     */
120
    public function saveToken($token, $id = false)
121
    {
122
        $em = $this->getEntityManager();
123
        $config = $id ? $this->find($id) : $this->findFirst();
124
        $config->setToken($token);
125
        $em->persist($config);
126
        $em->flush();
127
    }
128
129
    /**
130
     * saves the property id
131
     *
132
     * @param string $propertyId
133
     */
134
    public function savePropertyId($propertyId, $id = false)
135
    {
136
        $em = $this->getEntityManager();
137
        $config = $id ? $this->find($id) : $this->findFirst();
138
        $config->setPropertyId($propertyId);
139
        $em->persist($config);
140
        $em->flush();
141
    }
142
143
    /**
144
     * saves the account id
145
     *
146
     * @param string $accountId
147
     */
148
    public function saveAccountId($accountId, $id = false)
149
    {
150
        $em = $this->getEntityManager();
151
        $config = $id ? $this->find($id) : $this->findFirst();
152
        $config->setAccountId($accountId);
153
        $em->persist($config);
154
        $em->flush();
155
    }
156
157
    /**
158
     * saves the profile id
159
     *
160
     * @param string $profileId
161
     */
162 View Code Duplication
    public function saveProfileId($profileId, $id = false)
163
    {
164
        $em = $this->getEntityManager();
165
        $config = $id ? $this->find($id) : $this->findFirst();
166
        $config->setProfileId($profileId);
167
        $em->persist($config);
168
        $em->flush();
169
    }
170
171
    /**
172
     * saves the config name
173
     *
174
     * @param string $profileId
175
     */
176 View Code Duplication
    public function saveConfigName($name, $id = false)
177
    {
178
        $em = $this->getEntityManager();
179
        $config = $id ? $this->find($id) : $this->findFirst();
180
        $config->setName($name);
181
        $em->persist($config);
182
        $em->flush();
183
    }
184
185
    /**
186
     * Resets the profile id
187
     *
188
     * @param int id
189
     */
190 View Code Duplication
    public function resetProfileId($id = false)
191
    {
192
        $em = $this->getEntityManager();
193
        $config = $id ? $this->find($id) : $this->findFirst();
194
        $config->setProfileId('');
195
        $em->persist($config);
196
        $em->flush();
197
    }
198
199
    /**
200
     * Resets the  account id, property id and profile id
201
     *
202
     * @param int id
203
     */
204
    public function resetPropertyId($id = false)
205
    {
206
        $em = $this->getEntityManager();
207
        $config = $id ? $this->find($id) : $this->findFirst();
208
        $config->setAccountId('');
209
        $config->setProfileId('');
210
        $config->setPropertyId('');
211
        $em->persist($config);
212
        $em->flush();
213
    }
214
}
215