Completed
Push — master ( c16d98...b0495b )
by Tim
03:40
created

ExternalTimeTable::handleConfiguration()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
cc 3
nc 3
nop 2
1
<?php
2
3
/**
4
 * External service.
5
 */
6
declare(strict_types=1);
7
8
namespace HDNET\Calendarize\Service\TimeTable;
9
10
use HDNET\Calendarize\Domain\Model\Configuration;
11
use HDNET\Calendarize\Service\IcsReaderService;
12
use HDNET\Calendarize\Utility\HelperUtility;
13
use TYPO3\CMS\Core\Messaging\FlashMessage;
14
use TYPO3\CMS\Core\Utility\GeneralUtility;
15
16
/**
17
 * External service.
18
 */
19
class ExternalTimeTable extends AbstractTimeTable
20
{
21
22
    /**
23
     * Modify the given times via the configuration.
24
     *
25
     * @param array         $times
26
     * @param Configuration $configuration
27
     *
28
     * @throws \TYPO3\CMS\Core\Exception
29
     */
30
    public function handleConfiguration(array &$times, Configuration $configuration)
31
    {
32
        $url = $configuration->getExternalIcsUrl();
33
        if (!GeneralUtility::isValidUrl($url)) {
34
            HelperUtility::createFlashMessage(
35
                'Configuration with invalid ICS URL: ' . $url,
36
                'Index ICS URL',
37
                FlashMessage::ERROR
38
            );
39
40
            return;
41
        }
42
43
        $icsReaderService = GeneralUtility::makeInstance(IcsReaderService::class);
44
        $externalTimes = $icsReaderService->getTimes($url);
45
        foreach ($externalTimes as $time) {
46
            $time['pid'] = $configuration->getPid();
47
            $time['state'] = $configuration->getState();
48
            $times[$this->calculateEntryKey($time)] = $time;
49
        }
50
    }
51
}
52