Release 2.0.32 (#4256)
This commit is contained in:
@@ -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 = [
|
||||
|
||||
58
src/Calendar/CalendarSource.php
Normal file
58
src/Calendar/CalendarSource.php
Normal 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;
|
||||
}
|
||||
}
|
||||
18
src/Calendar/CalendarSourceType.php
Normal file
18
src/Calendar/CalendarSourceType.php
Normal 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';
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user