WebformDevelCommands.php in Webform 6.x
File
modules/webform_devel/src/Commands/WebformDevelCommands.php
View source
<?php
namespace Drupal\webform_devel\Commands;
use Drupal\Core\Serialization\Yaml;
use Drupal\Core\State\StateInterface;
use Drupal\user\UserDataInterface;
use Drupal\webform\Utility\WebformYaml;
use Drush\Commands\DrushCommands;
use Drush\Exceptions\UserAbortException;
use Psr\Log\LogLevel;
class WebformDevelCommands extends DrushCommands {
protected $state;
protected $userData;
public function __construct(StateInterface $state, UserDataInterface $user_data) {
parent::__construct();
$this->state = $state;
$this->userData = $user_data;
}
public function drush_webform_devel_config_update() {
module_load_include('inc', 'webform', 'includes/webform.install');
$files = $files = \Drupal::service('file_system')
->scanDirectory(drupal_get_path('module', 'webform'), '/^webform\\.webform\\..*\\.yml$/');
$total = 0;
foreach ($files as $filename => $file) {
try {
$original_yaml = file_get_contents($filename);
$tidied_yaml = $original_yaml;
$data = Yaml::decode($tidied_yaml);
if (empty($data['langcode'])) {
continue;
}
$data = _webform_update_webform_setting($data);
$tidied_yaml = WebformYaml::encode($data) . PHP_EOL;
if ($tidied_yaml !== $original_yaml) {
$this
->output()
->writeln(dt('Updating @file…', [
'@file' => $file->filename,
]));
file_put_contents($file->uri, $tidied_yaml);
$total++;
}
} catch (\Exception $exception) {
$message = 'Error parsing: ' . $file->filename . PHP_EOL . $exception
->getMessage();
if (strlen($message) > 255) {
$message = substr($message, 0, 255) . '…';
}
$this
->logger()
->log($message, LogLevel::ERROR);
$this
->output()
->writeln($message);
}
}
if ($total) {
$this
->output()
->writeln(dt('@total webform.webform.* configuration file(s) updated.', [
'@total' => $total,
]));
}
else {
$this
->output()
->writeln(dt('No webform.webform.* configuration files updated.'));
}
}
public function drush_webform_devel_reset() {
if (!$this
->io()
->confirm(dt("Are you sure you want repair the Webform module's admin settings and webforms?"))) {
throw new UserAbortException();
}
$this
->output()
->writeln(dt('Resetting message closed via State API…'));
$this->state
->delete('webform.element.message');
$this
->output()
->writeln(dt('Resetting message closed via User Data…'));
$this->userData
->delete('webform', NULL, 'webform.element.message');
}
}