%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/VersionController.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2021 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\forms\VersionForm; use humhub\modules\cfiles\widgets\VersionsView; use humhub\modules\file\models\FileHistory; use Yii; use yii\web\HttpException; /** * VersionController to review file versions and switch between the * * @author luke */ class VersionController extends BaseController { /** * Action to view all versions of the requested File * @return string */ public function actionIndex() { $file = $this->getFile(); if (!$file->content->canEdit()) { throw new HttpException(403); } $model = new VersionForm(['file' => $file]); if (!$model->load()) { return $this->renderAjax('index', [ 'model' => $model, ]); } if ($model->save()) { $this->view->success(Yii::t('CfilesModule.base','File {fileName} has been reverted to version from {fileDateTime}', [ 'fileName' => $model->file->baseFile->file_name, 'fileDateTime' => Yii::$app->formatter->asDatetime($model->getFileVersion()->created_at, 'short'), ])); } else { $errorMsg = ''; foreach ($model->getErrors() as $errors) { foreach ($errors as $error) { $errorMsg .= $error.' '; } } $this->view->error($errorMsg); } return $this->htmlRedirect($model->file->content->container->createUrl('/cfiles/browse', ['fid' => $model->file->parent_folder_id])); } /** * Load file versions for the single requested page */ public function actionPage() { $file = $this->getFile(); if (!$file->content->canEdit()) { throw new HttpException(403); } $versionsView = new VersionsView([ 'file' => $file, 'page' => (int)Yii::$app->request->get('page', 2), ]); return $this->asJson([ 'html' => $versionsView->renderVersions(), 'isLast' => $versionsView->isLastPage(), ]); } /** * Action to delete a version of the requested File * @throws HttpException */ public function actionDelete() { $this->forcePostRequest(); $file = $this->getFile(); if (!$file->canEdit()) { throw new HttpException(403); } $fileVersionId = (int)Yii::$app->request->get('version'); $deletedFileVersion = $file->baseFile->getFileHistoryById($fileVersionId); if (!$deletedFileVersion) { throw new HttpException(404, 'Version not found!'); } $deletedVersionDate = Yii::$app->formatter->asDatetime($deletedFileVersion->created_at, 'short'); if (!$deletedFileVersion->delete()) { return $this->asJson([ 'error' => Yii::t('CfilesModule.user', 'The version "{versionDate}" could not be deleted!', ['versionDate' => $deletedVersionDate]), ]); } return $this->asJson([ 'deleted' => $fileVersionId, 'message' => Yii::t('CfilesModule.user', 'The version "{versionDate}" has been deleted.', ['versionDate' => $deletedVersionDate]), ]); } private function getFile(): File { /* @var File $file */ $file = File::find() ->readable() ->andWhere(['cfiles_file.id' => Yii::$app->request->get('id')]) ->one(); if (!$file) { throw new HttpException(404, 'File not found!'); } return $file; } }