bee_hotel-1.x-dev/modules/beehotel_samplehotel/src/SampleHotelInstallDrupal.php

modules/beehotel_samplehotel/src/SampleHotelInstallDrupal.php
<?php

namespace Drupal\beehotel_samplehotel;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\node\Entity\Node;
use Symfony\Component\Console\Output\ConsoleOutput;

/**
 * A class to install Drupal related entities.
 */
class SampleHotelInstallDrupal {

  /**
   * Install required modules.
   */
  public function installModules() {

    $where = [];
    $installer = \Drupal::service('module_installer');

    $modules = $this->modules();

    foreach ($modules as $module) {
      $installer->install($module);
    }

    return $where;
  }

  /**
   * Uninstall required modules.
   */
  public function uninstallModules() {

    $where = [];
    $installer = \Drupal::service('module_installer');
    $modules = $this->modules();
    $modules = array_reverse($modules);
    foreach ($modules as $module) {
      $installer->uninstall($module);
    }
    return $where;

  }

  /**
   * Modules required by bee_hotel grouped by priority phases.
   */
  private function modules() {

    $modules = [];
    $modules[] = [
      "devel",
      "commerce",
      "commerce_checkout",
      "commerce_invoice",
      "commerce_payment",
      "commerce_order",
      "bee",
      "bat",
      "bat_api",
    ];

    $modules[] = [
      "bee_hotel",
      "beehotel_pricealterators",
    ];
    return $modules;
  }

  /**
   * Create a node bundle.
   */
  public function createDrupalUnitBundle($sampleData) {

    $output = new ConsoleOutput();
    $output->writeln(" ");
    $where = [];
    $entities = $sampleData['entities'];

    foreach ($entities as $entity => $details) {

      if ($entity == "node_type") {
        $add = \Drupal::entityTypeManager()->getStorage($entity)
          ->create([
            'entityTypeId' => $entity,
            'type' => $details['type'],
            'name' => $details['name'],
            'description' => $details['description'],
            'uid' => $details['uid'],
            'status' => 1,
          ]);
        $add->save();

        $bee_settings = $details['third_party_settings']['bee']['bee'];

        if (isset($bee_settings)) {
          bee_set_bee_to_node($add, $bee_settings);
        }
        $where[] = $details['where'];
      }
    }

    return $where;
  }

  /**
   * Add fields to Unit.
   */
  public function addFieldsToUnitBundle($sampleData) {

    $where = [];
    $fieldsToUnitBundle = $sampleData['entities']['node_type']['fields'];

    foreach ($fieldsToUnitBundle as $field_name => $field_values) {

      $query = \Drupal::entityTypeManager()
        ->getStorage('node');

      $exists = $query
        ->loadByProperties([
          'type' => $sampleData['entities']['node_type']['type'],
        ]);

      if (isset($exists)) {
        $allowed_values = [];
        if (isset($field_values['fieldstorageconfig']['settings']) &&
            isset($field_values['fieldstorageconfig']['settings']['allowed_values'])
        ) {
          foreach ($field_values['fieldstorageconfig']['settings']['allowed_values'] as $allowed_value) {
            $allowed_values[$allowed_value['value']] = $allowed_value['label'];
          }
        }

        $storageDependencies = $field_values['fieldstorageconfig']['dependencies'] ?? [];
        $dependencies = $field_values['fieldconfig']['dependencies'] ?? [];

        if ($fieldsToUnitBundle[$field_name]['fieldconfig']['create'] == TRUE) {
          $data['fieldStorageConfig_' . $field_name] = FieldStorageConfig::create([
            'dependencies' => $storageDependencies,
            'field_name' => $fieldsToUnitBundle[$field_name]['fieldstorageconfig']['field_name'],
            'entity_type' => $fieldsToUnitBundle[$field_name]['fieldstorageconfig']['entity_type'],
            'type' => $fieldsToUnitBundle[$field_name]['fieldstorageconfig']['type'],
            'cardinality' => $fieldsToUnitBundle[$field_name]['fieldstorageconfig']['cardinality'],
            'settings' => ['allowed_values' => $allowed_values],
          ])->save();

          $data['fieldConfig_' . $field_name] = FieldConfig::create([
            'field_name' => $fieldsToUnitBundle[$field_name]['fieldconfig']['field_name'],
            'entity_type' => $fieldsToUnitBundle[$field_name]['fieldconfig']['entity_type'],
            'bundle' => $fieldsToUnitBundle[$field_name]['fieldconfig']['bundle'],
            'label' => $fieldsToUnitBundle[$field_name]['fieldconfig']['label'],
            'dependencies' => $dependencies,
            'description' => $fieldsToUnitBundle[$field_name]['fieldconfig']['description'],
          ])->save();
        }
      }

      // Add field to the form display.
      \Drupal::service('entity_display.repository')->getFormDisplay('node', $fieldsToUnitBundle[$field_name]['fieldconfig']['bundle'])
        ->setComponent($field_name, [
          'type' => $fieldsToUnitBundle[$field_name]['fieldentityformdisplay']['content']['type'],
          'weight' => $fieldsToUnitBundle[$field_name]['fieldentityformdisplay']['content']['weight'],
          'settings' => $fieldsToUnitBundle[$field_name]['fieldentityformdisplay']['content']['settings'],
        ])
        ->save();

      // Add field to the view display.
      \Drupal::service('entity_display.repository')->getViewDisplay('node', $fieldsToUnitBundle[$field_name]['fieldconfig']['bundle'])
        ->setComponent($field_name, [
          'type' => $fieldsToUnitBundle[$field_name]['fieldentityviewdisplay']['content']['type'],
          'weight' => $fieldsToUnitBundle[$field_name]['fieldentityviewdisplay']['content']['weight'],
          'settings' => $fieldsToUnitBundle[$field_name]['fieldentityviewdisplay']['content']['settings'],
        ])
        ->save();

      if (
          isset($fieldsToUnitBundle[$field_name]['fieldentityformdisplay']['content']['hidden']) &&
          $fieldsToUnitBundle[$field_name]['fieldentityformdisplay']['content']['hidden'] == TRUE) {
        // Remove field from form display.
        \Drupal::service('entity_display.repository')->getFormDisplay('node', $fieldsToUnitBundle[$field_name]['fieldconfig']['bundle'])
          ->removeComponent($field_name)
          ->save();
      }

      $where[] = $field_values['where'];

    }
    return $where;
  }

  /**
   * Create a sample node.
   *
   * @todo write code.
   */
  public function createSampleRoom($sampleData) {

    $new_room = Node::create([
      'type' => $sampleData['entities']['node_type']['type'],
    ]);
    $new_room->set('title', "");
    $new_room->set('body', "");
    $new_room->enforceIsNew();
    $new_room->save();
  }

}

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

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