示例#1
0
    public function rescan() {
        $files = $this->getRequestFiles('canEditFileContents');
        $r = new FileEditResponse();
        $r->setFiles($files);
        $successMessage = '';
        $errorMessage = '';
        $successCount = 0;

        foreach($files as $f) {
            try {
                $fv = $f->getApprovedVersion();
                $resp = $fv->refreshAttributes();
                switch ($resp) {
                    case \Concrete\Core\File\Importer::E_FILE_INVALID:
                        $errorMessage .= t('File %s could not be found.', $fv->getFilename()) . '<br/>';
                        break;
                    default:
                        $successCount++;
                        $successMessage = t2('%s file rescanned successfully.', '%s files rescanned successfully.',
                            $successCount);
                        break;
                }
            } catch(\Concrete\Flysystem\FileNotFoundException $e) {
                $errorMessage .= t('File %s could not be found.', $fv->getFilename()) . '<br/>';
            }
        }
        if ($errorMessage && !$successMessage) {
            $e = new \Concrete\Core\Error\Error;
            $e->add($errorMessage);
            $r->setError($e);
        } else {
            $r->setMessage($errorMessage . $successMessage);
        }
        $r->outputJSON();
    }
示例#2
0
 public function update_thumbnail()
 {
     if ($this->validateAction()) {
         $fp = new Permissions($this->file);
         if ($fp->canEditFileProperties()) {
             $this->file->getVersionToModify();
             $sr = new FileEditResponse();
             $sr->setFile($this->file);
             $sr->setMessage(t('File updated successfully.'));
             $sr->outputJSON();
         } else {
             throw new Exception(t('Access Denied.'));
         }
     } else {
         throw new Exception(t('Access Denied.'));
     }
 }
示例#3
0
 public function rescan()
 {
     $files = $this->getRequestFiles('canEditFileContents');
     $r = new FileEditResponse();
     $r->setFiles($files);
     $error = new \Concrete\Core\Error\Error();
     try {
         $this->doRescan($files[0]);
         $r->setMessage(t('File rescanned successfully.'));
     } catch (\Concrete\Flysystem\FileNotFoundException $e) {
         $errorMessage = t('File %s could not be found.', $files[0]->getFilename()) . '<br/>';
         $error->add($errorMessage);
     } catch (\Exception $e) {
         $error->add($e->getMessage());
     }
     $r->setError($error);
     $r->outputJSON();
 }
示例#4
0
 public function deleteFiles()
 {
     $fr = new FileEditResponse();
     $files = array();
     if (is_array($_POST['fID'])) {
         foreach ($_POST['fID'] as $fID) {
             $f = File::getByID($fID);
             $fp = new Permissions($f);
             if ($fp->canDeleteFile()) {
                 $files[] = $f;
                 $f->delete();
             } else {
                 throw new \Exception(t('Unable to delete one or more files.'));
             }
         }
     }
     $fr->setMessage(t2('%s file deleted successfully.', '%s files deleted successfully.', count($files)));
     $fr->outputJSON();
 }
示例#5
0
 public function submit()
 {
     $requestSets = array();
     if (is_array($this->request->request->get('fsID'))) {
         $requestSets = $this->request->request->get('fsID');
     }
     if ($this->validateAction()) {
         $sets = Set::getMySets();
         foreach ($sets as $set) {
             $fsp = new \Permissions($set);
             if (in_array($set->getFileSetID(), $requestSets) && $fsp->canAddFile($this->file) && !$this->file->inFileSet($set)) {
                 // This was checked and it wasn't in the file set previously
                 $set->addFileToSet($this->file);
             }
             if ($this->file->inFileSet($set) && !in_array($set->getFileSetID(), $requestSets) && $fsp->canAddFile($this->file)) {
                 // This was not checked but it used to be in the set.
                 $set->removeFileFromSet($this->file);
             }
         }
     }
     $fsNew = $this->request->request->get('fsNew');
     $fsNewShare = $this->request->request->get('fsNewShare');
     if (is_array($fsNew)) {
         foreach ($fsNew as $i => $name) {
             if ($name) {
                 $type = $fsNewShare[$i] == 1 ? Set::TYPE_PUBLIC : Set::TYPE_PRIVATE;
                 $fs = Set::createAndGetSet($fsNew[$i], $type);
                 $fs->addFileToSet($this->file);
             }
         }
     }
     $response = new EditResponse();
     $response->setFile($this->file);
     $response->setMessage(t('File sets updated successfully.'));
     $response->outputJSON();
 }
