1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
<?php
/* --------------------------------------------------------------
SharedShoppingCartService.inc.php 2016-04-08 gm
Gambio GmbH
http://www.gambio.de
Copyright (c) 2016 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
/**
* Class SharedShoppingCartService
*
* @category System
* @package SharedShoppingCart
*/
class SharedShoppingCartService implements SharedShoppingCartServiceInterface
{
/**
* @var SharedShoppingCartRepository
*/
protected $repository;
/**
* @var SharedShoppingCartSettingsInterface
*/
protected $settings;
/**
* SharedShoppingCartService constructor.
*
* @param \SharedShoppingCartRepository $repository
* @param \SharedShoppingCartSettingsInterface $settings
*/
public function __construct(SharedShoppingCartRepository $repository, SharedShoppingCartSettingsInterface $settings)
{
$this->repository = $repository;
$this->settings = $settings;
}
/**
* Stores the cart and returns the hash
*
* @param array $shoppingCartContent The cart content
* @param IdType|null $userId The user ID of the user who is sharing the cart
*
* @return string The hash of the cart
*/
public function storeShoppingCart(array $shoppingCartContent, IdType $userId = null)
{
$jsonShoppingCart = json_encode($shoppingCartContent);
return $this->repository->storeShoppingCart(new StringType($jsonShoppingCart), $userId);
}
/**
* Gets the content of the shopping cart corresponding to the hash
*
* @param StringType $shoppingCartHash Hash of the shopping cart
*
* @return array Content of the shopping cart
*/
public function getShoppingCart(StringType $shoppingCartHash)
{
return json_decode($this->repository->getShoppingCart($shoppingCartHash));
}
/**
* Deletes all shared shopping carts that exceeded the configured life period
*/
public function deleteExpiredShoppingCarts()
{
$lifePeriod = $this->settings->getLifePeriod();
if($lifePeriod === 0)
{
return;
}
$currentDate = new DateTime();
$lifePeriodInterval = new DateInterval('P' . $lifePeriod . 'D');
$expirationDate = $currentDate->sub($lifePeriodInterval);
$this->repository->deleteShoppingCartsOlderThan($expirationDate);
}
}