Files
kupshop/class/smarty_plugins/function.get_session_value.php
2025-08-02 16:30:27 +02:00

81 lines
2.2 KiB
PHP

<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type: function
* Name: get_session_value
* Purpose: returns value stored in session
* -------------------------------------------------------------
*/
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
function smarty_function_get_session_value($params, &$smarty)
{
/** @var \Symfony\Component\HttpFoundation\Session\Session $session */
$session = ServiceContainer::getService('session');
$type = null;
$result = null;
$multiple = null;
$remove = null;
extract($params);
if (empty($type)) {
trigger_error("Chybějící parametr 'type'");
}
switch ($type) {
case 'added_to_cart':
$addedToCart = $session->get('addedToCart');
if ($addedToCart) {
$session->remove('addedToCart');
$ids = array_map(f_field('id_cart'), $addedToCart['items']);
$result = CartItem::createFromSpec(\Query\Operator::inIntArray($ids, 'id'));
foreach ($result as &$item) {
$item->pieces_added = $addedToCart['items'][$item['id']]['quantity'];
}
if (!$multiple) {
$result = reset($result);
}
}
break;
case 'user_messages':
static $flash_messages = null;
if (is_null($flash_messages)) {
$flash_messages = [];
foreach ($session->getFlashBag()->all() as $type => $msg) {
foreach ($msg as $message) {
$flash_messages[] = array_merge(['severity' => $type], $message);
}
}
}
$result = $flash_messages;
break;
case 'added_to_favorites':
$type = 'addedToFavorites';
$remove = true;
// no break
default:
$result = $session->get($type);
if ($remove && $result) {
$session->remove($type);
}
}
if (!empty($params['assign'])) {
$smarty->assign($params['assign'], $result);
} else {
return $result;
}
}