Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
* Rector result with cgl applied
* Fix constructor multi line by hand
* Migrate away from prophecy.
  • Loading branch information
DanielSiepmann committed Feb 5, 2024
1 parent 6320129 commit e13a451
Show file tree
Hide file tree
Showing 42 changed files with 749 additions and 1,284 deletions.
12 changes: 3 additions & 9 deletions Classes/Command/UpdateDataCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,9 @@

class UpdateDataCommand extends Command
{
/**
* @var Pageview
*/
private $repository;

public function __construct(Pageview $repository)
{
$this->repository = $repository;

public function __construct(
private readonly Pageview $repository
) {
parent::__construct();
}

Expand Down
38 changes: 38 additions & 0 deletions Classes/Dashboard/Provider/LanguageAspectFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

declare(strict_types=1);

/*
* Copyright (C) 2024 Daniel Siepmann <coding@daniel-siepmann.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/

namespace DanielSiepmann\Tracking\Dashboard\Provider;

use TYPO3\CMS\Core\Context\LanguageAspect;

class LanguageAspectFactory
{
public function createFromLanguageUid(int $languageUid): LanguageAspect
{
return new LanguageAspect(
$languageUid,
null,
LanguageAspect::OVERLAYS_MIXED
);
}
}
33 changes: 6 additions & 27 deletions Classes/Dashboard/Provider/NewestPageviews.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,35 +30,14 @@
class NewestPageviews implements ListDataProviderInterface
{
/**
* @var QueryBuilder
* @param int[] $languageLimitation
*/
private $queryBuilder;

/**
* @var int
*/
private $maxResults;

/**
* @var array
*/
private $pagesToExclude;

/**
* @var array<int>
*/
private $languageLimitation;

public function __construct(
QueryBuilder $queryBuilder,
int $maxResults = 6,
array $pagesToExclude = [],
array $languageLimitation = []
private readonly QueryBuilder $queryBuilder,
private readonly int $maxResults = 6,
private readonly array $pagesToExclude = [],
private readonly array $languageLimitation = []
) {
$this->queryBuilder = $queryBuilder;
$this->maxResults = $maxResults;
$this->pagesToExclude = $pagesToExclude;
$this->languageLimitation = $languageLimitation;
}

public function getItems(): array
Expand Down Expand Up @@ -98,7 +77,7 @@ public function getItems(): array
$this->queryBuilder->where(...$constraints);
}

$items = $this->queryBuilder->execute()->fetchAll();
$items = $this->queryBuilder->executeQuery()->fetchAllAssociative();
foreach ($items as $item) {
if (is_array($item) === false) {
continue;
Expand Down
46 changes: 10 additions & 36 deletions Classes/Dashboard/Provider/PageviewsPerDay.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
namespace DanielSiepmann\Tracking\Dashboard\Provider;

use DanielSiepmann\Tracking\Extension;
use Doctrine\DBAL\Platforms\SqlitePlatform;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Localization\LanguageService;
Expand All @@ -38,43 +39,17 @@ class PageviewsPerDay implements ChartDataProviderInterface
private $languageService;

/**
* @var QueryBuilder
* @param int[] $pagesToExclude
* @param int[] $languageLimitation
*/
private $queryBuilder;

/**
* @var int
*/
private $days;

/**
* @var array<int>
*/
private $pagesToExclude;

/**
* @var string
*/
private $dateFormat;

/**
* @var array<int>
*/
private $languageLimitation;

public function __construct(
QueryBuilder $queryBuilder,
int $days = 31,
array $pagesToExclude = [],
array $languageLimitation = [],
string $dateFormat = 'Y-m-d'
private readonly QueryBuilder $queryBuilder,
private readonly int $days = 31,
private readonly array $pagesToExclude = [],
private readonly array $languageLimitation = [],
private readonly string $dateFormat = 'Y-m-d'
) {
$this->languageService = $GLOBALS['LANG'];
$this->queryBuilder = $queryBuilder;
$this->days = $days;
$this->pagesToExclude = $pagesToExclude;
$this->languageLimitation = $languageLimitation;
$this->dateFormat = $dateFormat;
}

public function getChartData(): array
Expand Down Expand Up @@ -154,13 +129,12 @@ private function getPageviewsInPeriod(int $start, int $end): array
->groupBy('label')
->orderBy('label', 'ASC')
;

if ($this->queryBuilder->getConnection()->getDatabasePlatform()->getName() === 'sqlite') {
if ($this->queryBuilder->getConnection()->getDatabasePlatform() instanceof SqlitePlatform) {
$this->queryBuilder->addSelectLiteral('date(crdate, "unixepoch") as "label"');
} else {
$this->queryBuilder->addSelectLiteral('FROM_UNIXTIME(crdate, "%Y-%m-%d") as "label"');
}

return $this->queryBuilder->execute()->fetchAll();
return $this->queryBuilder->executeQuery()->fetchAllAssociative();
}
}
37 changes: 8 additions & 29 deletions Classes/Dashboard/Provider/PageviewsPerOperatingSystem.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,35 +31,14 @@
class PageviewsPerOperatingSystem implements ChartDataProviderInterface
{
/**
* @var QueryBuilder
* @param int[] $languageLimitation
*/
private $queryBuilder;

/**
* @var int
*/
private $days;

/**
* @var int
*/
private $maxResults;

/**
* @var array<int>
*/
private $languageLimitation;

public function __construct(
QueryBuilder $queryBuilder,
int $days = 31,
int $maxResults = 6,
array $languageLimitation = []
private readonly QueryBuilder $queryBuilder,
private readonly int $days = 31,
private readonly int $maxResults = 6,
private readonly array $languageLimitation = []
) {
$this->queryBuilder = $queryBuilder;
$this->days = $days;
$this->maxResults = $maxResults;
$this->languageLimitation = $languageLimitation;
}

public function getChartData(): array
Expand Down Expand Up @@ -112,16 +91,16 @@ private function getPageViewsPerPage(): array
->orderBy('total', 'desc')
->addOrderBy('operating_system', 'asc')
->setMaxResults($this->maxResults)
->execute()
->fetchAll()
->executeQuery()
->fetchAllAssociative()
;

foreach ($result as $row) {
if (is_array($row) === false) {
continue;
}

$labels[] = mb_strimwidth($row['operating_system'], 0, 50, '');
$labels[] = mb_strimwidth((string)$row['operating_system'], 0, 50, '');
$data[] = $row['total'];
}

Expand Down
60 changes: 16 additions & 44 deletions Classes/Dashboard/Provider/PageviewsPerPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,49 +33,18 @@
class PageviewsPerPage implements ChartDataProviderInterface
{
/**
* @var QueryBuilder
* @param int[] $pagesToExclude
* @param int[] $languageLimitation
*/
private $queryBuilder;

/**
* @var PageRepository
*/
private $pageRepository;

/**
* @var int
*/
private $days;

/**
* @var int
*/
private $maxResults;

/**
* @var array<int>
*/
private $pagesToExclude;

/**
* @var array<int>
*/
private $languageLimitation;

public function __construct(
QueryBuilder $queryBuilder,
PageRepository $pageRepository,
int $days = 31,
int $maxResults = 6,
array $pagesToExclude = [],
array $languageLimitation = []
private readonly QueryBuilder $queryBuilder,
private readonly PageRepository $pageRepository,
private readonly LanguageAspectFactory $languageAspectFactory,
private readonly int $days = 31,
private readonly int $maxResults = 6,
private readonly array $pagesToExclude = [],
private readonly array $languageLimitation = []
) {
$this->queryBuilder = $queryBuilder;
$this->pageRepository = $pageRepository;
$this->days = $days;
$this->maxResults = $maxResults;
$this->pagesToExclude = $pagesToExclude;
$this->languageLimitation = $languageLimitation;
}

public function getChartData(): array
Expand Down Expand Up @@ -136,8 +105,8 @@ private function getPageviewsPerPage(): array
->orderBy('total', 'desc')
->addOrderBy('latest', 'desc')
->setMaxResults($this->maxResults)
->execute()
->fetchAll()
->executeQuery()
->fetchAllAssociative()
;

foreach ($result as $row) {
Expand All @@ -159,13 +128,16 @@ private function getRecordTitle(int $uid): string
{
$record = BackendUtility::getRecord('pages', $uid);
if (count($this->languageLimitation) === 1 && $record !== null) {
$record = $this->pageRepository->getRecordOverlay('pages', $record, $this->languageLimitation[0]);
$record = $this->pageRepository->getPageOverlay(
$record,
$this->languageLimitation[0]
);
}

if (is_array($record) === false) {
return 'Unkown';
}

return strip_tags(BackendUtility::getRecordTitle('pages', $record, true));
return strip_tags((string)BackendUtility::getRecordTitle('pages', $record, true));
}
}
Loading

0 comments on commit e13a451

Please sign in to comment.