summaryrefslogtreecommitdiffstatshomepage
path: root/core/modules/navigation/navigation.install
blob: 77390203123a334cbf596240c0e6e45e3fc4c0b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php

/**
 * @file
 * Install, update and uninstall functions for the navigation module.
 */

/**
 * Implements hook_install().
 */
function navigation_install(bool $is_syncing): void {
  // Do not modify config during sync. Config should be already consolidated.
  if ($is_syncing) {
    return;
  }

  $blocks = \Drupal::moduleHandler()->invokeAll('navigation_defaults');
  $manager = \Drupal::service('plugin.manager.config_action');
  foreach ($blocks as $block) {
    $manager->applyAction('addNavigationBlock', 'navigation.block_layout', $block);
  }
}

/**
 * Reorganizes the values for the logo settings.
 */
function navigation_update_11001(array &$sandbox): void {
  $settings = \Drupal::configFactory()->getEditable('navigation.settings');
  $settings->setData([
    'logo' => [
      'provider' => $settings->get('logo_provider'),
      'managed' => is_array($settings->get('logo_managed')) ? current($settings->get('logo_managed')) : $settings->get('logo_managed'),
      'max' => [
        'filesize' => $settings->get('logo_max_filesize'),
        'height' => $settings->get('logo_height') ?? 40,
        'width' => $settings->get('logo_width') ?? 40,
      ],
    ],
  ]);
  $settings->save(TRUE);
}

/**
 * Update for navigation logo to store the file path instead of ID.
 */
function navigation_update_11002(array &$sandbox): void {
  $settings = \Drupal::configFactory()->getEditable('navigation.settings');
  $logo_path = '';
  if (!empty($settings->get('logo.managed'))) {
    $logo_fid = $settings->get('logo.managed');
    $file = \Drupal::entityTypeManager()->getStorage('file')->load($logo_fid);
    if (isset($file)) {
      $logo_path = $file->getFileUri();
      // Delete file usage reference because they are not being used anymore.
      \Drupal::service('file.usage')->delete($file, 'navigation');
    }
  }

  $settings->set('logo.path', $logo_path);
  $settings->clear('logo.managed');
  $settings->save();
}