Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Drupal / Commands / core / ImageCommands.php
diff --git a/vendor/drush/drush/src/Drupal/Commands/core/ImageCommands.php b/vendor/drush/drush/src/Drupal/Commands/core/ImageCommands.php
new file mode 100644 (file)
index 0000000..df71f6f
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+namespace Drush\Drupal\Commands\core;
+
+use Consolidation\AnnotatedCommand\AnnotationData;
+use Drupal\image\Entity\ImageStyle;
+use Drush\Commands\DrushCommands;
+use Drush\Utils\StringUtils;
+use Symfony\Component\Console\Input\InputInterface;
+
+class ImageCommands extends DrushCommands
+{
+
+    /**
+     * Flush all derived images for a given style.
+     *
+     * @command image:flush
+     * @param $style_names A comma delimited list of image style machine names. If not provided, user may choose from a list of names.
+     * @option all Flush all derived images
+     * @usage drush image:flush
+     *   Pick an image style and then delete its derivatives.
+     * @usage drush image:flush thumbnail,large
+     *   Delete all thumbnail and large derivatives.
+     * @usage drush image:flush --all
+     *   Flush all derived images. They will be regenerated on demand.
+     * @validate-entity-load image_style style_names
+     * @validate-module-enabled image
+     * @aliases if,image-flush
+     */
+    public function flush($style_names, $options = ['all' => false])
+    {
+        foreach (ImageStyle::loadMultiple(StringUtils::csvToArray($style_names)) as $style_name => $style) {
+            $style->flush();
+            $this->logger()->success(dt('Image style !style_name flushed', ['!style_name' => $style_name]));
+        }
+    }
+
+    /**
+     * @hook interact image-flush
+     */
+    public function interactFlush($input, $output)
+    {
+        $styles = array_keys(ImageStyle::loadMultiple());
+        $style_names = $input->getArgument('style_names');
+
+        if (empty($style_names)) {
+            $styles_all = $styles;
+            array_unshift($styles_all, 'all');
+            $choices = array_combine($styles_all, $styles_all);
+            $style_names = $this->io()->choice(dt("Choose a style to flush"), $choices, 'all');
+            if ($style_names == 'all') {
+                $style_names = implode(',', $styles);
+            }
+            $input->setArgument('style_names', $style_names);
+        }
+    }
+
+    /**
+     * @hook init image-flush
+     */
+    public function initFlush(InputInterface $input, AnnotationData $annotationData)
+    {
+        // Needed for non-interactive calls.
+        if ($input->getOption('all')) {
+            $styles = array_keys(ImageStyle::loadMultiple());
+            $input->setArgument('style_names', implode(",", $styles));
+        }
+    }
+
+    /**
+     * Create an image derivative.
+     *
+     * @command image:derive
+     * @param $style_name An image style machine name.
+     * @param $source Path to a source image. Optionally prepend stream wrapper scheme.
+     * @usage drush image:derive thumbnail core/themes/bartik/screenshot.png
+     *   Save thumbnail sized derivative of logo image.
+     * @validate-file-exists source
+     * @validate-entity-load image_style style_name
+     * @validate-module-enabled image
+     * @aliases id,image-derive
+     */
+    public function derive($style_name, $source)
+    {
+        $image_style = ImageStyle::load($style_name);
+        $derivative_uri = $image_style->buildUri($source);
+        if ($image_style->createDerivative($source, $derivative_uri)) {
+            return $derivative_uri;
+        }
+    }
+}