View source
<?php
namespace Drupal\yamlform;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginBase;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
abstract class YamlFormExporterBase extends PluginBase implements YamlFormExporterInterface {
protected $logger;
protected $entityTypeManager;
protected $entityStorage;
protected $elementManager;
public function __construct(array $configuration, $plugin_id, $plugin_definition, LoggerInterface $logger, EntityTypeManagerInterface $entity_type_manager, YamlFormElementManagerInterface $element_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this
->setConfiguration($configuration);
$this->logger = $logger;
$this->entityTypeManager = $entity_type_manager;
$this->entityStorage = $entity_type_manager
->getStorage('yamlform_submission');
$this->elementManager = $element_manager;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('logger.factory')
->get('yamlform'), $container
->get('entity_type.manager'), $container
->get('plugin.manager.yamlform.element'));
}
public function label() {
return $this->pluginDefinition['label'];
}
public function description() {
return $this->pluginDefinition['description'];
}
public function getStatus() {
return TRUE;
}
public function isArchive() {
return $this->pluginDefinition['archive'];
}
public function hasOptions() {
return $this->pluginDefinition['options'];
}
public function getConfiguration() {
return $this->configuration;
}
public function setConfiguration(array $configuration) {
$this->configuration = $configuration + $this
->defaultConfiguration();
return $this;
}
public function defaultConfiguration() {
return [
'yamlform' => NULL,
'source_entity' => NULL,
];
}
public function calculateDependencies() {
return [];
}
protected function getYamlForm() {
return $this->configuration['yamlform'];
}
protected function getSourceEntity() {
return $this->configuration['source_entity'];
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
return $form;
}
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
}
public function createExport() {
}
public function openExport() {
}
public function closeExport() {
}
public function writeHeader() {
}
public function writeSubmission(YamlFormSubmissionInterface $yamlform_submission) {
}
public function writeFooter() {
}
public function getFileTempDirectory() {
return file_directory_temp();
}
public function getSubmissionBaseName(YamlFormSubmissionInterface $yamlform_submission) {
$export_options = $this
->getConfiguration();
$file_name = $export_options['file_name'];
$token_data = [
'yamlform' => $yamlform_submission
->getYamlForm(),
'yamlform_submission' => $yamlform_submission,
];
$token_options = [
'clear' => TRUE,
];
$file_name = \Drupal::token()
->replace($file_name, $token_data, $token_options);
$file_name = preg_replace('([^\\w\\s\\d\\-_~,;:\\[\\]\\(\\].]|[\\.]{2,})', '', $file_name);
$file_name = preg_replace('/\\s+/', '-', $file_name);
return $file_name;
}
public function getFileExtension() {
return 'txt';
}
public function getBaseFileName() {
$yamlform = $this
->getYamlForm();
$source_entity = $this
->getSourceEntity();
if ($source_entity) {
return $yamlform
->id() . '.' . $source_entity
->getEntityTypeId() . '.' . $source_entity
->id();
}
else {
return $yamlform
->id();
}
}
public function getExportFileName() {
return $this
->getBaseFileName() . '.' . $this
->getFileExtension();
}
public function getExportFilePath() {
return $this
->getFileTempDirectory() . '/' . $this
->getExportFileName();
}
public function getArchiveFilePath() {
return $this
->getFileTempDirectory() . '/' . $this
->getArchiveFileName();
}
public function getArchiveFileName() {
return $this
->getBaseFileName() . '.tar.gz';
}
}