DownloadRepository.php 3.81 KB
Newer Older
1
<?php
Tomas Norre Mikkelsen's avatar
Tomas Norre Mikkelsen committed
2
declare(strict_types = 1);
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace T3o\TerFe2\Domain\Repository;

/*
 * This file is part of the TYPO3 CMS project.
 *
 * It is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License, either version 2
 * of the License, or any later version.
 *
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 * The TYPO3 project - inspiring people to share!
 */

use T3o\TerFe2\Domain\Model\Download;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Utility\ClassNamingUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings;

class DownloadRepository extends AbstractRepository
{

    /**
     * @var string
     */
    protected $tableName = 'tx_terfe2_domain_model_download';

    /**
     * @var QueryBuilder
     */
    protected $queryBuilder = QueryBuilder::class;
Tomas Norre Mikkelsen's avatar
Tomas Norre Mikkelsen committed
38

39
40
41
42
43
44
45
46
47
48
    /**
     * QueueRepository constructor.
     */
    public function __construct()
    {
        $this->queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->tableName);
        $this->objectManager = GeneralUtility::makeInstance(ObjectManager::class);
        $this->objectType = ClassNamingUtility::translateRepositoryNameToModelName($this->getRepositoryClassName());
    }

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    public function findDownloadsByExtensionkey($extensionKey)
    {
        $total = 0;

        $querySettings = GeneralUtility::makeInstance(Typo3QuerySettings::class);
        $querySettings->setRespectStoragePage(false);

        $query = $this->createQuery();
        $query->setQuerySettings($querySettings);

        $query->matching(
            $query->equals('extensionKey', $extensionKey),
        );

        $downloads = $query->execute()->toArray();

        /** @var Download $download */
        foreach ($downloads as $download) {
            $total = $total + $download->getCounter();
        }

        return $total;
    }

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    /**
     * @param $month
     * @param $extensionKey
     * @param $versionId
     * @param $source
     *
     * @return object|null
     * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
     */
    public function findDownloadCounterByMonthAndExtensionKey($month, $extensionKey, $versionId, $source)
    {
        $query = $this->createQuery();
        $query->matching(
            $query->logicalAnd(
                [
                    $query->equals('month', $month),
                    $query->equals('extensionKey', $extensionKey),
                    $query->equals('versionId', $versionId),
                    $query->equals('source', $source),

                ]
            )
        );

        return $query->execute()->getFirst();
    }

    /**
     * @param $month
     * @param $extensionKey
     *
     * @return int
     */
106
    public function findDownloadCounterByMonthAndExtensionKeyAndSource($month, $extensionKey, $source)
107
108
109
110
111
112
113
114
115
116
117
118
119
    {
        $total = 0;

        $querySettings = GeneralUtility::makeInstance(Typo3QuerySettings::class);
        $querySettings->setRespectStoragePage(false);

        $query = $this->createQuery();
        $query->setQuerySettings($querySettings);

        $query->matching(
            $query->logicalAnd(
                [
                    $query->equals('month', $month),
120
121
                    $query->equals('extensionKey', $extensionKey),
                    $query->equals('source', $source)
122
123
124
125
126
127
128
129
130
131
132
133
134
                ]
            )
        );

        $downloads = $query->execute()->toArray();

        /** @var Download $download */
        foreach ($downloads as $download) {
            $total = $total + $download->getCounter();
        }

        return $total;
    }
Tomas Norre Mikkelsen's avatar
Tomas Norre Mikkelsen committed
135
}