map = $map;
}
/**
* @private
*/
public static function getName(): string
{
return 'utils';
}
/**
* Přeložit zadaný klíč (key) na jinou hodnotu dle použitého slovníku (mapName).
*
* Např. utils.map('sections_map1', section.id, section.path())
* Třetí parametr je volitelný. Slouží pouze pro orientaci v mapování (sloupec Popis).
*
* Volitelně můžete předat ještě čtvrtý parametr, jehož hodnota se použije, pokud překlad neexistuje, nebo je mapovaná hodnota prázdná.
* Např. utils.map('sections_map1', section.id, section.path(), 'záložní hodnota')
*
* @param string $key // TODO: make $key required (?string $key) when on PHP 7.1
*
* @return string
*/
public function map(string $mapName, ?string $key = null, ?string $description = null, ?string $fallback = null)
{
return $this->map->map($mapName, $key, $description, $fallback);
}
/**
* Kontrola existence klíče (key) v dané mapě (mapName).
*
* @param string $key // TODO: make $key required (?string $key) when on PHP 7.1
*/
public function mapContains(string $mapName, ?string $key = null): bool
{
return $this->map->mapContains($mapName, $key);
}
/**
* Pouze vytáhne existující překlad daného klíče (key) a nepřidává nové záznamy do mapy.
*
* @param string $key // TODO: make $key required (?string $key) when on PHP 7.1
*/
public function findInMap(string $mapName, ?string $key = null): string
{
return $this->map->findInMap($mapName, $key);
}
/**
* Upraví vložený text na SEO friendly řetězec znaků.
*/
public function slugify(string $string): string
{
$transliterator = \Transliterator::create('Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC;', \Transliterator::FORWARD);
return StringUtil::slugify($transliterator->transliterate($string));
}
/**
* Odstraní elementy z textu.
*
* Např.: utils.strip_tags(description)
*/
public function strip_tags(?string $string, string $allowable_tags = ''): string
{
return isset($string) ? html_entity_decode(strip_tags($string, $allowable_tags)) : '';
}
/**
* Upraví vložený objekt datumu (datetime) na zadaný formát (format). Dokumentace.
*
* @return string|null
*
* @deprecated in favor of utils.formatDatetime()
*/
public function formatDate($datetime, string $format = 'Y-m-d H:i')
{
if (is_string($datetime)) {
$datetime = date_create($datetime);
}
if (!($datetime instanceof \DateTimeInterface)) {
return null;
}
return $datetime->format($format);
}
/** Zakódovat text pro použití v URL */
public function urlencode(?string $string): string
{
return urlencode($string ?? '');
}
/** Naformátovat datum.
*
* Vlastní formát viz dokumentace Day.js
*
* @implementedInJS
*/
public function formatDateOnly($date, string $format = 'YYYY-MM-DD'): string
{
return '';
}
/** Naformátovat datum a čas.
*
* Vlastní formát viz dokumentace Day.js
*
* @implementedInJS
*/
public function formatDatetime($date, string $format = 'YYYY-MM-DD HH:mm'): string
{
return '';
}
/** Počítadlo.
*
* Provolání funkce přičte jedničku k hodnotě počítadla se zadaným názvem. Výsledné součty všech počítadel se po vygenerování kompletního feedu zobrazí v reportu.
*
* @implementedInJS
*/
public function reportCounter(string $name): void
{
}
/** Vráti objekt (seznam) zadaných položek indexovaných podle zvoleného pole dané položky.
*
* Např. utils.index(deliveries, 'heureka_id') vrátí seznam (objekt) doprav indexovaných podle heureka_id
*
* @implementedInJS
*/
public function index($sourceList, string $fieldName): void
{
}
/** Filtruje seznam položek pomocí vlastní filtrační funkce.
*
* Např. utils.filter(deliveries, (item) => item.final_price < 70) vrátí položky s final_price nižší než 70.
*
* Příklad s filtrační funkcí zohledňující klíč v původním seznamu: utils.filter(deliveries, (item, index) => index.includes('Zasilkovna')) vrátí položky s klíčem, který obsahuje 'Zasilkovna'.
*
* Poslední parametr returnArray není nutné uvádět, ale v případě potřeby lze uvedením false vynutit zachování klíčů z původního seznamu. Výsledek poté nebude obyčejný seznam, ale objekt.
*
* @implementedInJS
*/
public function filter($sourceList, callable $filterFunction, bool $returnArray = true): void
{
}
/** Filtruje seznam položek podle zadané hodnoty nebo podle seznamu možných hodnot.
*
* Např. utils.filterField(deliveries, 'heureka_id', 'PPL') vrátí položky s heureka_id rovno 'PPL'.
*
* Příklad s více hodnotami: utils.filterField(deliveries, 'heureka_id', ['PPL', 'PPL_PARCELSHOP']) vrátí položky s heureka_id rovno 'PPL' nebo 'PPL_PARCELSHOP'.
*
* Poslední parametr returnArray není nutné uvádět, ale v případě potřeby lze uvedením false vynutit zachování klíčů z původního seznamu. Výsledek poté nebude obyčejný seznam, ale objekt.
*
* @implementedInJS
*/
public function filterField($sourceList, string $fieldName, mixed $value, bool $returnArray = true): void
{
}
/** Seřadí seznam položek podle zadaného pole.
*
* Např. utils.sort(deliveries, 'final_price')
*
* Příklad seřazení sestupně: utils.sort(deliveries, 'final_price', true)
*
* @implementedInJS
*/
public function sort($sourceList, string $fieldName, $descending = false): void
{
}
/** MD5 hash.
*
* Např. utils.md5('some_string')
*/
public function md5(string $string): string
{
return md5($string);
}
}