Source of file CleanExpiredEstimatesTask.php
Size: 2,147 Bytes - Last Modified: 2021-12-23T10:24:42+00:00
/var/www/docs.ssmods.com/process/src/src/tasks/CleanExpiredEstimatesTask.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | <?php namespace SilverCommerce\ShoppingCart\Tasks; use DateTime; use SilverStripe\Dev\BuildTask; use SilverStripe\Security\Member; use SilverStripe\Control\Director; use SilverCommerce\OrdersAdmin\Model\Estimate; use SilverCommerce\ShoppingCart\Model\ShoppingCart as ShoppingCart; /** * Simple task that removes estimates that have passed their end date * and are not assigned to a customer. * * @author ilateral (http://www.ilateral.co.uk) * @package shoppingcart */ class CleanExpiredEstimatesTask extends BuildTask { protected $title = 'Clean expired estimates'; protected $description = 'Clean all estimates that are past their expiration date and have no users assifgned'; protected $enabled = true; /** * Should this task output commands * * @var boolean */ protected $silent = false; /** * @return boolean */ public function getSilent() { return $this->silent; } /** * set the silent parameter * * @param boolean $set * @return CleanExpiredEstimatesTask */ public function setSilent($set) { $this->silent = $set; return $this; } function run($request) { $now = new DateTime(); $days = Estimate::config()->default_end; $past = $now->modify("-{$days} days"); $all = ShoppingCart::get()->filter([ "StartDate:LessThan" => $past->format('Y-m-d H:i:s') ]); $i = 0; foreach ($all as $cart) { // Is the cart currentyl assigned to a member? if ($cart->ContactID) { $curr = $cart->Contact()->Member(); } else { $curr = false; } if (empty($curr)) { $cart->delete(); $i++; } } $this->log('removed '.$i.' expired estimates.'); } private function log($message) { if (!$this->silent) { if (Director::is_cli()) { echo $message . "\n"; } else { echo $message . "<br/>"; } } } } |