Время жизни корзины netcat

Так уж повелось, что корзина в netcat хранится в $_SESSION, отсюда время её жизни порядка 30 минут, после бездействия она удаляется.

Самое просто решение, это дублировать корзину в cookie.

namespace Akh\Shop\Cart;

use nc_Core;

class Cookie
{
    public function __construct()
    {
        global $catalogue;

        // сессия корзины создаётся позже, так что при её отсутствии создадим её для текущего сайта
        if (!isset($_SESSION['nc_netshop_' . $catalogue . '_cart'])) {
            $_SESSION['nc_netshop_' . $catalogue . '_cart'] = null;
        }

        foreach ($_SESSION as $sessName => $sessValue) {
            if (strpos($sessName, 'nc_netshop_') === 0) {
                if (is_array($sessValue)) {
                    // занесение данных в куку
                    $this->setCookie($sessName, $sessValue);
                } else {
                    // восстановление данных из куки
                    $this->restoreCart($sessName);
                }
            }
        }
    }

    /**
     * Восстановление корзины из куки
     * @param $name
     */
    protected function restoreCart($name)
    {
        $cart = json_decode($_COOKIE[$name], true);
        if (is_array($cart)) {
            $_SESSION[$name] = $cart;
        }
    }

    /**
     * Занесение корзину в куку
     * @param $name
     * @param $value
     */
    protected function setCookie($name, $value)
    {
        if (!is_array($value)) {
            $value = [];
        }

        $value = json_encode($value);
        nc_Core::get_object()->cookie->set($name, $value, time() + (3600 * 24 * 365 * 5), true);
    }
}

Достаточно создать класс в /netcat/modules/default/function.inc.php и корзина будет дублироваться в cookie и восстанавливаться при пропаже

new Akh\Shop\Cart\Cookie();