Completed
Push — master ( 91fdab...75a7b9 )
by
unknown
13:37
created

Repository/AnalyticsConfigRepository.php (2 issues)

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
        // Backwards compatibility: select the first config, still used in the dashboard, specified config ids are set in the dashboard collection bundle
23
        $em = $this->getEntityManager();
24
        $query = $em->createQuery( 'SELECT c FROM KunstmaanDashboardBundle:AnalyticsConfig c' );
25
        $result = $query->getResult();
26
        // if no configs exist, create a new one
27
        if (!$result && $createNew) {
28
            return $this->createConfig();
29
        } else if ($result) {
30
           return $result[0];
31
        } else {
32
            return false;
33
        }
34
    }
35
36
    /**
37
     * Get the default overviews for a config
38
     *
39
     * @return AnalyticsConfig $config
40
     */
41
    public function findDefaultOverviews($config) {
42
        $em = $this->getEntityManager();
43
        return $em->getRepository('KunstmaanDashboardBundle:AnalyticsOverview')
44
            ->findBy(array(
45
                    'config' => $config,
46
                    'segment' => null
47
                ));
48
    }
49
50
    /**
51
     * Create a new config
52
     *
53
     * @return AnalyticsConfig
54
     */
55
    public function createConfig() {
56
        $em = $this->getEntityManager();
57
58
        $config = new AnalyticsConfig();
59
        $em->persist($config);
60
        $em->flush();
61
62
        $this->getEntityManager()->getRepository('KunstmaanDashboardBundle:AnalyticsOverview')->addOverviews($config);
63
        return $config;
64
    }
65
66
    /**
67
     * Flush a config
68
     *
69
     * @param int $id the config id
70
     */
71
    public function flushConfig($id=false) {
72
        $em = $this->getEntityManager();
73
74
        // Backward compatibilty to flush overviews without a config set
75
        if (!$id) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $id of type false|integer is loosely compared to false; this is ambiguous if the integer can be zero. You might want to explicitly use === null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For integer values, zero is a special case, in particular the following results might be unexpected:

0   == false // true
0   == null  // true
123 == false // false
123 == null  // false

// It is often better to use strict comparison
0 === false // false
0 === null  // false
Loading history...
76
            $overviewRepository = $em->getRepository('KunstmaanDashboardBundle:AnalyticsOverview');
77
            foreach ($overviewRepository->findAll() as $overview) {
78
                $em->remove($overview);
79
            }
80
            $em->flush();
81
            return;
82
        }
83
84
        $config = $id ? $this->find($id) : $this->findFirst();
85
        foreach ($config->getOverviews() as $overview) {
86
            $em->remove($overview);
87
        }
88
        foreach ($config->getSegments() as $segment) {
89
            $em->remove($segment);
90
        }
91
        $em->flush();
92
    }
93
94
    /**
95
     * Update the timestamp when data is collected
96
     *
97
     * @param int id
98
     */
99
    public function setUpdated($id=false) {
100
        $em = $this->getEntityManager();
101
        $config = $id ? $this->find($id) : $this->findFirst();
102
        $config->setLastUpdate(new \DateTime());
103
        $em->persist($config);
104
        $em->flush();
105
    }
106
107
    /**
108
     * saves the token
109
     *
110
     * @param string $token
111
     */
112
    public function saveToken($token, $id=false) {
113
        $em    = $this->getEntityManager();
114
        $config = $id ? $this->find($id) : $this->findFirst();
115
        $config->setToken($token);
116
        $em->persist($config);
117
        $em->flush();
118
    }
119
120
    /**
121
     * saves the property id
122
     *
123
     * @param string $propertyId
124
     */
125
    public function savePropertyId($propertyId, $id=false) {
126
        $em    = $this->getEntityManager();
127
        $config = $id ? $this->find($id) : $this->findFirst();
128
        $config->setPropertyId($propertyId);
129
        $em->persist($config);
130
        $em->flush();
131
    }
132
133
    /**
134
     * saves the account id
135
     *
136
     * @param string $accountId
137
     */
138
    public function saveAccountId($accountId, $id=false) {
139
        $em    = $this->getEntityManager();
140
        $config = $id ? $this->find($id) : $this->findFirst();
141
        $config->setAccountId($accountId);
142
        $em->persist($config);
143
        $em->flush();
144
    }
145
146
    /**
147
     * saves the profile id
148
     *
149
     * @param string $profileId
150
     */
151 View Code Duplication
    public function saveProfileId($profileId, $id=false) {
152
        $em    = $this->getEntityManager();
153
        $config = $id ? $this->find($id) : $this->findFirst();
154
        $config->setProfileId($profileId);
155
        $em->persist($config);
156
        $em->flush();
157
    }
158
159
    /**
160
     * saves the config name
161
     *
162
     * @param string $profileId
0 ignored issues
show
There is no parameter named $profileId. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
163
     */
164 View Code Duplication
    public function saveConfigName($name, $id=false) {
165
        $em    = $this->getEntityManager();
166
        $config = $id ? $this->find($id) : $this->findFirst();
167
        $config->setName($name);
168
        $em->persist($config);
169
        $em->flush();
170
    }
171
172
    /**
173
     * Resets the profile id
174
     *
175
     * @param int id
176
     */
177 View Code Duplication
    public function resetProfileId($id=false) {
178
        $em    = $this->getEntityManager();
179
        $config = $id ? $this->find($id) : $this->findFirst();
180
        $config->setProfileId('');
181
        $em->persist($config);
182
        $em->flush();
183
    }
184
185
    /**
186
     * Resets the  account id, property id and profile id
187
     *
188
     * @param int id
189
     */
190
    public function resetPropertyId($id=false) {
191
        $em    = $this->getEntityManager();
192
        $config = $id ? $this->find($id) : $this->findFirst();
193
        $config->setAccountId('');
194
        $config->setProfileId('');
195
        $config->setPropertyId('');
196
        $em->persist($config);
197
        $em->flush();
198
    }
199
}
200