Source of file ProductPageControllerExtension.php
Size: 2,858 Bytes - Last Modified: 2021-12-24T06:45:40+00:00
/var/www/docs.ssmods.com/process/src/src/Extension/ProductPageControllerExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | <?php namespace Dynamic\FoxyStripe\Extension; use Dynamic\FoxyStripe\Model\ProductCartReservation; use Dynamic\FoxyStripe\Page\ProductPage; use SilverStripe\Control\Controller; use SilverStripe\Control\HTTPRequest; use SilverStripe\Core\Extension; use SilverStripe\Dev\Debug; use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\View\Requirements; /** * Class ProductPageControllerExtension * @package Dynamic\Sheeps\ProductCartExpiry\Extension */ class ProductPageControllerExtension extends Extension { /** * */ public function onAfterInit() { Requirements::javascript('dynamic/foxystripe-inventory: client/dist/javascript/scripts.min.js'); } /** * @var array */ private static $allowed_actions = [ 'reserveproduct' => '->validReservation', ]; /** * @param HTTPRequest|null $request * @return bool */ public function validReservation(HTTPRequest $request = null) { if (!$request instanceof HTTPRequest) { $request = Controller::curr()->getRequest(); } return true; } /** * @param HTTPRequest $request */ public function reserveproduct(HTTPRequest $request) { $code = $request->getVar('code'); $id = $request->getVar('id'); $expires = $request->getVar('expires'); if (!$code || !$id || !$expires) { return false; } if (!$this->isProductReserved($code, $id, $expires)) { $this->addProductReservation($code, $id, $expires); } } /** * @param $code * @param $id * @param $expires * @return bool * @throws \SilverStripe\ORM\ValidationException */ protected function addProductReservation($code, $id, $expires) { $product = ProductPage::get()->filter('Code', $code)->first(); $reservation = ProductCartReservation::create(); $reservation->ReservationCode = $this->getReservationHash($code, $id, $expires); $reservation->CartProductID = $id; $reservation->Code = $code; $reservation->Expires = date('Y-m-d H:i:s', $expires); if ($product !== null) { $reservation->ProductID = $product->ID; } return $reservation->write() > 0; } /** * @param $code * @param $id * @param $expires * @return \SilverStripe\ORM\DataObject */ protected function isProductReserved($code, $id, $expires) { return ProductCartReservation::get()->filter('ReservationCode', $this->getReservationHash($code, $id, $expires))->first(); } /** * @param $code * @param $id * @param $expires * @return string */ protected function getReservationHash($code, $id, $expires) { return md5($code.$id.$expires); } } |