Вход Регистрация
Файл: concrete5.7.5.6/concrete/tools/conversations/add_file.php
Строк: 247
<?php defined('C5_EXECUTE') or die("Access Denied.");
use 
ConcreteCoreConversationConversation as Conversation;
$val Loader::helper('validation/token');
$helperFile Loader::helper('concrete/file');
$file = new stdClass(); // json return value holder
$error = array();
$pageObj Page::getByID($_POST['cID']);
$areaObj Area::get($pageObj$_POST['blockAreaHandle']);
$blockObj Block::getByID($_POST['bID'], $pageObj$areaObj);
$conversation $blockObj->getController()->getConversationObject();

if(!(
is_object($conversation))) {
    
$error[] = t('Invalid Conversation.');
    
$file->error $error;
    echo 
Loader::helper('json')->encode($file);
    exit;
}
if(
$conversation->getConversationAttachmentOverridesEnabled() > 0) { // check individual conversation for allowing attachments.
    
if($conversation->getConversationAttachmentsEnabled() != 1) {
        
$error[] = t('This conversation does not allow file attachments.');
        
$file->error $error;
        echo 
Loader::helper('json')->encode($file);
        exit;
    }
} else if(!
Config::get('conversations.attachments_enabled')) { // check global config settings for whether or not file attachments should be allowed.
    
$error[] = t('This conversation does not allow file attachments.');
    
$file->error $error;
    echo 
Loader::helper('json')->encode($file);
    exit;
};

$file->timestamp $_POST['timestamp'];
// --  validation --  //

$tokenValidation $val->validate('add_conversations_file');

if(!
$tokenValidation) {  // check token
    
$error[] = t('Bad token');
}

if (
$_FILES["file"]["error"] > 0) {  // file errors
    
$error[] = $_FILES["file"]["error"];
}

if(!
$_POST['bID'] || !$_POST['cID']) {  // bID cID present
    
$error[] = t('Block ID or Page ID not sent');
    
$errorStr implode(', '$error);
    
$file->error $errorStr '.';
    echo 
Loader::helper('json')->encode($file);
    exit;
}

if(!
is_object($blockObj) || $blockObj->getBlockTypeHandle() != 'core_conversation') { // valid / correct block check
    
$error[] = t('Invalid block');
    
$errorStr implode(', '$error);
    
$file->error $errorStr '.';
    echo 
Loader::helper('json')->encode($file);
    exit;
}

$p = new Permissions($blockObj);
if(!
$p->canRead()) {    // block read permissions check
    
$error[] = t('You do not have permission to view this conversation');
}

// check for registered or guest user file size overrides / limits

$u = new User();
$blockRegisteredSizeOverride $conversation->getConversationMaxFileSizeRegistered();
$blockGuestSizeOverride $conversation->getConversationMaxFilesGuest();
$blockRegisteredQuantityOverride $conversation->getConversationMaxFilesRegistered();
$blockGuestQuantityOverride $conversation->getConversationMaxFilesGuest();
$blockExtensionsOverride $conversation->getConversationFileExtensions();

if (
$u->isRegistered()) {
    if(
$conversation->getConversationAttachmentOverridesEnabled()) {
        
$maxFileSize $blockRegisteredSizeOverride;
        
$maxQuantity $blockRegisteredQuantityOverride;
    } else {
        
$maxFileSize Config::get('conversations.files.registered.max_size');
        
$maxQuantity Config::get('conversations.files.registered.max');
    }
} else {
    if(
$conversation->getConversationAttachmentOverridesEnabled()) {
        
$maxFileSize =  $blockGuestSizeOverride;
        
$maxQuantity =  $blockGuestQuantityOverride;
    } else {
        
$maxFileSize Config::get('conversations.files.guest.max_size');
        
$maxQuantity Config::get('conversations.files.guest.max');
    }
}


if (
$maxFileSize && filesize($_FILES["file"]["tmp_name"]) > $maxFileSize 1000000) {  // max upload size
    
$error[] = t('File size exceeds limit');
}

// check file count (this is just for presentation, final count check is done on message submit).
if($maxQuantity && ($_POST['fileCount']) > $maxQuantity) {
    
$error[] = t('Attachment limit reached');
}

// check filetype extension and overrides


if($conversation->getConversationAttachmentOverridesEnabled()) {
    
$extensionList $blockExtensionsOverride;
} else {
    
$extensionList Config::get('conversations.files.allowed_types');
}

$extensionList $helperFile->unserializeUploadFileExtensions($extensionList);

$incomingExtension end(explode('.'$_FILES["file"]["name"]));
if(
$incomingExtension && count($extensionList)) {  // check against block file extensions override
    
foreach($extensionList as $extension) {
        if(
strtolower($extension) == strtolower($incomingExtension)) {
            
$validExtension true;
            break;
        }
    }
    if(!
$validExtension) {
        
$error[] = t('Invalid File Extension');
    }
}


if(
count($error) > 0) {  // send in the errors
    
$errorStr implode(', '$error);
    
$file->error $errorStr '.';
    echo 
Loader::helper('json')->encode($file);
    exit;
}

// -- end intitial validation -- //


// begin file import

$fi = new FileImporter();
$fv $fi->import$_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
if(!(
$fv instanceof ConcreteCoreFileVersion)) {
    
$file->error $fi->getErrorMessage($fv);
    
$file->timestamp $_POST['timestamp'];
} else {
    
$file_set Config::get('conversations.attachments_pending_file_set');
    
$fs FileSet::getByName($file_set);
    if (!
is_object($fs)) {
        
$fs FileSet::createAndGetSet($file_setFileSet::TYPE_PUBLICUSER_SUPER_ID);
    }
    
$fs->addFileToSet($fv);
    
$file->id     $fv->getFileID();
    
$file->tag $_POST['tag'];
    
$file->timestamp $_POST['timestamp'];
    }
echo 
Loader::helper('json')->encode($file);
Онлайн: 0
Реклама