evidencia
VB
Tu je začiatok stránky ...
$value
)
{
$row[$key] =
evid_clean_utf8(
$value
);
}
$rows[] =
$row;
}
fclose(
$handle
);
return $rows;
}
/*
==================================================
BASELINE
==================================================
*/
$baselineRows =
evid_read_csv(
$baselineFile
);
$baseline =
array();
if (
!empty(
$baselineRows
)
)
{
$header =
array_shift(
$baselineRows
);
foreach (
$baselineRows
as $row
)
{
if (
count(
$row
) < 4
)
{
continue;
}
$id =
$row[0];
$name =
$row[1];
$price =
$row[2];
$status =
strtolower(
$row[3]
);
if (
$id === ''
||
$name === ''
)
{
continue;
}
if (
$status !== 'a'
&&
$status !== 'l'
)
{
continue;
}
$baseline[] =
array(
'id' =>
$id,
'name' =>
$name,
'price' =>
$price,
'status' =>
$status
);
}
}
/*
==================================================
GROUP EXTRACTION
==================================================
Predpoklad:
Názov začína druhom:
Jabloň ...
Hruška ...
Slivka ...
Prvý text pred medzerou / pomlčkou
použijeme ako skupinu.
==================================================
*/
function evid_group(
$name
)
{
$name =
trim(
$name
);
if (
$name === ''
)
{
return 'OSTATNÉ';
}
/*
Odstránenie prípadného prefixu.
Napr.:
"Jabloň (letná) - 'Discovery'"
*/
if (
preg_match(
'/^([^\-\–\—]+?)(?:\s+\(|\s+-|\s+–|\s+—|$)/u',
$name,
$match
)
)
{
$group =
trim(
$match[1]
);
if (
$group !== ''
)
{
return $group;
}
}
/*
Fallback:
prvé slovo
*/
$parts =
preg_split(
'/\s+/u',
$name
);
if (
!empty(
$parts[0]
)
)
{
return $parts[0];
}
return 'OSTATNÉ';
}
/*
==================================================
CURRENT LIVE PARSER
==================================================
LIVE sa číta ako TEXT.
Nikdy include / require.
==================================================
*/
function evid_read_live(
$liveFile
)
{
$products =
array();
if (
$liveFile === ''
||
!is_file(
$liveFile
)
||
!is_readable(
$liveFile
)
)
{
return $products;
}
$raw =
file_get_contents(
$liveFile
);
if (
$raw === false
||
$raw === ''
)
{
return $products;
}
$raw =
preg_replace(
'/^\xEF\xBB\xBF+/',
'',
$raw
);
$start =
strpos(
$raw,
'$products'
);
if (
$start === false
)
{
return $products;
}
$end =
strpos(
$raw,
'$slugToProductIdMap',
$start
);
if (
$end === false
||
$end <= $start
)
{
$end =
strlen(
$raw
);
}
$area =
substr(
$raw,
$start,
$end - $start
);
$matchCount =
preg_match_all(
"/['\"]([a-z0-9]{8})['\"]\s*=>\s*array\s*\(/i",
$area,
$matches,
PREG_OFFSET_CAPTURE
);
if (
$matchCount === false
||
empty(
$matches[1]
)
)
{
return $products;
}
foreach (
$matches[1]
as $index => $match
)
{
$id =
$match[0];
$startPos =
$match[1];
if (
isset(
$matches[1][$index + 1]
)
)
{
$endPos =
$matches[1][$index + 1][1];
}
else
{
$endPos =
strlen(
$area
);
}
$block =
substr(
$area,
$startPos,
$endPos - $startPos
);
/*
STATUS
*/
$status =
'';
if (
preg_match(
"/['\"]staticAvailValue['\"]\s*=>\s*['\"]available['\"]/i",
$block
)
)
{
$status =
'a';
}
elseif (
preg_match(
"/['\"]staticAvailValue['\"]\s*=>\s*['\"]lack['\"]/i",
$block
)
)
{
$status =
'l';
}
elseif (
preg_match(
"/['\"]staticAvailValue['\"]\s*=>\s*['\"]notavailable['\"]/i",
$block
)
)
{
$status =
'n';
}
/*
Iba verejne relevantne stavy.
*/
if (
$status !== 'a'
&&
$status !== 'l'
)
{
continue;
}
/*
NAME
*/
$name =
'';
if (
preg_match(
"/['\"]name['\"]\s*=>\s*'(.*?)(?\s*\"(.*?)(?\s*(['\"])(.*?)\\1/s",
$block,
$priceMatch
)
)
{
$price =
trim(
$priceMatch[2]
);
}
elseif (
preg_match(
"/['\"]price['\"]\s*=>\s*([0-9]+(?:\.[0-9]+)?)/i",
$block,
$priceMatch
)
)
{
$price =
trim(
$priceMatch[1]
);
}
$price =
str_replace(
',',
'.',
$price
);
$products[] =
array(
'id' =>
$id,
'name' =>
$name,
'price' =>
$price,
'status' =>
$status
);
}
return $products;
}
/*
==================================================
CURRENT LIVE
==================================================
*/
$currentLive =
evid_read_live(
$liveFile
);
/*
==================================================
CURRENT STATISTICS
==================================================
*/
$currentTotal =
count(
$currentLive
);
$currentAvailable =
0;
$currentLack =
0;
$currentGroups =
array();
foreach (
$currentLive
as $product
)
{
if (
$product['status'] === 'a'
)
{
$currentAvailable++;
}
elseif (
$product['status'] === 'l'
)
{
$currentLack++;
}
$group =
evid_group(
$product['name']
);
if (
!isset(
$currentGroups[$group]
)
)
{
$currentGroups[$group] =
0;
}
$currentGroups[$group]++;
}
ksort(
$currentGroups,
SORT_NATURAL | SORT_FLAG_CASE
);
/*
==================================================
CHANGE HISTORY
==================================================
*/
$changeRows =
evid_read_csv(
$changesFile
);
$changes =
array();
if (
!empty(
$changeRows
)
)
{
$changeHeader =
array_shift(
$changeRows
);
foreach (
$changeRows
as $row
)
{
if (
count(
$row
) < 7
)
{
continue;
}
$changes[] =
array(
'date' =>
$row[0],
'time' =>
$row[1],
'id' =>
$row[2],
'name' =>
$row[3],
'type' =>
strtolower(
$row[4]
),
'old' =>
$row[5],
'new' =>
$row[6]
);
}
}
/*
==================================================
CHANGE COUNT
==================================================
*/
$changeCount =
count(
$changes
);
/*
==================================================
HTML
==================================================
*/
?>
Evidencia e-shopu — Jeseň 2026
EVIDENCIA E-SHOPU
JESEŇ 2026
17.08.2026
ŠTART SEZÓNY
Nasadenie produktov do e-shopu
24.08.2026
OTVORENIE E-SHOPU
Otvorenie pre verejnosť a príjem objednávok
01.09.2026
ZAČIATOK OBJEDNÁVKOVEJ SEZÓNY
Očakávané prvé objednávky
Aktuálny stav e-shopu
Produkty v ponuke
V predaji
Zatiaľ nenaskladnené
Aktuálne zverejnené druhy
'
.
'Aktuálne nie sú k dispozícii údaje.'
.
'
';
}
else
{
foreach (
$currentGroups
as $groupName =>
$groupCount
)
{
echo
''
.
''
.
htmlspecialchars(
$groupName,
ENT_QUOTES,
'UTF-8'
)
.
''
.
''
.
number_format(
$groupCount,
0,
',',
' '
)
.
''
.
'';
}
}
?>
Kliknutím na ktorúkoľvek skupinu sa zobrazí celý aktuálny cenník.
Východiskový stav — 17.08.2026
Produkty zverejnené pri štarte jesennej sezóny.
Zahrnuté sú iba produkty v stave
V PREDAJI
alebo
ZATIAĽ NENASKLADNENÉ.
| ID | PRODUKT | CENA | STAV | ' . 'Východiskový stav zatiaľ nie je k dispozícii.' . ' | ' . ''; } else { foreach ( $baseline as $record ) { echo '
|---|---|---|---|
| ' . htmlspecialchars( $record['id'], ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( $record['name'], ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( evid_price( $record['price'] ), ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( evid_status_label( $record['status'] ), ENT_QUOTES, 'UTF-8' ) . ' | '; echo '
História zmien e-shopu
Zaznamenané zmeny ceny a dostupnosti.
Celkom zmien:
| DÁTUM | ČAS | PRODUKT | TYP | PÔVODNÝ STAV | NOVÝ STAV | ' . 'Zatiaľ nebola zaznamenaná žiadna zmena.' . ' | ' . ''; } else { /* Najnovšie zmeny hore. */ $displayChanges = array_reverse( $changes ); foreach ( $displayChanges as $change ) { echo '
|---|---|---|---|---|---|
| ' . htmlspecialchars( $change['date'], ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( $change['time'], ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( $change['name'], ENT_QUOTES, 'UTF-8' ) . ' | '; /* TYPE */ $typeLabel = ''; if ( $change['type'] === 'price' ) { $typeLabel = 'CENA'; } elseif ( $change['type'] === 'status' ) { $typeLabel = 'DOSTUPNOSŤ'; } else { $typeLabel = strtoupper( $change['type'] ); } echo '' . htmlspecialchars( $typeLabel, ENT_QUOTES, 'UTF-8' ) . ' | '; /* OLD */ $old = $change['old']; $new = $change['new']; if ( $change['type'] === 'price' ) { $oldDisplay = evid_price( $old ); $newDisplay = evid_price( $new ); } else { $oldStatus = strtolower( $old ); $newStatus = strtolower( $new ); $oldDisplay = $oldStatus === 'a' ? 'V PREDAJI' : ( $oldStatus === 'l' ? 'ZATIAĽ NENASKLADNENÉ' : $old ); $newDisplay = $newStatus === 'a' ? 'V PREDAJI' : ( $newStatus === 'l' ? 'ZATIAĽ NENASKLADNENÉ' : $new ); } echo '' . htmlspecialchars( $oldDisplay, ENT_QUOTES, 'UTF-8' ) . ' | '; echo '' . htmlspecialchars( $newDisplay, ENT_QUOTES, 'UTF-8' ) . ' | '; echo '