You are here

public function ServerStatusForm::buildForm in Search API 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/ServerStatusForm.php, line 68

Class

ServerStatusForm
Provides a form for performing common actions on a server.

Namespace

Drupal\search_api\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, ServerInterface $server = NULL) {
  $form['#server'] = $server;
  $pending_tasks = $this
    ->getServerTaskManager()
    ->getCount($server);
  if ($pending_tasks) {
    $status = $this
      ->formatPlural($pending_tasks, 'There is currently @count task pending for this server.', 'There are currently @count tasks pending for this server.');
    $form['tasks'] = [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('Pending server tasks'),
    ];
    $form['tasks']['help'] = [
      '#type' => 'item',
      '#title' => $status,
      '#description' => $this
        ->t('Pending tasks are created when operations on the server, such as deleting one or more items, cannot be executed because the server is currently unavailable (which will usually also create an entry in the Drupal logs). They are automatically tried again before any other operation is executed and the operation is aborted if the tasks could still not be executed, or if there are too many pending tasks to be executed in a single page request. In the latter case, you can use this form to manually execute all tasks and thus unblock the server again.'),
    ];
    $form['tasks']['execute'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Execute tasks now'),
      '#disabled' => !$server
        ->isAvailable(),
      '#submit' => [
        '::executeTasks',
      ],
    ];
  }
  $form['actions']['#type'] = 'actions';
  $form['actions']['clear'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Delete all indexed data on this server'),
    '#button_type' => 'danger',
  ];
  return $form;
}