Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / dropzonejs / modules / eb_widget / dropzonejs_eb_widget.install
diff --git a/web/modules/contrib/dropzonejs/modules/eb_widget/dropzonejs_eb_widget.install b/web/modules/contrib/dropzonejs/modules/eb_widget/dropzonejs_eb_widget.install
new file mode 100644 (file)
index 0000000..5323b77
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * @file
+ * Install function hooks for the DropzoneJS entity browser widget module.
+ */
+
+use Drupal\dropzonejs_eb_widget\Plugin\EntityBrowser\Widget\DropzoneJsEbWidget;
+use Drupal\dropzonejs_eb_widget\Plugin\EntityBrowser\Widget\MediaEntityDropzoneJsEbWidget;
+use Drupal\entity_browser\Entity\EntityBrowser;
+
+/**
+ * Update hook dependencies.
+ */
+function dropzonejs_eb_widget_update_dependencies() {
+  $dependencies['dropzonejs_eb_widget'] = [
+    8202 => ['media_entity' => 8201],
+  ];
+  return $dependencies;
+}
+
+/**
+ * Update configurations for configuration key renaming.
+ */
+function dropzonejs_eb_widget_update_8201() {
+
+  $logger = \Drupal::logger('dropzonejs');
+
+  /** @var \Drupal\entity_browser\Entity\EntityBrowser[] $entity_browsers */
+  $entity_browsers = EntityBrowser::loadMultiple();
+
+  foreach ($entity_browsers as $entity_browser) {
+    /** @var \Drupal\entity_browser\WidgetInterface[] $widgets */
+    $widgets = $entity_browser->getWidgets();
+
+    $entity_browser_config = \Drupal::configFactory()->getEditable('entity_browser.browser.' . $entity_browser->id());
+
+    $has_config_changes = FALSE;
+    foreach ($widgets as $widget) {
+      if ($widget instanceof MediaEntityDropzoneJsEbWidget) {
+        $config = $widget->getConfiguration();
+
+        if (!empty($config['settings']['media_entity_bundle']) && empty($config['settings']['media_type'])) {
+          $has_config_changes = TRUE;
+
+          $widget_id = $widget->getConfiguration()['uuid'];
+          $value = $entity_browser_config->get('widgets.' . $widget_id . '.settings.media_entity_bundle');
+
+          $entity_browser_config->set('widgets.' . $widget_id . '.settings.media_type', $value);
+          $entity_browser_config->clear('widgets.' . $widget_id . '.settings.media_entity_bundle');
+
+          $logger->info(sprintf('Configuration changed for widget (%s) of entity browser (%s)', $widget->label(), $entity_browser->label()));
+        }
+        else {
+          $logger->warning(sprintf('Unable to change configuration for widget (%s) of entity browser (%s)', $widget->label(), $entity_browser->label()));
+        }
+      }
+    }
+
+    if ($has_config_changes) {
+      $entity_browser_config->save();
+    }
+  }
+
+}
+
+/**
+ * Update configurations for new keys.
+ */
+function dropzonejs_eb_widget_update_8202() {
+  /** @var \Drupal\entity_browser\Entity\EntityBrowser[] $entity_browsers */
+  $entity_browsers = EntityBrowser::loadMultiple();
+
+  foreach ($entity_browsers as $entity_browser) {
+    /** @var \Drupal\entity_browser\WidgetInterface[] $widgets */
+    $widgets = $entity_browser->getWidgets();
+
+    $has_config_changes = FALSE;
+    foreach ($widgets as $widget) {
+      if ($widget instanceof DropzoneJsEbWidget) {
+        $config = $widget->getConfiguration();
+
+        $config['settings']['clientside_resize'] = FALSE;
+        $config['settings']['resize_height'] = 0;
+        $config['settings']['resize_method'] = 'contain';
+        $config['settings']['resize_quality'] = 1.0;
+        $config['settings']['resize_width'] = 0;
+        $config['settings']['thumbnail_method'] = 'contain';
+        $widget->setConfiguration($config);
+        $has_config_changes = TRUE;
+      }
+    }
+
+    if ($has_config_changes) {
+      $entity_browser->save();
+    }
+  }
+}