bat-8.x-1.x-dev/modules/bat_event/bat_event.install

modules/bat_event/bat_event.install
<?php

/**
 * @file
 * Sets up the base table.
 *
 * Sets up the base table for our entity and a table to store information about
 * the entity types.
 */

use Drupal\Core\Database\Database;
use Drupal\field\Entity\FieldConfig;

/**
 * Implements hook_requirements().
 */
function bat_event_requirements($phase) {
  if ($phase != 'runtime') {
    return [];
  }

  if (!class_exists('Drupal\bat_roomify\Unit\Unit')) {
    return [
      'roomify' => [
        'title' => t('BAT'),
        'value' => t('Roomify BAT Library Missing'),
        'description' => t('The Roomify BAT Library is missing from your site. Please try re-running the composer update command.'),
        'severity' => REQUIREMENT_ERROR,
      ],
    ];
  }
  else {
    return [
      'roomify' => [
        'title' => t('BAT'),
        'value' => t('The Roomify BAT Library is installed.'),
        'severity' => REQUIREMENT_OK,
      ],
    ];
  }
}

/**
 * Migrate event's dates on the new field.
 */
function bat_event_update_8001() {
  $events = \Drupal::database()->select('event', 'e')
    ->fields('e', [])
    ->condition('start', '', '<>')
    ->execute()
    ->fetchAll();

  foreach ($events as $event) {
    $event_object = bat_event_load($event->id);

    $start_date = new DateTime();
    $start_date->setTimestamp($event->start);

    $end_date = new DateTime();
    $end_date->setTimestamp($event->end);

    $event_object->setStartDate($start_date);
    $event_object->setEndDate($end_date);

    $event_object->save();
  }
}

/**
 * Drop old "start" and "end" columns on event table.
 */
function bat_event_update_8002() {
  Database::getConnection()->schema()->dropField('event', 'start');
  Database::getConnection()->schema()->dropField('event', 'end');
}

/**
 * Set Event fields as required.
 */
function bat_event_update_8003() {
  foreach (bat_event_get_types() as $event_type) {
    $field_names = [
      'event_dates',
      'event_' . $event_type->getTargetEntityType() . '_reference',
    ];

    if ($event_type->getFixedEventStates()) {
      $field_names[] = 'event_state_reference';
    }

    foreach ($field_names as $field_name) {
      $field = FieldConfig::loadByName('bat_event', $event_type->id(), $field_name);
      $field->setRequired(TRUE);
      $field->save();
    }
  }
}




/**
 * Implements hook_install().
 */
function bat_event_install() {
  // @bug
  //bat_event_create_sample_state();

  bat_event_create_sample_event_type();

  // @todo
  // bat_event_create_event();
}

/**
 * Implements hook_uninstall().
 */
function bat_event_uninstall() {
  //bat_event_delete_sample_state();
}

/**
  * Create sample Event States.
  *
  * @todo write code.
  */
function bat_event_create_sample_event_type() {

  \Drupal::entityTypeManager()->getStorage('bat_event_type')->create([
      "event_granularity" => "bat_daily",
      "fixed_event_states" => 1,
      "locked" => TRUE,
      "name" => "Availability Daily",
      "type" => "availability_daily",
      "target_entity_type"  => "bat_unit",
      "uid" => 1,
  ])
  ->save();

  \Drupal::entityTypeManager()->getStorage('bat_event_type')->create([
      "event_granularity" => "bat_hourly",
      "fixed_event_states" => 1,
      "locked" => TRUE,
      "name" => "Availability Hourly",
      "type" => "availability_hourly",
      "target_entity_type"  => "bat_unit",
      "uid" => 1,
  ])
  ->save();

}


/**
  * Create sample Event States.
  *
  * @todo write code.
  */
// function bat_event_create_sample_state() {
//   $add = \Drupal::entityTypeManager()->getStorage('state')->create([
//     "calendar_label" => 'Blocked',
//     "color" => 'FF0000',
//     "id" => "blocked",
//     "locked" => TRUE,
//     "name" => "Blocked",
//     "uid" => 1,
//   ]);
//   $add->save();
//
//
//   \Drupal::entityTypeManager()->getStorage('state')->create([
//     "calendar_label" => 'Available',
//     "color" => '008000',
//     "id" => "available",
//     "locked" => TRUE,
//     "name" => "Available",
//     "uid" => 1,
//   ])
//   ->save();
// }

/**
  * Create sample Event States.
  *
  */
// function bat_event_delete_sample_state() {
//
//   $types = [
//     'available',
//     'blocked',
//   ];
//
//   foreach ($types as $tid) {
//
//     // Delete bundle.
//     $type = \Drupal::entityTypeManager()
//       ->getStorage('state')
//       ->load($tid);
//     if (isset($type))   {
//       $type->delete();
//     }
//   }
//
//
// }

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

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