Добрый день!
Поступила задача, для зарегистрированных пользователей хранить товары в корзине если заказ не сделан ещё.
В таблице users добавил поле sksession для хранения товаров в корзине
и написал примерный плагин на обработку событий.
switch($modx->event->name) { 
    case 'OnSHKaddProduct':
    case 'OnSHKAfterRemoveProduct': 
        $id = $modx->user->get('id'); 
        $sql = "UPDATE kill_users SET sksession='" . $_SESSION['purchases'] . "|||" . $_SESSION['addit_params'] . "'  WHERE id='" . $id . "'";
        $modx->exec($sql);
        break;
    case 'OnSHKsaveOrder':
    case 'OnSHKAfterClearCart':
        $ses = '';
        $id = $modx->user->get('id');
        $sql = "UPDATE kill_users SET sksession='".$ses."' WHERE id='" . $id . "'";
        $modx->exec($sql);

    case 'OnWebLogin':
        $id = $modx->user->get('id');
        $result = $modx->db->query("SELECT sksession FROM kill_users WHERE id='" . $id . "'");
        while ($row = $modx->db->getRow($result)) {
            if ($row['sksession'] != '') {
                $res = explode("|||", $row['sksession']);
                $_SESSION['purchases'] = $res[0];
                $_SESSION['addit_params'] = $res[1];
            }
        }

        break;
}


Но данные строки

 $sql = "UPDATE kill_users SET sksession='" . $_SESSION['purchases'] . "|||" . $_SESSION['addit_params'] . "'  WHERE id='" . $id . "'";

и
	 if ($row['sksession'] != '') {
                $res = explode("|||", $row['sksession']);
                $_SESSION['purchases'] = $res[0];
                $_SESSION['addit_params'] = $res[1];
            }

не работают, т.к. очевидно в новом Shopkeeper хранится корзина уже иначе
Может есть готовое решение по данной задаче, или в какую сторону рыть, чтобы правильно хранить данные товаров в своем поле?
Спасибо.