Release 2.0.32 (#4256)

This commit is contained in:
Kevin Papst
2023-08-31 15:33:53 +02:00
committed by GitHub
parent 452de88e18
commit 31348da4c0
42 changed files with 412 additions and 130 deletions

View File

@@ -14,6 +14,7 @@ use App\Entity\User;
use App\Event\CalendarConfigurationEvent;
use App\Event\CalendarDragAndDropSourceEvent;
use App\Event\CalendarGoogleSourceEvent;
use App\Event\CalendarSourceEvent;
use App\Event\RecentActivityEvent;
use App\Repository\TimesheetRepository;
use App\Utils\Color;
@@ -81,6 +82,23 @@ final class CalendarService
return new Google($apiKey, $sources);
}
/**
* @return array<CalendarSource>
*/
public function getSources(User $user): array
{
$sources = [];
$event = new CalendarSourceEvent($user);
$this->dispatcher->dispatch($event);
foreach ($event->getSources() as $source) {
$sources[] = $source;
}
return $sources;
}
public function getConfiguration(): array
{
$config = [

View File

@@ -0,0 +1,58 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Calendar;
class CalendarSource
{
/** @var array<string, string|bool|int> */
private array $options = [];
public function __construct(private CalendarSourceType $type, private string $id, private string $uri, private ?string $color = null)
{
}
public function getType(): CalendarSourceType
{
return $this->type;
}
public function getTypeName(): string
{
return $this->type->value;
}
public function getId(): string
{
return $this->id;
}
public function getUri(): string
{
return $this->uri;
}
public function getColor(): ?string
{
return $this->color;
}
public function addOption(string $name, int|bool|string $value): void
{
$this->options[$name] = $value;
}
/**
* @return array<string, bool|int|string>
*/
public function getOptions(): array
{
return $this->options;
}
}

View File

@@ -0,0 +1,18 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Calendar;
enum CalendarSourceType: string
{
case GOOGLE = 'google';
case ICAL = 'ical';
case JSON = 'json';
case TIMESHEET = 'timesheet';
}

View File

@@ -9,24 +9,10 @@
namespace App\Calendar;
final class GoogleSource
final class GoogleSource extends CalendarSource
{
public function __construct(private string $id, private string $uri, private ?string $color = null)
public function __construct(string $id, string $uri, ?string $color = null)
{
}
public function getId(): string
{
return $this->id;
}
public function getUri(): string
{
return $this->uri;
}
public function getColor(): ?string
{
return $this->color;
parent::__construct(CalendarSourceType::GOOGLE, $id, $uri, $color);
}
}