auctions-1.0.x-dev/modules/auctions_commerce/auctions_commerce.module
modules/auctions_commerce/auctions_commerce.module
<?php
/**
* @file
* Contains custom hooks and functions related to auction workflow and orders.
*/
use Drupal\auctions_core\Entity\AuctionBid;
use Drupal\auctions_core\Entity\AuctionItem;
use Drupal\commerce_order\Entity\OrderItem;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements of hook_help().
*/
function auctions_commerce_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
case 'help.page.auctions_commerce':
$modPath = Drupal::service('extension.path.resolver')->getPath('module', 'auctions_commerce');
$readmePath = $modPath . '/README.md';
if (is_file($readmePath)) {
$text = \file_get_contents($readmePath, false);
if (!\Drupal::moduleHandler()->moduleExists('markdown')) {
return '<pre>' . $text . '</pre>';
}
else {
// Use the Markdown filter to render the README.
$filter_manager = \Drupal::service('plugin.manager.filter');
$settings = \Drupal::configFactory()->get('markdown.settings')->getRawData();
$config = ['settings' => $settings];
$filter = $filter_manager->createInstance('markdown', $config);
return $filter->process($text, 'en');
}
}
else {
return t('Please see README in Auctions base module');
}
break;
}
}
/**
* Implements hook_auctions_core_workflow_action().
*
* AUCTION CORE HOOK.
*
* allow other modules to interact upon auction_item workflow changes.
*/
function auctions_commerce_auctions_core_workflow_action(AuctionItem $auctionItem, $workflow) {
$auctionTools = \Drupal::service('auctions_commerce.orderItem');
switch ($workflow) {
// Bidding open.
case 1:
// Auction relisted.
case 2:
break;
// Auction closed.
case 3:
if ($auctionItem->hasBids()) {
$topthree = $auctionItem->getBids($auctionItem->getRelistCount());
$key = \array_keys($topthree);
$topBid = $topthree[$key[0]];
$auctionTools->createAuctionOrderItem($topBid);
}
break;
}
}
/**
* This is a utility function simply to give easy proceedural access.
*/
function auctions_commerce_create_auction_order_item(AuctionBid $auctionBid) {
$orderItemToolkit = \Drupal::service('auctions_commerce.orderItem');
$orderItem = $orderItemToolkit->createAuctionOrderItem($auctionBid);
return $orderItem;
}
/**
* Implements hook_ENTITY_TYPE_delete() for commerce_order_item.
*
* If a 'User' removes an auction_item from the cart, this function removes it.
*/
function auctions_commerce_commerce_order_item_delete(EntityInterface $entity) {
if ($entity instanceof OrderItem && $entity->get('type')->getString() == 'auction_item') {
// @todo Implement bid reject workflow. @bidPurchaseOffer
// @todo Notify via email the story & owner that this order item has been removed from the cart. @bidPurchaseOffer
}
}
