Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CounterRepository
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 1
 record
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
 recordWithConfig
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace Olz\Repository;
4
5use Olz\Entity\Counter;
6use Olz\Repository\Common\OlzRepository;
7
8/**
9 * @extends OlzRepository<Counter>
10 */
11class CounterRepository extends OlzRepository {
12    public function record(string $page): void {
13        $truncated_page = substr($page, 0, 255);
14        $config = [
15            'page' => $truncated_page,
16            'date_range' => $this->dateUtils()->getCurrentDateInFormat('Y-m'),
17            'args' => null,
18        ];
19        $this->recordWithConfig($config);
20    }
21
22    /** @param array{page: string, date_range: string, args: ?string} $config */
23    public function recordWithConfig(array $config): void {
24        $counters = $this->findBy($config);
25        if (count($counters) > 1) {
26            $new_count = 0;
27            foreach ($counters as $counter) {
28                $new_count += $counter->getCounter();
29                $this->getEntityManager()->remove($counter);
30            }
31            $counter = new Counter();
32            $counter->setPage($config['page']);
33            $counter->setDateRange($config['date_range']);
34            $counter->setArgs($config['args']);
35            $counter->setCounter($new_count);
36            $this->getEntityManager()->persist($counter);
37        } elseif (count($counters) == 1) {
38            $counter = $counters[0];
39            $counter->incrementCounter();
40        } else {
41            $counter = new Counter();
42            $counter->setPage($config['page']);
43            $counter->setDateRange($config['date_range']);
44            $counter->setArgs($config['args']);
45            $counter->setCounter(1);
46            $this->getEntityManager()->persist($counter);
47        }
48        $this->getEntityManager()->flush();
49    }
50}