%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/controllers/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/controllers/EditController.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\cfiles\controllers;
use Yii;
use yii\web\HttpException;
use humhub\modules\cfiles\models\FileSystemItem;
use humhub\modules\cfiles\models\forms\SelectionForm;
use humhub\modules\cfiles\permissions\ManageFiles;
use humhub\modules\cfiles\permissions\WriteAccess;
use humhub\modules\content\models\Content;
use humhub\modules\cfiles\models\File;
use humhub\modules\cfiles\models\Folder;
/**
* Description of BrowseController
*
* @author luke, Sebastian Stumpf
*/
class EditController extends BrowseController
{
/**
* Action to edit a given folder.
*
* @return string
*/
public function actionFolder($id = null)
{
$folder = FileSystemItem::getItemById($id);
if ($folder && !$folder->content->canEdit()) {
throw new HttpException(403);
}
if ($folder && $folder->content->container->id !== $this->contentContainer->id) {
throw new HttpException(404);
}
// create new folder if no folder was found or folder is not editable.
if (!$folder || !($folder instanceof Folder) || !$folder->isEditableFolder($folder)) {
$folder = $this->getCurrentFolder()->newFolder();
$folder->content->container = $this->contentContainer;
}
if ($folder->load(Yii::$app->request->post()) && $folder->save()) {
$this->view->saved();
return $this->htmlRedirect($folder->createUrl('/cfiles/browse/index'));
}
return $this->renderPartial('modal_edit_folder', [
'folder' => $folder,
'submitUrl' => $this->getCurrentFolder()->createUrl('/cfiles/edit/folder', ['id' => $folder->getItemId()])
]);
}
/**
* Action to edit a given file.
*
* @return string
*/
public function actionFile($id, $fromWall = 0)
{
$file = FileSystemItem::getItemById($id);
if ($file && $file->content->container->id !== $this->contentContainer->id) {
throw new HttpException(404);
}
// if not return cause this should not happen
if (empty($file) || !($file instanceof File)) {
throw new HttpException(404, Yii::t('CfilesModule.base', 'Cannot edit non existing file.'));
}
if (!$file->content->canEdit()) {
throw new HttpException(403);
}
if ($file->baseFile->load(Yii::$app->request->post()) && $file->baseFile->validate()) {
$duplicate = File::getFileByName($file->baseFile->file_name, $file->parent_folder_id, $this->contentContainer);
if ($duplicate && !$duplicate->is($file)) {
$file->baseFile->addErrors(['file_name' => Yii::t('CfilesModule.base', 'A file with that name already exists in this folder.')]);
} elseif ($file->load(Yii::$app->request->post()) && $file->save()) {
if ($fromWall) {
return $this->asJson(['success' => true]);
} else {
$this->view->saved();
return $this->htmlRedirect($this->contentContainer->createUrl('/cfiles/browse/index', ['fid' => $file->parent_folder_id]));
}
}
}
return $this->renderPartial('modal_edit_file', [
'file' => $file,
'submitUrl' => $this->contentContainer->createUrl('/cfiles/edit/file', ['fid' => $file->parent_folder_id, 'id' => $file->getItemId(), 'fromWall' => $fromWall]),
]);
}
/**
* @return string
*/
public function actionMakePrivate()
{
return $this->updateVisibility(new SelectionForm(), Content::VISIBILITY_PRIVATE);
}
/**
* @return string
*/
public function actionMakePublic()
{
return $this->updateVisibility(new SelectionForm(), Content::VISIBILITY_PUBLIC);
}
/**
* @param SelectionForm $model
* @param $visibility
* @return string
*/
private function updateVisibility(SelectionForm $model, $visibility)
{
foreach ($model->selection as $itemId) {
$item = FileSystemItem::getItemById($itemId);
if(!$item->content->canEdit()) {
throw new HttpException(403);
}
if ($item && $item->content->container->id === $this->contentContainer->id) {
$item->updateVisibility($visibility);
$item->content->save();
}
}
return $this->renderFileList();
}
}