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();
// }
// }
//
//
// }
