<?php
return new class implements Restaurace
{
public function name(): string
{
return 'Restaurace Flip';
}
public function link(): string
{
return 'https://www.menicka.cz/24-restaurace-flip.html';
}
public function menu(): ?array
{
libxml_use_internal_errors(true);
$html = @file_get_contents($this->link());
if (!$html) {
return null;
}
$dom = new DOMDocument;
if (!$dom->loadHTML(mb_convert_encoding(iconv('Windows-1250', 'UTF-8', $html), 'HTML-ENTITIES', 'UTF-8'))) {
return null;
}
$xPath = new DOMXPath($dom);
$heading = null;
foreach ($xPath->query('//div[@class="nadpis"]') as $element) {
if (strcasecmp(mb_strtolower($element->nodeValue), sprintf('%s %s', mb_strtolower(DAY_NAME), date('j.m.Y'))) === 0 ||
strcasecmp(mb_strtolower($element->nodeValue), sprintf('%s %s', mb_strtolower(DAY_NAME), date('j.n.Y'))) === 0) {
$heading = $element;
break;
}
}
if ($heading === null) {
return null;
}
$menu = [];
$i = 0;
foreach ($heading->parentNode->getElementsByTagName('li') as $element) {
if ($element->getAttribute('class') !== 'jidlo') {
continue;
}
$food = null;
$price = null;
foreach ($element->getElementsByTagName('div') as $element) {
switch ($element->getAttribute('class')) {
case 'polozka':
$food = trim($element->childNodes[1]->textContent);
break;
case 'cena':
$price = (int) $element->nodeValue;
break;
}
}
if (!$food || !$price) {
continue;
}
$menu[] = [sprintf('Jídlo #%d *(%d Kč)*', ++$i, $price), $food];
}
return $menu;
}
};