Source of file CartCleanupTask.php
Size: 1,558 Bytes - Last Modified: 2021-12-24T06:35:03+00:00
/var/www/docs.ssmods.com/process/src/src/Tasks/CartCleanupTask.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | <?php namespace SilverShop\Tasks; use LogicException; use SilverShop\Model\Order; use SilverStripe\Dev\BuildTask; use SilverStripe\ORM\FieldType\DBDatetime; /** * Cart Cleanup Task. * * Removes all orders (carts) that are older than a specific time offset. * * @package shop * @subpackage tasks */ class CartCleanupTask extends BuildTask { /** * @config * * @var string */ private static $delete_after_mins = 120; /** * @var string */ protected $title = 'Delete abandoned carts'; /** * @var string */ protected $description = 'Deletes abandoned carts.'; public function run($request) { if (!$this->config()->get('delete_after_mins')) { throw new LogicException('No valid time specified in "delete_after_mins"'); } $count = 0; $time = date('Y-m-d H:i:s', DBDatetime::now()->getTimestamp() - $this->config()->get('delete_after_mins') * 60); $this->log('Deleting all orders since ' . $time); $orders = Order::get()->filter( [ 'Status' => 'Cart', 'LastEdited:LessThan' => $time, ] ); foreach ($orders as $order) { $this->log(sprintf('Deleting order #%s (Reference: %s)', $order->ID, $order->Reference)); $order->delete(); $order->destroy(); $count++; } $this->log("$count old carts removed."); } protected function log($msg) { echo $msg . "\n"; } } |