You are here

public static function FlmngrServer::flmngrRequest in N1ED - Visual editor as CKEditor plugin with Bootstrap support 8.2

Processes a request to file manager.

1 call to FlmngrServer::flmngrRequest()
FlmngrController::flmngr in src/Controller/FlmngrController.php
Calls file manager server side and returns a result to client.

File

src/Flmngr/FlmngrServer/FlmngrServer.php, line 29

Class

FlmngrServer
File Manager server. This is a entry point for processing any of incoming Flmngr client's request. It takes "action" parameter from request and decides which request processor to use and executes it, then returns a result as…

Namespace

Drupal\n1ed\Flmngr\FlmngrServer

Code

public static function flmngrRequest($config, RequestStack $request_stack) {
  if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $p = $config['dirFiles'];
    $re = '/\\\\(?:.(?!\\\\))+$/m';
    preg_match($re, $p, $matches);
    $match = $matches[0];
    $config['dirFiles'] = str_replace($match, "/" . substr($match, 1), $p);
  }
  $action = NULL;
  if ($request_stack
    ->getCurrentRequest()->request
    ->get("action") != NULL) {
    $action = $request_stack
      ->getCurrentRequest()->request
      ->get("action");
  }
  if ($action == NULL && $request_stack
    ->getCurrentRequest()->request
    ->get("data") != NULL) {
    $configUploader = [
      "dirFiles" => $config["dirFiles"],
      "dirTmp" => $config["dirTmp"],
      "config" => isset($config["uploader"]) ? $config["uploader"] : [],
    ];
    FileUploaderServer::fileUploadRequest($configUploader, $request_stack, $_FILES);
    return;
  }
  if ($action == NULL && $request_stack
    ->getCurrentRequest()->query
    ->get("action") != NULL) {
    $action = $request_stack
      ->getCurrentRequest()->query
      ->get("action");
  }
  if ((isset($_FILES["file"]) || isset($_FILES["upload"])) && !$request_stack
    ->getCurrentRequest()->request
    ->get("action") && !$request_stack
    ->getCurrentRequest()->request
    ->get('data')) {
    $json = array(
      "action" => "upload",
    );
    $_POST["data"] = json_encode($json);
    $action = 'upload';
  }
  try {
    switch ($action) {
      case 'dirList':
        $resp = FlmngrServer::reqDirList($config, $request_stack);
        break;
      case 'dirCreate':
        $resp = FlmngrServer::reqDirCreate($config, $request_stack);
        break;
      case 'dirRename':
        $resp = FlmngrServer::reqDirRename($config, $request_stack);
        break;
      case 'dirDelete':
        $resp = FlmngrServer::reqDirDelete($config, $request_stack);
        break;
      case 'dirCopy':
        $resp = FlmngrServer::reqDirCopy($config, $request_stack);
        break;
      case 'dirMove':
        $resp = FlmngrServer::reqDirMove($config, $request_stack);
        break;
      case 'dirDownload':
        $resp = FlmngrServer::reqDirDownload($config, $request_stack);
        break;
      case 'fileList':
        $resp = FlmngrServer::reqFileList($config, $request_stack);
        break;
      case 'fileDelete':
        $resp = FlmngrServer::reqFileDelete($config, $request_stack);
        break;
      case 'fileCopy':
        $resp = FlmngrServer::reqFileCopy($config, $request_stack);
        break;
      case 'fileRename':
        $resp = FlmngrServer::reqFileRename($config, $request_stack);
        break;
      case 'fileMove':
        $resp = FlmngrServer::reqFileMove($config, $request_stack);
        break;
      case 'fileResize':
        $resp = FlmngrServer::reqFileResize($config);
        break;
      case 'fileOriginal':

        // Will die after valid response or throw MessageException.
        $resp = FlmngrServer::reqFileOriginal($config, $request_stack);
        break;
      case 'filePreview':

        // Will die after valid response or throw MessageException.
        $resp = FlmngrServer::reqFilePreview($config, $request_stack);
        break;
      case 'upload':
        $resp = FlmngrServer::upload($config, $request_stack);
        break;
      case 'getVersion':
        $resp = FlmngrServer::getVersion();
        break;
      default:
        $resp = new Response(Message::createMessage(Message::ACTION_NOT_FOUND), NULL);
    }
  } catch (MessageException $e) {
    $resp = new Response($e
      ->getFailMessage(), NULL);
  }
  $strResp = JsonCodec::staticToJson($resp);
  try {
    http_response_code(200);
    header('Content-Type: application/json; charset=UTF-8');
    print $strResp;
  } catch (Exception $e) {
    error_log($e);
  }
}