You are here

public function DirectoryDeleteForm::submitModalAjax in Media Directories 3.x

Same name and namespace in other branches
  1. 8 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()

File

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

Class

DirectoryDeleteForm

Namespace

Drupal\media_directories_ui\Form

Code

public function submitModalAjax(array &$form, FormStateInterface $form_state) {
  $response = new AjaxResponse();
  $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 CloseDialogCommand('#media-dialog'));
  $response
    ->addCommand(new RefreshDirectoryTree($parent_id));
  return $response;
}