81 lines
2.2 KiB
PHP
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;
|
|
}
|
|
}
|