You are here

gathercontent.install in GatherContent 8.3

Install and uninstall script for GatherContent module.

File

gathercontent.install
View source
<?php

/**
 * @file
 * Install and uninstall script for GatherContent module.
 */
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\field\Entity\FieldStorageConfig;

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

  /** @var \Drupal\Core\Entity\EntityFieldManager $entityFieldManager */
  $entityFieldManager = \Drupal::service('entity_field.manager');

  /** @var \Drupal\Core\Field\FieldStorageDefinitionListener $fieldStorageDefinitionListener */
  $fieldStorageDefinitionListener = \Drupal::service('field_storage_definition.listener');
  $definition = $entityFieldManager
    ->getFieldStorageDefinitions('node')['gc_mapping_id'];
  $fieldStorageDefinitionListener
    ->onFieldStorageDefinitionCreate($definition);
  $definition = $entityFieldManager
    ->getFieldStorageDefinitions('node')['gc_id'];
  $fieldStorageDefinitionListener
    ->onFieldStorageDefinitionCreate($definition);
  if (\Drupal::entityTypeManager()
    ->hasDefinition('taxonomy_term')) {
    $entityFieldManager = \Drupal::service('entity_field.manager');
    $definitions = $entityFieldManager
      ->getFieldStorageDefinitions('taxonomy_term');
    if (!isset($definitions['gathercontent_option_ids'])) {
      FieldStorageConfig::create([
        'field_name' => 'gathercontent_option_ids',
        'entity_type' => 'taxonomy_term',
        'type' => 'string',
        'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
        'locked' => TRUE,
        'persist_with_no_fields' => TRUE,
        'settings' => [
          'is_ascii' => FALSE,
          'case_sensitive' => FALSE,
        ],
      ])
        ->save();
    }
  }
}

/**
 * Implements hook_requirements().
 */
function gathercontent_requirements($phase) {
  if ($phase !== 'runtime') {
    return [];
  }
  $t = 't';
  $requirements = [
    'gathercontent_tablesorter' => [
      'title' => $t('GatherContent: Tablesorter plugin'),
      'value' => $t('Unavailable.'),
      'description' => $t('Install <a href="@libraries-page">Libraries</a> module.', [
        '@libraries-page' => 'https://www.drupal.org/project/libraries',
      ]),
      'severity' => REQUIREMENT_INFO,
    ],
  ];
  if (\Drupal::moduleHandler()
    ->moduleExists('libraries')) {
    $tablesorter_lib_info = libraries_detect('tablesorter-mottie');
    if ($tablesorter_lib_info['installed'] && $tablesorter_lib_info['version']) {
      $requirements['gathercontent_tablesorter']['value'] = $tablesorter_lib_info['version'];
      $requirements['gathercontent_tablesorter']['severity'] = REQUIREMENT_OK;
      unset($requirements['gathercontent_tablesorter']['description']);
    }
    else {
      $requirements['gathercontent_tablesorter']['description'] = $t('Download <a href="@tablesorter-github">Mottie\'s tablesorter plugin</a> to <code>sites/all/libraries</code> toget sortable table headers at GatherContent admin UI. Rename it\'s folder to <code>tablesorter-mottie</code>.', [
        '@tablesorter-github' => 'https://github.com/Mottie/tablesorter/archive/v2.25.8.zip',
      ]);
    }
  }
  return $requirements;
}

/**
 * Create gathercontent_option_ids field if doesn't exist.
 */
function gathercontent_update_8301() {

  /** @var \Drupal\Core\Entity\EntityFieldManager $entityFieldManager */
  $entityFieldManager = \Drupal::service('entity_field.manager');
  $definitions = $entityFieldManager
    ->getFieldStorageDefinitions('taxonomy_term');
  if (!isset($definitions['gathercontent_option_ids'])) {
    FieldStorageConfig::create([
      'field_name' => 'gathercontent_option_ids',
      'entity_type' => 'taxonomy_term',
      'type' => 'string',
      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
      'locked' => TRUE,
      'persist_with_no_fields' => TRUE,
      'settings' => [
        'is_ascii' => FALSE,
        'case_sensitive' => FALSE,
      ],
    ])
      ->save();
  }
}

/**
 * Install default import configuration.
 */
function gathercontent_update_8302() {
  $config = \Drupal::service('config.factory')
    ->getEditable('gathercontent.import');
  $config
    ->set('node_default_status', 1);
}

/**
 * Create fields for gathercontent_operation_item entity.
 */
function gathercontent_update_8303() {
  $entity_manager = \Drupal::entityManager();
  $definition = $entity_manager
    ->getFieldStorageDefinitions('gathercontent_operation_item')['created'];
  $entity_manager
    ->onFieldStorageDefinitionCreate($definition);
  $definition = $entity_manager
    ->getFieldStorageDefinitions('gathercontent_operation_item')['changed'];
  $entity_manager
    ->onFieldStorageDefinitionCreate($definition);
}

Functions

Namesort descending Description
gathercontent_install Implements hook_install().
gathercontent_requirements Implements hook_requirements().
gathercontent_update_8301 Create gathercontent_option_ids field if doesn't exist.
gathercontent_update_8302 Install default import configuration.
gathercontent_update_8303 Create fields for gathercontent_operation_item entity.