public function ShippingMethod::applies in Commerce Shipping 8.2
Checks whether the shipping method applies to the given shipment.
Ensures that the conditions pass.
Parameters
\Drupal\commerce_shipping\Entity\ShipmentInterface $shipment: The shipment.
Return value
bool TRUE if shipping method applies, FALSE otherwise.
Overrides ShippingMethodInterface::applies
File
- src/
Entity/ ShippingMethod.php, line 224
Class
- ShippingMethod
- Defines the shipping method entity class.
Namespace
Drupal\commerce_shipping\EntityCode
public function applies(ShipmentInterface $shipment) {
$conditions = $this
->getConditions();
if (!$conditions) {
// Shipping methods without conditions always apply.
return TRUE;
}
$order_conditions = array_filter($conditions, function ($condition) {
/** @var \Drupal\commerce\Plugin\Commerce\Condition\ConditionInterface $condition */
return $condition
->getEntityTypeId() == 'commerce_order';
});
$shipment_conditions = array_filter($conditions, function ($condition) {
/** @var \Drupal\commerce\Plugin\Commerce\Condition\ConditionInterface $condition */
return $condition
->getEntityTypeId() == 'commerce_shipment';
});
$order_conditions = new ConditionGroup($order_conditions, $this
->getConditionOperator());
$shipment_conditions = new ConditionGroup($shipment_conditions, $this
->getConditionOperator());
return $order_conditions
->evaluate($shipment
->getOrder()) && $shipment_conditions
->evaluate($shipment);
}