public function WorkflowCleanupSettingsForm::buildForm in Workflow 8
@inheritdoc
Overrides FormInterface::buildForm
File
- modules/
workflow_cleanup/ src/ Form/ WorkflowCleanupSettingsForm.php, line 27
Class
- WorkflowCleanupSettingsForm
- Provides a Form for organizing obsolete States.
Namespace
Drupal\workflow_cleanup\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$form = [];
// Get all of the states, indexed by sid.
$orphans = $inactive = [];
/** @var \Drupal\workflow\Entity\WorkflowState[] $states */
/** @var \Drupal\workflow\Entity\WorkflowState $state */
$states = WorkflowState::loadMultiple();
foreach ($states as $state) {
// Does the associated workflow exist?
if (!$state
->getWorkflow()) {
$orphans[$state
->id()] = $state;
}
else {
// Is the state still active?
if (!$state
->isActive()) {
$inactive[$state
->id()] = $state;
}
}
}
// Save the relevant states in an indexed array.
$form['#workflow_states'] = $orphans + $inactive;
$form['no_workflow'] = [
'#type' => 'details',
'#title' => $this
->t('Orphaned States'),
'#open' => TRUE,
// Controls the HTML5 'open' attribute. Defaults to FALSE.
'#description' => $this
->t('These states no longer belong to an existing workflow.'),
'#tree' => TRUE,
];
foreach ($orphans as $sid => $state) {
$form['no_workflow'][$sid]['check'] = [
'#type' => 'checkbox',
'#title' => $state
->label(),
'#return_value' => $sid,
];
}
$form['inactive'] = [
'#type' => 'details',
'#title' => $this
->t('Inactive (Deleted) States'),
'#open' => TRUE,
// Controls the HTML5 'open' attribute. Defaults to FALSE.
'#description' => $this
->t('These states belong to a workflow, but have been marked inactive (deleted).'),
'#tree' => TRUE,
];
foreach ($inactive as $sid => $state) {
$form['inactive'][$sid]['check'] = [
'#type' => 'checkbox',
'#title' => $state
->label() . ' (' . $state
->getWorkflow()
->label() . ')',
'#return_value' => $sid,
];
}
$form['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Delete selected states'),
];
return $form;
}