bee-8.x-1.1/bee.install

bee.install
<?php

use Drupal\Core\Config\FileStorage;
use Drupal\node\Entity\NodeType;
use Drupal\user\RoleInterface;

/**
 * Implements hook_install().
 */
function bee_install() {

  bee_create_require_bat_states();

  user_role_change_permissions(RoleInterface::ANONYMOUS_ID, [
    'view calendar data for any availability_daily event' => TRUE,
    'view calendar data for any availability_hourly event' => TRUE,
  ]);

  user_role_change_permissions(RoleInterface::AUTHENTICATED_ID, [
    'view calendar data for any availability_daily event' => TRUE,
    'view calendar data for any availability_hourly event' => TRUE,
  ]);

  bee_event_series_types_add_fields();
}

/**
 * Implements hook_uninstall().
 */
function bee_uninstall() {
  $node_types = \Drupal::entityTypeManager()->getStorage('node_type')->loadMultiple();
  $entityFieldManager = Drupal::service('entity_field.manager');

  $field_names = [
    'field_availability_daily',
    'field_availability_hourly',
    'field_open_hours',
    'field_use_open_hours',
    'field_product',
    'field_price',
    'field_price_frequency',
  ];

  foreach ($node_types as $node_type) {
    assert($node_type instanceof NodeType);
    $fields = $entityFieldManager->getFieldDefinitions('node', $node_type->id());

    foreach ($field_names as $field_name) {
      if (isset($fields[$field_name])) {
        $fields[$field_name]->delete();
      }
    }

    $node_type->unsetThirdPartySetting('bee', 'bee')->save();
  }

  // Delete bat states related to BEE.
  $storage = \Drupal::entityTypeManager()->getStorage('state');
  $sids = $storage->getQuery()
    ->accessCheck(FALSE)
    ->execute();
  $states = $storage->loadMultiple($sids);
  foreach ($states as $state) {
    if (!empty($state->get("machine_name")->value)) {
      if (substr($state->get("machine_name")->value, 0, 4) == 'bee_') {
        $state->delete();
      }
    }
  }

  bat_event_delete_event_type_schema('availability_daily');
  bat_event_delete_event_type_schema('availability_hourly');
}

/**
 * Add booking "Capacity" field.
 */
function bee_update_8001() {
  if (bat_booking_type_load('bee') !== NULL) {
    bee_create_booking_capacity_field();
  }
}

/**
 * Set cardinality as unlimited for the "booking_event_reference" field.
 */
function bee_update_8002() {
  if (bat_booking_type_load('bee') !== NULL) {
    bee_set_booking_event_reference_field_cardinality();
  }
}

/**
 * Enable module "BAT Event Series"
 */
function bee_update_8003() {
  \Drupal::service('module_installer')->install(['bat_event_series']);
}

/**
 * Import BAT Event series Types.
 */
function bee_update_8004() {
  $configs = [
    'bat_event_series.event_series_type.availability_daily',
    'bat_event_series.event_series_type.availability_hourly',
  ];

  $path = \Drupal::service('extension.list.module')->getPath('bee') . '/config/install';
  $source = new FileStorage($path);
  $config_storage = \Drupal::service('config.storage');
  foreach ($configs as $config) {
    $config_storage->write($config, $source->read($config));
  }

  bee_event_series_types_add_fields();
}

/**
 * Add booking fields "Repeat frequency" and "Repeat until".
 */
function bee_update_8005() {
  if (bat_booking_type_load('bee') !== NULL) {
    bee_create_booking_repeat_frequency_field();
    bee_create_booking_repeat_until_field();
  }
}

/**
 * Add booking "Event series" field.
 */
function bee_update_8006() {
  if (bat_booking_type_load('bee') !== NULL) {
    bee_create_booking_event_series_reference_field();
  }
}

/**
 * Make sure all config settings for content types are in third party config
 * storage.
 */
function bee_update_8007() {
  $node_types = \Drupal::entityTypeManager()->getStorage('node_type')->loadMultiple();
  foreach ($node_types as $node_type) {
    assert($node_type instanceof NodeType);
    $bee_settings = Drupal::configFactory()->get('node.type.' . $node_type->id())->get('bee');
    if (empty($node_type->getThirdPartySetting('bee', 'bee')) && !empty($bee_settings)) {
      $node_type->setThirdPartySetting('bee', 'bee', $bee_settings)->save();
    }
    if (!empty($bee_settings)) {
      Drupal::configFactory()->getEditable('node.type.' . $node_type->id())->clear('bee')->save();
    }
  }
}

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

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