示例#6
0
    $frp = new Permissions($fr);
    if (!$frp->canEditFileContents()) {
        $error->add(t('You do not have permission to modify this file.'));
    }
} else {
    $fr = false;
}
$r = new FileEditResponse();
if ($valt->validate('upload') && !$error->has()) {
    if (isset($_FILES['Filedata']) && is_uploaded_file($_FILES['Filedata']['tmp_name'])) {
        if (!$fp->canAddFileType($cf->getExtension($_FILES['Filedata']['name']))) {
            $resp = FileImporter::E_FILE_INVALID_EXTENSION;
        } else {
            $fi = new FileImporter();
            $resp = $fi->import($_FILES['Filedata']['tmp_name'], $_FILES['Filedata']['name'], $fr);
            $r->setMessage(t('File uploaded successfully.'));
            if (is_object($fr)) {
                $r->setMessage(t('File replaced successfully.'));
            }
        }
        if (!$resp instanceof \Concrete\Core\File\Version) {
            $errorCode = $resp;
        } else {
            if (!is_object($fr)) {
                // we check $fr because we don't want to set it if we are replacing an existing file
                $respf = $resp->getFile();
                $respf->setOriginalPage($_POST['ocID']);
            } else {
                $respf = $fr;
            }
        }
示例#7
0
    $fr = new FileEditResponse();
    if ($token_validator->validate('files/delete')) {
        $files = array();
        if (is_array($_POST['fID'])) {
            foreach ($_POST['fID'] as $fID) {
                $f = File::getByID($fID);
                $fp = new Permissions($f);
                if ($fp->canDeleteFile()) {
                    $files[] = $f;
                    $f->delete();
                } else {
                    throw new Exception(t('Unable to delete one or more files.'));
                }
            }
        }
        $fr->setMessage(t2('%s file deleted successfully.', '%s files deleted successfully.', count($files)));
    } else {
        $fr->setError(new \Exception('Invalid Token'));
    }
    $fr->outputJSON();
}
$form = Loader::helper('form');
$files = array();
if (is_array($_REQUEST['fID'])) {
    foreach ($_REQUEST['fID'] as $fID) {
        $files[] = File::getByID($fID);
    }
} else {
    $files[] = File::getByID($_REQUEST['fID']);
}
$fcnt = 0;
示例#8
0
 public function submit()
 {
     if ($this->validateAction()) {
         $post = $this->request->request->all();
         $fsl = FileStorageLocation::getByID($post['fslID']);
         if (is_object($fsl)) {
             $fIDs = $post['fID'];
             if (is_array($fIDs)) {
                 foreach ($fIDs as $fID) {
                     $f = File::getByID($fID);
                     if (is_object($f)) {
                         $fp = new Permissions($f);
                         if ($fp->canEditFilePermissions()) {
                             try {
                                 $f->setFileStorageLocation($fsl);
                             } catch (\Exception $e) {
                                 $json = new \Concrete\Core\Application\EditResponse();
                                 $err = \Core::make('error');
                                 $err->add($e->getMessage());
                                 $json->setError($err);
                                 $json->outputJSON();
                             }
                         }
                     }
                 }
             }
         } else {
             $json = new \Concrete\Core\Application\EditResponse();
             $err = \Core::make('error');
             $err->add(t('Please select valid file storage location.'));
             $json->setError($err);
             $json->outputJSON();
         }
         $response = new EditResponse();
         $response->setFiles($this->files);
         $response->setMessage(t('File storage locations updated successfully.'));
         $response->outputJSON();
     }
 }
                if (!$resp instanceof \Concrete\Core\File\Version) {
                    $error->add($name . ': ' . FileImporter::getErrorMessage($resp));
                } else {
                    $files[] = $resp;
                    if ($_POST['removeFilesAfterPost'] == 1) {
                        $fsl = \Concrete\Core\File\StorageLocation\StorageLocation::getDefault()->getFileSystemObject();
                        $fsl->delete(REL_DIR_FILES_INCOMING . '/' . $name);
                    }
                    if (!is_object($fr)) {
                        // we check $fr because we don't want to set it if we are replacing an existing file
                        $respf = $resp->getFile();
                        $respf->setOriginalPage($_POST['ocID']);
                    } else {
                        $respf = $fr;
                    }
                }
            }
        }
    }
    if (count($files) == 0) {
        $error->add(t('You must select at least one file.'));
    }
} else {
    $error->add($valt->getErrorMessage());
}
$r->setError($error);
if (is_object($respf)) {
    $r->setFile($respf);
}
$r->setMessage(t2('%s file imported successfully.', '%s files imported successfully', count($files)));
$r->outputJSON();
示例#10
0
$fileID = $_REQUEST['fID'];
$f = File::getByID($fileID);
$token = Core::make('token');
$cp = new Permissions($f);
if (!$cp->canAdmin()) {
    die(t("Access Denied."));
}
$form = Loader::helper('form');
$r = new FileEditResponse();
$r->setFile($f);
if ($_POST['task'] == 'set_password') {
    if (!$token->validate('set_password_' . $fileID)) {
        die(t('Invalid CSRF Token.'));
    }
    $f->setPassword($_POST['fPassword']);
    $r->setMessage(t('File password saved successfully.'));
    $r->outputJSON();
}
if ($_POST['task'] == 'set_location') {
    if (!$token->validate('set_location_' . $fileID)) {
        die(t('Invalid CSRF Token.'));
    }
    $fsl = FileStorageLocation::getByID($_POST['fslID']);
    if (is_object($fsl)) {
        try {
            $f->setFileStorageLocation($fsl);
        } catch (\Exception $e) {
            $json = new \Concrete\Core\Application\EditResponse();
            $err = Core::make('error');
            $err->add($e->getMessage());
            $json->setError($err);
 public function clearAttribute()
 {
     $fr = new FileEditResponse();
     $ak = FileAttributeKey::get($_REQUEST['akID']);
     if ($this->validateAction()) {
         $this->populateFiles();
         if ($this->canEdit) {
             foreach ($this->files as $f) {
                 $f->clearAttribute($ak);
                 $f->reindex();
             }
             $fr->setFiles($this->files);
             $fr->setAdditionalDataAttribute('value', false);
             $fr->setMessage(t('Attributes cleared successfully.'));
         }
     }
     $fr->outputJSON();
 }
示例#12
0
文件: sets.php 项目: ngreimel/kovent
 public function submit()
 {
     if ($this->validateAction()) {
         $post = $this->request->request->all();
         foreach ($post as $key => $value) {
             if (preg_match('/fsID:/', $key)) {
                 $id = explode(':', $key);
                 $fsID = $id[1];
                 $fs = Set::getByID($fsID);
                 $fsp = new \Permissions($fs);
                 foreach ($this->files as $file) {
                     if ($fsp->canAddFile($file)) {
                         switch ($value) {
                             case '0':
                                 $fs->removeFileFromSet($file);
                                 break;
                             case '1':
                                 // do nothing
                                 break;
                             case '2':
                                 $fs->addFileToSet($file);
                                 break;
                         }
                     }
                 }
             }
         }
         $fsNew = $this->request->request->get('fsNew');
         $fsNewShare = $this->request->request->get('fsNewShare');
         if (is_array($fsNew)) {
             foreach ($fsNew as $i => $name) {
                 if ($name) {
                     foreach ($this->files as $file) {
                         $type = $fsNewShare[$i] == 1 ? Set::TYPE_PUBLIC : Set::TYPE_PRIVATE;
                         $fs = Set::createAndGetSet($fsNew[$i], $type);
                         $fs->addFileToSet($file);
                     }
                 }
             }
         }
         $sets = array();
         foreach ($this->files as $file) {
             foreach ($file->getFileSets() as $set) {
                 $o = $set->getJSONObject();
                 if (!in_array($o, $sets)) {
                     $sets[] = $o;
                 }
             }
         }
         $response = new EditResponse();
         $response->setFiles($this->files);
         $response->setAdditionalDataAttribute('sets', $sets);
         $response->setMessage(t('File sets updated successfully.'));
         $response->outputJSON();
     }
 }
示例#13
0
 public function deleteFiles()
 {
     /** @var Token $token */
     $token = $this->app->make('token');
     if (!$token->validate('files/bulk_delete')) {
         throw new \Exception($token->getErrorMessage());
     }
     $fr = new FileEditResponse();
     $files = array();
     if (is_array($_POST['fID'])) {
         foreach ($_POST['fID'] as $fID) {
             $f = File::getByID($fID);
             $fp = new Permissions($f);
             if ($fp->canDeleteFile()) {
                 $files[] = $f;
                 $f->delete();
             } else {
                 throw new \Exception(t('Unable to delete one or more files.'));
             }
         }
     }
     $fr->setMessage(t2('%s file deleted successfully.', '%s files deleted successfully.', count($files)));
     $fr->outputJSON();
 }
示例#14
0
 public function save()
 {
     if ($this->validateAction()) {
         $fp = new Permissions($this->file);
         if ($fp->canEditFileProperties()) {
             $fv = $this->file->getVersionToModify();
             $value = $this->request->request->get('value');
             switch ($this->request->request->get('name')) {
                 case 'fvTitle':
                     $fv->updateTitle($value);
                     break;
                 case 'fvDescription':
                     $fv->updateDescription($value);
                     break;
                 case 'fvTags':
                     $fv->updateTags($value);
                     break;
             }
             $sr = new FileEditResponse();
             $sr->setFile($this->file);
             $sr->setMessage(t('File updated successfully.'));
             $sr->setAdditionalDataAttribute('value', $value);
             $sr->outputJSON();
         } else {
             throw new Exception(t('Access Denied.'));
         }
     } else {
         throw new Exception(t('Access Denied.'));
     }
 }