first commit
This commit is contained in:
80
class/smarty_plugins/function.get_session_value.php
Normal file
80
class/smarty_plugins/function.get_session_value.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user