Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Drupal / Commands / sql / SanitizeCommentsCommands.php
diff --git a/vendor/drush/drush/src/Drupal/Commands/sql/SanitizeCommentsCommands.php b/vendor/drush/drush/src/Drupal/Commands/sql/SanitizeCommentsCommands.php
new file mode 100644 (file)
index 0000000..6e1344c
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+namespace Drush\Drupal\Commands\sql;
+
+use Consolidation\AnnotatedCommand\CommandData;
+use Drupal\Core\Database\Database;
+use Drush\Commands\DrushCommands;
+use Drush\Drush;
+use Symfony\Component\Console\Input\InputInterface;
+
+/**
+ * This class is a good example of a sql-sanitize plugin.
+ */
+class SanitizeCommentsCommands extends DrushCommands implements SanitizePluginInterface
+{
+    protected $database;
+    protected $moduleHandler;
+
+    /**
+     * SanitizeCommentsCommands constructor.
+     * @param $database
+     * @param $moduleHandler
+     */
+    public function __construct($database, $moduleHandler)
+    {
+        $this->database = $database;
+        $this->moduleHandler = $moduleHandler;
+    }
+
+    /**
+     * Sanitize comment names from the DB.
+     *
+     * @hook post-command sql-sanitize
+     *
+     * @inheritdoc
+     */
+    public function sanitize($result, CommandData $commandData)
+    {
+        if ($this->applies()) {
+            //Update anon.
+            $this->database->update('comment_field_data')
+            ->fields([
+              'name' => 'Anonymous',
+              'mail' => '',
+              'homepage' => 'http://example.com'
+            ])
+              ->condition('uid', 0)
+              ->execute();
+
+            // Update auth.
+            $this->database->update('comment_field_data')
+              ->expression('name', "CONCAT('User', `uid`)")
+              ->expression('mail', "CONCAT('user+', `uid`, '@example.com')")
+              ->fields(['homepage' => 'http://example.com'])
+              ->condition('uid', 1, '>=')
+              ->execute();
+            $this->logger()->success(dt('Comment display names and emails removed.'));
+        }
+    }
+
+    /**
+     * @hook on-event sql-sanitize-confirms
+     *
+     * @inheritdoc
+     */
+    public function messages(&$messages, InputInterface $input)
+    {
+        if ($this->applies()) {
+            $messages[] = dt('Remove comment display names and emails.');
+        }
+    }
+
+    protected function applies()
+    {
+        Drush::bootstrapManager()->doBootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
+        return $this->moduleHandler->moduleExists('comment');
+    }
+}