Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/single_page/download_file.php
Строк: 97
<?php
namespace ConcreteControllerSinglePage;

use 
PageController;
use 
Core;
use 
Page;
use 
Permissions;
use 
File;

class 
DownloadFile extends PageController
{
    protected 
$force 0;

    public function 
view($fID 0$rcID null)
    {
        
// get the block
        
if ($fID && Core::make('helper/validation/numbers')->integer($fID)) {
            
$file File::getByID($fID);
            if (
$file instanceof File && $file->getFileID() > 0) {
                
$rcID Core::make('helper/security')->sanitizeInt($rcID);
                if (
$rcID 0) {
                    
$rc Page::getByID($rcID'ACTIVE');
                    if (
is_object($rc) && !$rc->isError()) {
                        
$rcp = new Permissions($rc);
                        if (
$rcp->canViewPage()) {
                            
$this->set('rc'$rc);
                        }
                    }
                }
                
$fp = new Permissions($file);
                if (!
$fp->canViewFile()) {
                    return 
false;
                }

                
// if block password is blank download
                
if (!$file->getPassword()) {
                    if (
$this->force) {
                        return 
$this->force_download($file$rcID);
                    } else {
                        return 
$this->download($file$rcID);
                    }
                }
                
// otherwise show the form
                
$this->set('force'$this->force);
                
$this->set('rcID'$rcID);
                
$this->set('fID'$fID);
                
$this->set('filename'$file->getFilename());
                
$fre $file->getFileResource();
                
$this->set('filesize'$fre->getSize());
            }
        }
    }

    public function 
force($fID 0$rcID null)
    {
        
$this->force true;

        return 
$this->view($fID$rcID);
    }

    public function 
view_inline($fID 0)
    {
        if (
$fID && Core::make('helper/validation/numbers')->integer($fID)) {
            
$file File::getByID($fID);
            
$fp = new Permissions($file);
            if (!
$fp->canViewFile()) {
                return 
false;
            }

            
$fre $file->getFileResource();
            
$fsl $file->getFileStorageLocationObject()->getFileSystemObject();
            
$mimeType $file->getMimeType();
            
header("Content-type: $mimeType");
            print 
$file->getFileContents();
            exit;
        }
    }

    public function 
submit_password($fID 0)
    {
        if (
$fID && Core::make('helper/validation/numbers')->integer($fID)) {
            
$f File::getByID($fID);

            
$rcID = ($this->post('rcID') ? $this->post('rcID') : null);
            
$rcID Core::make('helper/security')->sanitizeInt($rcID);

            if (
$f->getPassword() == $this->post('password')) {
                if (
$this->post('force')) {
                    return 
$this->force_download($f);
                } else {
                    return 
$this->download($f);
                }
            }

            
$this->set('error't("Password incorrect. Please try again."));

            
$this->set('force', ($this->post('force') ? 0));

            
$this->view($fID$rcID);
        }
    }

    protected function 
download(ConcreteCoreFileFile $file$rcID null)
    {
        
$filename $file->getFilename();
        
$file->trackDownload($rcID);
        
$fsl $file->getFileStorageLocationObject();
        
$configuration $fsl->getConfigurationObject();
        
$fv $file->getVersion();
        if (
$configuration->hasPublicURL()) {
            return 
Redirect::url($fv->getURL())->send();
        } else {
            return 
$fv->forceDownload();
        }
    }

    protected function 
force_download($file$rcID null)
    {
        
$file->trackDownload($rcID);

        return 
$file->forceDownload();
    }
}
Онлайн: 2
Реклама