%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/MoveController.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2015 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\cfiles\controllers; use humhub\modules\cfiles\models\File; use humhub\modules\cfiles\models\FileSystemItem; use humhub\modules\cfiles\models\Folder; use humhub\modules\cfiles\models\forms\MoveForm; use humhub\modules\cfiles\permissions\ManageFiles; use Yii; /** * Description of BrowseController * * @author luke, Sebastian Stumpf */ class MoveController extends BaseController { /** * @inheritdoc */ public function getAccessRules() { return [ ['permission' => [ManageFiles::class]] ]; } /** * Action to move files and folders from the current, to another folder. * @return string */ public function actionIndex() //Make sure an $fid is given otherwise the root folder is used as default { $model = new MoveForm([ 'root' => $this->getRootFolder(), 'sourceFolder' => $this->getCurrentFolder() ]); if (!$model->load(Yii::$app->request->post())) { return $this->renderAjax('modal_move', [ 'model' => $model, ]); } if($model->save()) { $this->view->saved(); return $this->htmlRedirect($model->destination->createUrl('/cfiles/browse')); } else { $errorMsg = Yii::t('CfilesModule.base', 'Some files could not be moved: '); foreach ($model->getErrors() as $key => $errors) { foreach ($errors as $error) { $errorMsg .= $error.' '; } } $this->view->error($errorMsg); return $this->htmlRedirect($model->sourceFolder->createUrl('/cfiles/browse')); } } public function actionDrop() { $this->forcePostRequest(); $targetFolder = $this->getTargetFolder(Yii::$app->request->post('targetFolder')); if (!$targetFolder) { return $this->asJson([ 'error' => Yii::t('CfilesModule.base', 'Wrong target folder!'), ]); } $droppedItem = $this->getDroppedItem(Yii::$app->request->post('droppedItem')); if (!$droppedItem) { return $this->asJson([ 'error' => Yii::t('CfilesModule.base', 'Wrong moved item!'), ]); } // Move the dropped Item(File/Folder) to the target Folder if (!$targetFolder->moveItem($droppedItem)) { return $this->asJson([ 'error' => $droppedItem->getFirstError($droppedItem->getTitle()) ?? Yii::t('CfilesModule.base', 'Could not move the item!'), ]); } $resultData = [ 'movedItemName' => $droppedItem->getTitle(), 'targetFolderName' => $targetFolder->getTitle(), ]; if ($droppedItem instanceof File) { return $this->asJson([ 'success' => Yii::t('CfilesModule.base', 'File "{movedItemName}" has been moved into the folder "{targetFolderName}".', $resultData), ]); } else { return $this->asJson([ 'success' => Yii::t('CfilesModule.base', 'Folder "{movedItemName}" has been moved into the folder "{targetFolderName}".', $resultData), ]); } } private function getTargetFolder(?string $idData): ?Folder { if (!preg_match('/^folder_(\d+)$/', $idData, $targetFolderData)) { return null; } return Folder::find() ->contentContainer($this->contentContainer) ->where(['cfiles_folder.id' => $targetFolderData[1]]) ->one(); } private function getDroppedItem(?string $idData): ?FileSystemItem { if (!preg_match('/^(folder_|file_)(\d+)$/', $idData, $droppedItemData)) { return null; } /* @var FileSystemItem $droppedItem */ switch ($droppedItemData[1]) { case 'folder_': $droppedItem = Folder::find()->where(['cfiles_folder.id' => $droppedItemData[2]]); break; case 'file_': $droppedItem = File::find()->where(['cfiles_file.id' => $droppedItemData[2]]); break; } return $droppedItem->contentContainer($this->contentContainer)->one(); } }