66 lines
1.4 KiB
PHP
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;
|
|
}
|
|
|
|
}
|
|
|