You are here

public function DirectoryDeleteForm::submitModalAjax in Media Directories 8

Same name and namespace in other branches
  1. 3.x modules/media_directories_ui/src/Form/DirectoryDeleteForm.php \Drupal\media_directories_ui\Form\DirectoryDeleteForm::submitModalAjax()
  2. 2.x modules/media_directories_ui/src/Form/DirectoryDeleteForm.php \Drupal\media_directories_ui\Form\DirectoryDeleteForm::submitModalAjax()

Ajax callback when the form is submitted.

File

modules/media_directories_ui/src/Form/DirectoryDeleteForm.php, line 125

Class

DirectoryDeleteForm
Form to delete a directory.

Namespace

Drupal\media_directories_ui\Form

Code

public function submitModalAjax(array &$form, FormStateInterface $form_state) {
  $response = new AjaxResponse();
  if ($this->directory
    ->access('delete')) {
    $query = $this->entityTypeManager
      ->getStorage('media')
      ->getQuery();
    $query
      ->condition('directory', $this->directory
      ->id());
    $media_ids = $query
      ->execute();

    // If directory has any media items, move them into root (remove value).
    if (!empty($media_ids)) {

      /** @var \Drupal\media\Entity\Media[] $media_items */
      $media_items = $this->entityTypeManager
        ->getStorage('media')
        ->loadMultiple($media_ids);
      foreach ($media_items as $media_item) {
        $media_item
          ->get('directory')
          ->setValue(NULL);
        $media_item
          ->save();
      }
    }
    $parent_id = (int) $this->directory
      ->get('parent')->target_id;

    // We use -1 as root folder tid.
    if ($parent_id === 0) {
      $parent_id = -1;
    }
    $this->directory
      ->delete();
    $response
      ->addCommand(new CloseModalDialogCommand());
    $response
      ->addCommand(new RefreshDirectoryTree($parent_id));

    // $response->addCommand(new AjaxLoadDirectory());
  }
  return $response;
}