Files

66 lines
1.4 KiB
PHP

<?php
namespace CK\Checkout\Plugin;
class ShippingMethod {
const NO_NO_METHOD = [
'flatrate'
];
/**
* @var \Magento\Framework\App\State
*/
protected $appState;
/**
* @var \CK\Logger\Logger
*/
protected $logger;
/**
* @var \CK\Logger\LoggerFactory
*/
protected $loggerFactory;
public function __construct(
\Magento\Framework\App\State $appState,
\CK\Logger\LoggerFactory $loggerFactory
) {
$this->appState = $appState;
$this->loggerFactory = $loggerFactory;
$this->logger = $this->loggerFactory->create();
}
/**
* After plugin to filter out unwanted shipping methods
*
* @param \Magento\Shipping\Model\Rate\Result $subject
* @param array $result
* @return array
*/
public function afterGetAllRates($subject, $result) {
$this->logger->info('App State: ' . $this->appState->getAreaCode());
if ($this->appState->getAreaCode() == \Magento\Framework\App\Area::AREA_CRONTAB) {
return $result;
}
$filteredMethods = [];
foreach ($result as $method) {
$code = $method->getCarrier(); // e.g. "flatrate", "freeshipping"
$this->logger->info("Checking carrier: {$code}");
if (!in_array($code, self::NO_NO_METHOD)) {
$filteredMethods[] = $method;
} else {
$this->logger->info("Removed shipping method: {$code}");
}
}
return $filteredMethods;
}
}