paragraphs_sets-8.x-2.x-dev/paragraphs_sets.install

paragraphs_sets.install
<?php

/**
 * @file
 * Installation hooks for paragraphs_setss module.
 */

/**
 * Implements hook_install().
 */
function paragraphs_sets_install(): void {
  // Assign a weight 1 higher than paragraphs.
  module_set_weight('paragraphs_sets', 12);
}

/**
 * Implements hook_uninstall().
 */
function paragraphs_sets_uninstall(bool $is_syncing): void {
  $config_factory = \Drupal::configFactory();
  $names = $config_factory->listAll('core.entity_form_display.');
  $storage = \Drupal::entityTypeManager()
    ->getStorage('entity_form_display');

  foreach ($names as $name) {
    $config = $config_factory->getEditable($name);
    /** @var \Drupal\Core\Entity\Entity\EntityFormDisplay $form_display */
    $form_display = $storage->load($config->get('id'));
    // Loop over the fields to detect possible settings to be removed:
    $fields = $form_display->getComponents();
    foreach ($fields as $field_name => &$field) {
      if (isset($field['third_party_settings']['paragraphs_sets'])) {
        unset($field['third_party_settings']['paragraphs_sets']);
        $form_display->setComponent($field_name, $field)->save();
      }
    }
  }
}

/**
 * Implements hook_requirements().
 *
 * @phpstan-ignore-next-line
 */
function paragraphs_sets_requirements(string $phase): array {
  $requirements = [];

  if (!in_array($phase, ['install', 'runtime'])) {
    return $requirements;
  }

  // Check version of paragraphs module.
  if (\Drupal::moduleHandler()->moduleExists('paragraphs')) {
    /** @var array{
     *   'version': string,
     *   ...
     * } $module_info */
    $module_info = \Drupal::service('extension.list.module')->getExtensionInfo('paragraphs');
    if (empty($module_info['version'])) {
      // Module checked out from git so we assume it is newer than required.
      return $requirements;
    }
    if (version_compare($module_info['version'], '8.x-1.3', '<')) {
      $requirements['paragraphs'] = [
        'title' => t('Paragraphs version'),
        'description' => t('You need to install at least version 8.x-1.3 of the %paragraphs module (installed version is %version).', [
          '%paragraphs' => 'Paragraphs',
          '%version' => $module_info['version'],
        ]),
        'value' => t('Incompatible version'),
        'severity' => REQUIREMENT_ERROR,
      ];
    }
  }

  return $requirements;
}

/**
 * Enable sets for all paragraph fields for backward compatibility.
 */
function paragraphs_sets_update_8201(): void {
  $config_factory = \Drupal::configFactory();
  $names = $config_factory->listAll('core.entity_form_display.');
  foreach ($names as $name) {
    $config = $config_factory->getEditable($name);
    $content = $config->get('content');
    /** @var array<string, array{
     *   'type': string,
     *   'third_party_settings'?: array<string, mixed>,
     *   ...
     * }> $content */
    foreach ($content as $field => $info) {
      if ($info['type'] !== 'paragraphs') {
        continue;
      }
      // @phpstan-ignore-next-line
      if (!isset($info['third_party_settings']['paragraphs_sets']['paragraphs_sets']['use_paragraphs_sets'])) {
        /** @var array<string, mixed> $config_array */
        $config_array = $config->getOriginal();
        // @phpstan-ignore-next-line
        $config_array['content'][$field]['third_party_settings']['paragraphs_sets']['paragraphs_sets']['use_paragraphs_sets'] = '1';
        $config->setData($config_array);
        $config->save();
      }
    }
  }
}

/**
 * Change existing configuration files, property name.
 */
function paragraphs_sets_update_9001(): void {
  /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
  $config_factory = \Drupal::configFactory();
  $query = \Drupal::entityQuery('paragraphs_set');
  /** @var array<string> $results */
  $results = $query->execute();
  foreach ($results as $id) {
    /** @var \Drupal\Core\Config\ImmutableConfig $config */
    $config = $config_factory->getEditable("paragraphs_sets.set.{$id}");
    /** @var array<string, array<string, string>> $data */
    $data = $config->get('paragraphs');
    // Replace 'type' property with 'bundle'.
    foreach ($data as $key => $item) {
      if (isset($item['type'])) {
        $data[$key]['bundle'] = $item['type'];
        unset($data[$key]['type']);
      }
    }
    try {
      $config->set('paragraphs', $data);
      $config->save();
    }
    catch (Exception $exception) {
      \Drupal::logger('paragraphs_sets')->error($exception->getMessage());
    }
  }
}

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

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