media_duplicate_check-1.0.0/src/Controller/ConfirmController.php

src/Controller/ConfirmController.php
<?php

declare(strict_types=1);

namespace Drupal\media_duplicate_check\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

/**
 * Controller for handling duplicate upload confirmations.
 */
class ConfirmController extends ControllerBase {

  /**
   * Handle confirmation AJAX request.
   */
  public function confirm(Request $request) {
    $filename = $request->request->get('filename');
    $confirmed = $request->request->get('confirmed');
    
    if ($filename && $confirmed === '1') {
      // Store confirmation in session using the filename as key
      $session = $request->getSession();
      $session->set('media_duplicate_confirmed_' . md5($filename), TRUE);
      
      // Also try to extract base filename and store that too for compatibility
      $duplicate_checker = \Drupal::service('media_duplicate_check.duplicate_checker');
      $base_filename = $duplicate_checker->getBaseFilename($filename);
      $extension = pathinfo($filename, PATHINFO_EXTENSION);
      $full_base_filename = $base_filename . '.' . $extension;
      $session->set('media_duplicate_confirmed_' . md5($full_base_filename), TRUE);
      
      return new JsonResponse(['status' => 'success']);
    }
    
    return new JsonResponse(['status' => 'error'], 400);
  }

  /**
   * Check for duplicates using original filename (before upload).
   */
  public function checkOriginal(Request $request) {
    $filename = $request->request->get('filename');
    
    if (!$filename) {
      return new JsonResponse(['status' => 'error', 'message' => 'No filename provided'], 400);
    }
    
    // Get the duplicate checker service
    $duplicate_checker = \Drupal::service('media_duplicate_check.duplicate_checker');
    
    // Check for duplicates using the original filename
    $duplicates = $duplicate_checker->findDuplicatesByOriginalFilename($filename);
    
    if (!empty($duplicates)) {
      // Prepare duplicate data for response
      $duplicate_data = [];
      foreach ($duplicates as $media) {
        $preview_data = $duplicate_checker->getMediaPreviewData($media);
        $duplicate_data[] = [
          'id' => $preview_data['id'],
          'name' => $preview_data['name'],
          'type' => $preview_data['type'],
          'created_formatted' => $preview_data['created_formatted'],
          'url' => $preview_data['url'],
        ];
      }
      
      return new JsonResponse([
        'status' => 'duplicates_found',
        'duplicates' => $duplicate_data,
        'count' => count($duplicates),
      ]);
    }
    
    return new JsonResponse([
      'status' => 'no_duplicates',
      'duplicates' => [],
    ]);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc