framework/Mvc/Extensions/Ckfinder/lib/plugins/zip/plugin.php
protected function sendZipFile()
  {
    if (!function_exists('ob_list_handlers') || ob_list_handlers()) {
      @ob_end_clean();
    }
    header("Content-Encoding: none");

    $this->checkConnector();
    $this->checkRequest();

    // empty wystarczy
    if ( empty($_GET['FileName']) ){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND);
    }

    $resourceTypeInfo = $this->_currentFolder->getResourceTypeConfig();
    $hash = $resourceTypeInfo->getHash();
    if ( $hash !== $_GET['hash'] || $hash !== substr($_GET['FileName'],16,16) ){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }

    if (!$this->_currentFolder->checkAcl(CKFINDER_CONNECTOR_ACL_FILE_VIEW)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_UNAUTHORIZED);
    }

    $fileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(trim($_GET['FileName']));

    if (!CKFinder_Connector_Utils_FileSystem::checkFileName($fileName)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }

    if ( strtolower(pathinfo($fileName, PATHINFO_EXTENSION)) !== 'zip'){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_EXTENSION);
    }

    $dest_dir = CKFinder_Connector_Utils_FileSystem::getTmpDir();
    $filePath = CKFinder_Connector_Utils_FileSystem::combinePaths($dest_dir,$fileName);
    if ( !file_exists($filePath) || !is_file($filePath)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND);
    }
    if (!is_readable($filePath)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
    }

    $zipFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(trim($_GET['ZipName']));
    if (!CKFinder_Connector_Utils_FileSystem::checkFileName($zipFileName)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }
    $fileFilename = pathinfo($zipFileName,PATHINFO_BASENAME );

    header("Content-Encoding: none");
    header("Cache-Control: cache, must-revalidate");
    header("Pragma: public");
    header("Expires: 0");
    $user_agent = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
    $encodedName = str_replace("\"", "\\\"", $fileFilename);
    if (strpos($user_agent, "MSIE") !== false) {
      $encodedName = str_replace(array("+", "%2E"), array(" ", "."), urlencode($encodedName));
    }
    header("Content-type: application/octet-stream; name=\"" . $fileFilename . "\"");
    header("Content-Disposition: attachment; filename=\"" . $encodedName. "\"");
    header("Content-Length: " . filesize($filePath));
    CKFinder_Connector_Utils_FileSystem::sendFile($filePath);
    exit;
  }
protected function sendZipFile()
  {
    if (!function_exists('ob_list_handlers') || ob_list_handlers()) {
      @ob_end_clean();
    }
    header("Content-Encoding: none");

    $this->checkConnector();
    $this->checkRequest();

    // empty wystarczy
    if ( empty($_GET['FileName']) ){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND);
    }

    $resourceTypeInfo = $this->_currentFolder->getResourceTypeConfig();
    $hash = $resourceTypeInfo->getHash();
    if ( $hash !== $_GET['hash'] || $hash !== substr($_GET['FileName'],16,16) ){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }

    if (!$this->_currentFolder->checkAcl(CKFINDER_CONNECTOR_ACL_FILE_VIEW)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_UNAUTHORIZED);
    }

    $fileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(trim($_GET['FileName']));

    if (!CKFinder_Connector_Utils_FileSystem::checkFileName($fileName)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }

    if ( strtolower(pathinfo($fileName, PATHINFO_EXTENSION)) !== 'zip'){
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_EXTENSION);
    }

    $dest_dir = CKFinder_Connector_Utils_FileSystem::getTmpDir();
    $filePath = CKFinder_Connector_Utils_FileSystem::combinePaths($dest_dir,$fileName);
    if ( !file_exists($filePath) || !is_file($filePath)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND);
    }
    if (!is_readable($filePath)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
    }

    $zipFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(trim($_GET['ZipName']));
    if (!CKFinder_Connector_Utils_FileSystem::checkFileName($zipFileName)) {
      $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST);
    }
    $fileFilename = pathinfo($zipFileName,PATHINFO_BASENAME );

    header("Content-Encoding: none");
    header("Cache-Control: cache, must-revalidate");
    header("Pragma: public");
    header("Expires: 0");
    $user_agent = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
    $encodedName = str_replace("\"", "\\\"", $fileFilename);
    if (strpos($user_agent, "MSIE") !== false) {
      $encodedName = str_replace(array("+", "%2E"), array(" ", "."), urlencode($encodedName));
    }
    header("Content-type: application/octet-stream; name=\"" . $fileFilename . "\"");
    header("Content-Disposition: attachment; filename=\"" . $encodedName. "\"");
    header("Content-Length: " . filesize($filePath));
    CKFinder_Connector_Utils_FileSystem::sendFile($filePath);
    exit;
  }
protected function sendZipFile ( ) { if ( ! function_exists ( 'ob_list_handlers' ) || ob_list_handlers ( ) ) { @ ob_end_clean ( ) ; } header ( "Content-Encoding: none" ) ; $ this -> checkConnector ( ) ; $ this -> checkRequest ( ) ; // empty wystarczy if ( empty ( $ _GET [ 'FileName' ] ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND ) ; } $ resourceTypeInfo = $ this -> _currentFolder -> getResourceTypeConfig ( ) ; $ hash = $ resourceTypeInfo -> getHash ( ) ; if ( $ hash !== $ _GET [ 'hash' ] || $ hash !== substr ( $ _GET [ 'FileName' ] , 16 , 16 ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST ) ; } if ( ! $ this -> _currentFolder -> checkAcl ( CKFINDER_CONNECTOR_ACL_FILE_VIEW ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_UNAUTHORIZED ) ; } $ fileName = CKFinder_Connector_Utils_FileSystem :: convertToFilesystemEncoding ( trim ( $ _GET [ 'FileName' ] ) ) ; if ( ! CKFinder_Connector_Utils_FileSystem :: checkFileName ( $ fileName ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST ) ; } if ( strtolower ( pathinfo ( $ fileName , PATHINFO_EXTENSION ) ) !== 'zip' ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_INVALID_EXTENSION ) ; } $ dest_dir = CKFinder_Connector_Utils_FileSystem :: getTmpDir ( ) ; $ filePath = CKFinder_Connector_Utils_FileSystem :: combinePaths ( $ dest_dir , $ fileName ) ; if ( ! file_exists ( $ filePath ) || ! is_file ( $ filePath ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_FILE_NOT_FOUND ) ; } if ( ! is_readable ( $ filePath ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED ) ; } $ zipFileName = CKFinder_Connector_Utils_FileSystem :: convertToFilesystemEncoding ( trim ( $ _GET [ 'ZipName' ] ) ) ; if ( ! CKFinder_Connector_Utils_FileSystem :: checkFileName ( $ zipFileName ) ) { $ this -> _errorHandler -> throwError ( CKFINDER_CONNECTOR_ERROR_INVALID_REQUEST ) ; } $ fileFilename = pathinfo ( $ zipFileName , PATHINFO_BASENAME ) ; header ( "Content-Encoding: none" ) ; header ( "Cache-Control: cache, must-revalidate" ) ; header ( "Pragma: public" ) ; header ( "Expires: 0" ) ; $ user_agent = ! empty ( $ _SERVER [ 'HTTP_USER_AGENT' ] ) ? $ _SERVER [ 'HTTP_USER_AGENT' ] : "" ; $ encodedName = str_replace ( "\"" , "\\\"" , $ fileFilename ) ; if ( strpos ( $ user_agent , "MSIE" ) !== false ) { $ encodedName = str_replace ( array ( "+" , "%2E" ) , array ( " " , "." ) , urlencode ( $ encodedName ) ) ; } header ( "Content-type: application/octet-stream; name=\"" . $ fileFilename . "\"" ) ; header ( "Content-Disposition: attachment; filename=\"" . $ encodedName . "\"" ) ; header ( "Content-Length: " . filesize ( $ filePath ) ) ; CKFinder_Connector_Utils_FileSystem :: sendFile ( $ filePath ) ; exit ; }
Sends generated zip file to the user
Sends generated zip file to the user