arch-8.x-1.x-dev/modules/logger/arch_logger.module

modules/logger/arch_logger.module
<?php
/**
 * @file
 * Logger module.
 */

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Url;

/**
 * Implements hook_entity_operation_alter().
 */
function arch_logger_entity_operation_alter(array &$operations, EntityInterface $entity) {
  if (
    $entity->getEntityTypeId() !== 'order'
    || !$entity->access('view')
  ) {
    return;
  }

  $current_user = \Drupal::currentUser();
  if (!$current_user->hasPermission('view order history')) {
    return;
  }

  $operations['history'] = [
    'title' => t('History'),
    'weight' => 60,
    'url' => Url::fromRoute('entity.order.history', ['order' => $entity->id()]),
  ];

  return $operations;
}

/**
 * Implements hook_ENTITY_TYPE_insert().
 */
function arch_logger_order_insert(EntityInterface $entity) {
  $container = \Drupal::getContainer();

  /** @var \Drupal\arch_logger\Services\ArchLogger $logger_service */
  $logger_service = $container->get('arch_logger');

  /** @var \Drupal\Core\Session\AccountInterface $current_user */
  $current_user = $container->get('current_user');

  if ($entity->get('uid')->getString() === $current_user->id()) {
    $logger_service->saveCartLogs($entity);
  }
  $logger_service->insert($entity, 'Order created.');
}

/**
 * Implements hook_ENTITY_TYPE_update().
 */
function arch_logger_order_update(EntityInterface $entity) {
  /** @var \Drupal\arch_logger\Services\ArchLogger $logger_service */
  $logger_service = \Drupal::getContainer()->get('arch_logger');

  $original_status = $entity->original->get('status')->getString();
  $new_status = $entity->get('status')->getString();

  $message = 'Order changed.';
  if ($original_status !== $new_status) {
    $message = 'Order status changed.';
  }

  $logger_service->insert($entity, $message);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc