• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basket.php
  • Класс: BitrixSaleBasket
  • Вызов: Basket::deleteOld
static function deleteOld($days)
{
	$expired = new MainTypeDateTime();
	$expired->add('-'.$days.' days');
	$expiredValue = $expired->format('Y-m-d H:i:s');

	/** @var MainDBConnection $connection */
	$connection = MainApplication::getConnection();
	/** @var MainDBSqlHelper $sqlHelper */
	$sqlHelper = $connection->getSqlHelper();

	$sqlExpiredDate = $sqlHelper->getDateToCharFunction("'" . $expiredValue . "'");

	$query = "DELETE FROM b_sale_basket	WHERE
		FUSER_ID IN (
			SELECT b_sale_fuser.id FROM b_sale_fuser WHERE
					b_sale_fuser.DATE_UPDATE < ".$sqlExpiredDate."
					AND b_sale_fuser.USER_ID IS NULL
			) AND ORDER_ID IS NULL LIMIT ". static::BASKET_DELETE_LIMIT;

	$connection->queryExecute($query);
	$affectRows = $connection->getAffectedRowsCount();

	$query = "DELETE FROM b_sale_basket	
		WHERE
			FUSER_ID NOT IN (SELECT b_sale_fuser.id FROM b_sale_fuser)
			AND 
			ORDER_ID IS NULL
		LIMIT ". static::BASKET_DELETE_LIMIT;

	$connection->queryExecute($query);
	$affectRows = max($affectRows, $connection->getAffectedRowsCount());

	$query = "
		DELETE
		FROM b_sale_basket_props 
		WHERE b_sale_basket_props.BASKET_ID NOT IN (
			SELECT b_sale_basket.ID FROM b_sale_basket
		)
		LIMIT ".static::BASKET_DELETE_LIMIT;

	$connection->queryExecute($query);

	return max($affectRows, $connection->getAffectedRowsCount());
}