function uc_cart_cron in Ubercart 8.4
Same name and namespace in other branches
- 5 uc_cart/uc_cart.module \uc_cart_cron()
- 6.2 uc_cart/uc_cart.module \uc_cart_cron()
- 7.3 uc_cart/uc_cart.module \uc_cart_cron()
Implements hook_cron().
File
- uc_cart/
uc_cart.module, line 22 - Handles all things concerning Ubercart's shopping cart.
Code
function uc_cart_cron() {
$cart_manager = \Drupal::service('uc_cart.manager');
$cart_config = \Drupal::config('uc_cart.settings');
$connection = \Drupal::database();
// Empty anonymous carts.
$time = strtotime($cart_config
->get('anon_duration') . ' ' . $cart_config
->get('anon_unit') . ' ago');
$result = $connection
->query('SELECT DISTINCT cart_id FROM {uc_cart_products} WHERE changed <= :changed', [
':changed' => $time,
]);
foreach ($result as $row) {
if (strlen($row->cart_id) >= 22) {
$cart_manager
->emptyCart($row->cart_id);
}
}
// Empty authenticated carts.
$time = strtotime($cart_config
->get('auth_duration') . ' ' . $cart_config
->get('auth_unit') . ' ago');
$result = $connection
->query('SELECT DISTINCT cart_id FROM {uc_cart_products} WHERE changed <= :changed', [
':changed' => $time,
]);
foreach ($result as $row) {
if (strlen($row->cart_id) < 22) {
$cart_manager
->emptyCart($row->cart_id);
}
}
// Update status of abandoned orders.
$result = $connection
->query('SELECT order_id FROM {uc_orders} WHERE order_status = :status AND changed < :time', [
':status' => 'in_checkout',
':time' => \Drupal::time()
->getRequestTime() - CartInterface::ORDER_TIMEOUT,
])
->fetchCol();
foreach ($result as $order_id) {
Order::load($order_id)
->setStatusId('abandoned')
->save();
}
}