ViewsBulkOperationsAdvancedTestAction.php in Views Bulk Operations (VBO) 8.2
File
tests/views_bulk_operations_test/src/Plugin/Action/ViewsBulkOperationsAdvancedTestAction.php
View source
<?php
namespace Drupal\views_bulk_operations_test\Plugin\Action;
use Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase;
use Drupal\views_bulk_operations\Action\ViewsBulkOperationsPreconfigurationInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginFormInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\views\ViewExecutable;
class ViewsBulkOperationsAdvancedTestAction extends ViewsBulkOperationsActionBase implements ViewsBulkOperationsPreconfigurationInterface, PluginFormInterface {
public function execute($entity = NULL) {
if (!$this->view instanceof ViewExecutable) {
throw new \Exception('View passed to action object is not an instance of \\Drupal\\views\\ViewExecutable.');
}
if (empty($this->context)) {
throw new \Exception('Context array empty in action object.');
}
drupal_set_message(sprintf('Test action (preconfig: %s, config: %s, label: %s)', $this->configuration['test_preconfig'], $this->configuration['test_config'], $entity
->label()));
if ($this->configuration['test_config'] === 'unpublish') {
if (!$entity
->isDefaultTranslation()) {
$entity = \Drupal::service('entity_type.manager')
->getStorage('node')
->load($entity
->id());
}
$entity
->setPublished(FALSE);
$entity
->save();
}
return 'Test';
}
public function buildPreConfigurationForm(array $element, array $values, FormStateInterface $form_state) {
$element['test_preconfig'] = [
'#title' => $this
->t('Preliminary configuration'),
'#type' => 'textfield',
'#default_value' => isset($values['preconfig']) ? $values['preconfig'] : '',
];
return $element;
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form['test_config'] = [
'#title' => t('Config'),
'#type' => 'textfield',
'#default_value' => $form_state
->getValue('config'),
];
return $form;
}
public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
return $object
->access('update', $account, $return_as_object);
}
}