commerce_signifyd-1.0.x-dev/commerce_signifyd.module

commerce_signifyd.module
<?php

/**
 * @file
 * Hook implementations for the commerce_signifyd module.
 */

use Drupal\commerce_signifyd\SignifydClientInterface;
use Drupal\Core\Render\Element;

/**
 * Implements hook_theme().
 */
function commerce_signifyd_theme() {
  return [
    'signifyd_case' => [
      'render element' => 'elements',
    ],
  ];
}

/**
 * Prepares variables for signifyd case templates.
 *
 * Default template: signifyd-case.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - elements: An associative array containing rendered fields.
 *   - attributes: HTML attributes for the containing element.
 */
function template_preprocess_signifyd_case(array &$variables) {
  /** @var \Drupal\commerce_signifyd\Entity\SignifydCaseInterface $case */
  $case = $variables['elements']['#signifyd_case'];

  $variables['view_mode'] = $variables['elements']['#view_mode'];
  $variables['signifyd_case'] = $case;
  $variables['case_id'] = $case->id();
  $variables['case_url'] = SignifydClientInterface::SIGNIFYD_WEB_URL . 'orders/' . $case->id();
  $variables['case_score'] = $case->getScore();
  $variables['case_guarantee'] = $case->getGuarantee();
  $variables['case_status'] = $case->status->value;
  $variables['case_decision'] = $case->getDecision();
  // Helpful $content variable for templates.
  $variables['content'] = [];
  foreach (Element::children($variables['elements']) as $key) {
    $variables['content'][$key] = $variables['elements'][$key];
  }
}

/**
 * Implements hook_preprocess_commerce_order().
 */
function commerce_signifyd_preprocess_commerce_order(&$variables) {
  $entity_type_manager = \Drupal::entityTypeManager();
  /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
  $order = $variables['elements']['#commerce_order'];
  $signifyd_config = \Drupal::config('commerce_signifyd.settings');
  $signifyd_enabled = $signifyd_config->get('order_types.' . $order->bundle() . '.enable');
  if ($signifyd_enabled) {
    /** @var \Drupal\commerce_signifyd\SignifydCaseStorageInterface $signifyd_storage */
    $signifyd_storage = $entity_type_manager->getStorage('signifyd_case');
    $signifyd_view_builder = $entity_type_manager->getViewBuilder('signifyd_case');
    if ($signifyd_cases = $signifyd_storage->loadByOrder($order)) {
      $variables['additional_order_fields']['signifyd_case'] = $signifyd_view_builder->viewMultiple($signifyd_cases);
    }
  }
}

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

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