public function StockLocationStorage::loadInContext in Commerce Stock 8
Loads the relevant locations for the given Purchasable Entity and context.
Relevant locations are active and available for fulfillment for the product and context provided.
Parameters
\Drupal\commerce\Context $context: The context.
\Drupal\commerce\PurchasableEntityInterface $entity: The purchasable entity.
Return value
\Drupal\commerce_stock_local\Entity\StockLocation[] The enabled stock locations.
Overrides StockLocationStorageInterface::loadInContext
1 call to StockLocationStorage::loadInContext()
- StockLocationStorage::getTransactionLocation in modules/
local_storage/ src/ StockLocationStorage.php - Get the transaction location for the given product and context.
File
- modules/
local_storage/ src/ StockLocationStorage.php, line 40
Class
- StockLocationStorage
- Defines the local stock location storage.
Namespace
Drupal\commerce_stock_localCode
public function loadInContext(Context $context, PurchasableEntityInterface $entity) {
$store = $context
->getStore();
// Make sure we have the availability field for the location.
if ($store
->hasField('field_available_stock_locations')) {
// Get the available locations.
$locations = $store->field_available_stock_locations
->getValue();
// If no store locations.
if (empty($locations)) {
// Return the enabled locations.
return $this
->loadEnabled($entity);
}
// Load them.
$store_locations = [];
foreach ($locations as $location) {
$store_locations[$location['target_id']] = $location['target_id'];
}
$store_locations = $this
->loadMultiple($store_locations);
// Remove if not enabled.
foreach ($store_locations as $id => $location) {
if (!$location
->isActive()) {
unset($store_locations[$id]);
}
}
// If no active store locations.
if (empty($locations)) {
// Return the enabled locations.
return $this
->loadEnabled($entity);
}
return $store_locations;
}
else {
// Return the enabled locations.
return $this
->loadEnabled($entity);
}
}