You are here

protected function SubscriptionsFormBase::actions in Simplenews 8

Same name and namespace in other branches
  1. 8.2 src/Form/SubscriptionsFormBase.php \Drupal\simplenews\Form\SubscriptionsFormBase::actions()
  2. 3.x src/Form/SubscriptionsFormBase.php \Drupal\simplenews\Form\SubscriptionsFormBase::actions()

Returns an array of supported actions for the current entity form.

This function generates a list of Form API elements which represent actions supported by the current entity form.

@todo Consider introducing a 'preview' action here, since it is used by many entity types.

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 An array of supported Form API action elements keyed by name.

Overrides EntityForm::actions

2 calls to SubscriptionsFormBase::actions()
SubscriptionsBlockForm::actions in src/Form/SubscriptionsBlockForm.php
Returns an array of supported actions for the current entity form.
SubscriptionsPageForm::actions in src/Form/SubscriptionsPageForm.php
Returns an array of supported actions for the current entity form.
2 methods override SubscriptionsFormBase::actions()
SubscriptionsBlockForm::actions in src/Form/SubscriptionsBlockForm.php
Returns an array of supported actions for the current entity form.
SubscriptionsPageForm::actions in src/Form/SubscriptionsPageForm.php
Returns an array of supported actions for the current entity form.

File

src/Form/SubscriptionsFormBase.php, line 156

Class

SubscriptionsFormBase
Entity form for Subscriber with common routines.

Namespace

Drupal\simplenews\Form

Code

protected function actions(array $form, FormStateInterface $form_state) {

  // There are two main cases of subscriptions forms:
  // - An authenticated subscriber updating existing subscriptions. The main
  //   case is a logged in user, but it could also be an anonymous
  //   subscription authenticated by means of a hash. In both cases, the
  //   email address is set.
  // - An unauthenticated user who enters an email address in the form and
  //   requests to subscribe or unsubscribe. In this case the email address
  //   is not set.
  $has_widget = !$this
    ->getSubscriptionWidget($form_state)
    ->isHidden();
  $has_mail = (bool) $this->entity
    ->getMail();
  $actions = parent::actions($form, $form_state);
  if ($has_mail && $has_widget) {

    // When authenticated with a widget, show a single update button. The
    // user can check or uncheck newsletters then submit.
    $actions[static::SUBMIT_UPDATE] = $actions['submit'];
    $actions[static::SUBMIT_UPDATE]['#submit'][] = '::submitUpdate';
  }
  else {

    // When not authenticated, show subscribe and unsubscribe buttons. The
    // user can check which newsletters to alter.
    //
    // The final case is when authenticated with no widget which is for a
    // form that applies to a single newsletter. In this case there will be a
    // single button either subscribe or unsubscribe depending on the current
    // subscription state.
    if ($has_widget || !$this->entity
      ->isSubscribed($this
      ->getOnlyNewsletterId())) {

      // Subscribe button.
      $actions[static::SUBMIT_SUBSCRIBE] = $actions['submit'];
      $actions[static::SUBMIT_SUBSCRIBE]['#value'] = t('Subscribe');
      $actions[static::SUBMIT_SUBSCRIBE]['#submit'][] = '::submitSubscribe';
    }
    if ($has_widget || $this->entity
      ->isSubscribed($this
      ->getOnlyNewsletterId())) {

      // Unsubscribe button.
      $actions[static::SUBMIT_UNSUBSCRIBE] = $actions['submit'];
      $actions[static::SUBMIT_UNSUBSCRIBE]['#value'] = t('Unsubscribe');
      $actions[static::SUBMIT_UNSUBSCRIBE]['#submit'][] = '::submitUnsubscribe';
    }
  }
  unset($actions['submit']);
  if (!$this->allowDelete) {
    unset($actions['delete']);
  }
  return $actions;
}