From 1c024211316d96583c67e517f22b97a4f1075104 Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Fri, 20 Sep 2024 19:16:28 +0200 Subject: [PATCH 1/3] Optimize sql query to get files from the stream --- docs/CHANGELOG.md | 1 + models/File.php | 51 +++++++++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 9d4a6ef..ee3cdce 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -7,6 +7,7 @@ Changelog - Enh #224: Unifying positions of button on modals for consistency and better UX - Enh #227: Use PHP CS Fixer - Fix: Add autofocus on file or folder edit (for HumHub 1.17 - see https://github.com/humhub/humhub/issues/7136) +- Fix #230: Optimize sql query to get files from the stream 0.16.6 - March 14, 2024 ------------------------- diff --git a/models/File.php b/models/File.php index 609dbc9..0ab6102 100644 --- a/models/File.php +++ b/models/File.php @@ -10,6 +10,7 @@ use humhub\modules\file\libs\FileHelper; use humhub\modules\file\models\File as BaseFile; use humhub\modules\file\models\FileUpload; +use humhub\modules\post\models\Post; use humhub\modules\search\events\SearchAddEvent; use humhub\modules\topic\models\Topic; use humhub\modules\user\models\User; @@ -323,7 +324,7 @@ public function getEditUrl() /** * Get the post related to the given file file. */ - public static function getBasePost(\humhub\modules\file\models\File $file = null) + public static function getBasePost(BaseFile $file = null) { if ($file === null) { return null; @@ -386,31 +387,37 @@ public function getFullPath($separator = '/') */ public static function getPostedFiles($contentContainer, $filesOrder = ['file.updated_at' => SORT_ASC, 'file.title' => SORT_ASC]) { - // Get Posted Files - $query = \humhub\modules\file\models\File::find(); - // join comments to the file if available - $query->join('LEFT JOIN', 'comment', '(file.object_id=comment.id AND file.object_model=' . Yii::$app->db->quoteValue(Comment::className()) . ')'); - // join parent post of comment or file - $query->join('LEFT JOIN', 'content', '(comment.object_model=content.object_model AND comment.object_id=content.object_id) OR (file.object_model=content.object_model AND file.object_id=content.object_id)'); + // only accept Posts as the base content, so stuff from sumbmodules like files itsself or gallery will be excluded - $query->andWhere(['content.contentcontainer_id' => $contentContainer->contentContainerRecord->id]); + // Initialise sub queries to get files from Posts and Comments + $subQueries = [ + Post::class => Content::find() + ->select('content.object_id') + ->where(['content.object_model' => Post::class]), + Comment::class => Content::find() + ->select('comment.id') + ->innerJoin('comment', 'comment.object_model = content.object_model AND comment.object_id = content.object_id') + ->where(['comment.object_model' => Post::class]), + ]; - if(!$contentContainer->canAccessPrivateContent()) { - // Note this will cut comment images, but including the visibility of comments is pretty complex... - $query->andWhere(['content.visibility' => Content::VISIBILITY_PUBLIC]); - } + $query = BaseFile::find(); - $query->andWhere(['content.state' => Content::STATE_PUBLISHED]); + foreach ($subQueries as $objectClass => $subQuery) { + // Filter Content records by container and visibility states + $subQuery->andWhere(['content.contentcontainer_id' => $contentContainer->contentContainerRecord->id]) + ->andWhere(['content.state' => Content::STATE_PUBLISHED]); + if (!$contentContainer->canAccessPrivateContent()) { + // Note this will cut comment images, but including the visibility of comments is pretty complex... + $subQuery->andWhere(['content.visibility' => Content::VISIBILITY_PUBLIC]); + } + + $query->orWhere([ + 'AND', + ['file.object_model' => $objectClass], + ['IN', 'file.object_id', $subQuery], + ]); + } - // only accept Posts as the base content, so stuff from sumbmodules like files itsself or gallery will be excluded - $query->andWhere( - ['or', - ['=', 'comment.object_model', \humhub\modules\post\models\Post::className()], - ['=', 'file.object_model', \humhub\modules\post\models\Post::className()], - ], - ); - - // Get Files from comments return $query->orderBy($filesOrder); } From c44209d97a44a84657d4e0d773e41c06f1813b11 Mon Sep 17 00:00:00 2001 From: yurabakhtin Date: Fri, 20 Sep 2024 17:16:49 +0000 Subject: [PATCH 2/3] Autocommit PHP CS Fixer --- controllers/BaseController.php | 4 ++-- controllers/BrowseController.php | 2 +- controllers/DeleteController.php | 2 +- controllers/EditController.php | 2 +- controllers/MoveController.php | 2 +- controllers/rest/FileController.php | 2 +- controllers/rest/ManageController.php | 8 ++++---- libs/ZipExtractor.php | 8 ++++---- migrations/m150720_174011_initial.php | 8 ++++---- migrations/m170830_122439_foreignkeys.php | 2 +- models/File.php | 12 ++++++------ models/Folder.php | 4 ++-- models/rows/AbstractFileSystemItemRow.php | 6 +++--- tests/codeception/_support/AcceptanceTester.php | 2 +- widgets/FileList.php | 6 +++--- 15 files changed, 35 insertions(+), 35 deletions(-) diff --git a/controllers/BaseController.php b/controllers/BaseController.php index 8c04c8a..7c3886e 100644 --- a/controllers/BaseController.php +++ b/controllers/BaseController.php @@ -45,7 +45,7 @@ public function beforeAction($action) if (!$this->getRootFolder()) { $this->_rootFolder = Folder::initRoot($this->contentContainer); $newRoot = true; - } elseif($this->getRootFolder()->content->isPrivate()) { + } elseif ($this->getRootFolder()->content->isPrivate()) { // Make sure older root folders are public by default. $this->getRootFolder()->content->visibility = Content::VISIBILITY_PUBLIC; $this->getRootFolder()->content->save(); @@ -53,7 +53,7 @@ public function beforeAction($action) if ($this->getAllPostedFilesFolder() == null) { $this->_allPostedFilesFolder = Folder::initPostedFilesFolder($this->contentContainer); - } elseif($this->getAllPostedFilesFolder()->content->isPrivate()) { + } elseif ($this->getAllPostedFilesFolder()->content->isPrivate()) { $this->getAllPostedFilesFolder()->content->visibility = Content::VISIBILITY_PUBLIC; $this->getAllPostedFilesFolder()->content->save(); } diff --git a/controllers/BrowseController.php b/controllers/BrowseController.php index f73e097..eb67ccc 100644 --- a/controllers/BrowseController.php +++ b/controllers/BrowseController.php @@ -26,7 +26,7 @@ class BrowseController extends BaseController public function actionIndex() { $currentFolder = $this->getCurrentFolder(); - if(!$currentFolder->content->canView()) { + if (!$currentFolder->content->canView()) { throw new HttpException(403); } diff --git a/controllers/DeleteController.php b/controllers/DeleteController.php index 67a7130..4e2f101 100644 --- a/controllers/DeleteController.php +++ b/controllers/DeleteController.php @@ -32,7 +32,7 @@ public function actionIndex() foreach ($selectedItems as $itemId) { $item = FileSystemItem::getItemById($itemId); - if(!$item->content->canEdit()) { + if (!$item->content->canEdit()) { throw new HttpException(403); } diff --git a/controllers/EditController.php b/controllers/EditController.php index 2f52f81..826e415 100644 --- a/controllers/EditController.php +++ b/controllers/EditController.php @@ -131,7 +131,7 @@ private function updateVisibility(SelectionForm $model, $visibility) foreach ($model->selection as $itemId) { $item = FileSystemItem::getItemById($itemId); - if(!$item->content->canEdit()) { + if (!$item->content->canEdit()) { throw new HttpException(403); } diff --git a/controllers/MoveController.php b/controllers/MoveController.php index 779d706..787dc39 100644 --- a/controllers/MoveController.php +++ b/controllers/MoveController.php @@ -49,7 +49,7 @@ public function actionIndex() //Make sure an $fid is given otherwise the root fo ]); } - if($model->save()) { + if ($model->save()) { $this->view->saved(); return $this->htmlRedirect($model->destination->createUrl('/cfiles/browse')); } else { diff --git a/controllers/rest/FileController.php b/controllers/rest/FileController.php index 9a92b3f..499e5e4 100644 --- a/controllers/rest/FileController.php +++ b/controllers/rest/FileController.php @@ -68,7 +68,7 @@ public function actionUpload($containerId) foreach ($files as $file) { $file = $targetDir->addUploadedFile($file); - if($file->hasErrors() || $file->baseFile->hasErrors()) { + if ($file->hasErrors() || $file->baseFile->hasErrors()) { return $this->returnError(422, "File {$file->baseFile->name} could not be uploaded!", [ 'errors' => array_merge($file->getErrors(), $file->baseFile->getErrors()), ]); diff --git a/controllers/rest/ManageController.php b/controllers/rest/ManageController.php index a0f29b2..5e9fbc2 100644 --- a/controllers/rest/ManageController.php +++ b/controllers/rest/ManageController.php @@ -38,7 +38,7 @@ public function actionDelete($containerId) } foreach ($result as $item) { - if(! $item->delete()) { + if (! $item->delete()) { Yii::error('Could not delete cFiles items.', 'api'); return $this->returnError(500, 'Internal error while deleting cFiles item!'); } @@ -81,7 +81,7 @@ public function actionMove($containerId) ]); } - if($model->load($params) && $model->save()) { + if ($model->load($params) && $model->save()) { return $this->returnSuccess('Items successfully moved.'); } @@ -115,7 +115,7 @@ public function actionMakePublic($containerId) foreach ($result as $item) { $item->updateVisibility(Content::VISIBILITY_PUBLIC); - if(! $item->content->save()) { + if (! $item->content->save()) { Yii::error('Could not set public visibility for cFiles items.', 'api'); return $this->returnError(500, 'Internal error while setting public visibility for cFiles item!'); } @@ -144,7 +144,7 @@ public function actionMakePrivate($containerId) foreach ($result as $item) { $item->updateVisibility(Content::VISIBILITY_PRIVATE); - if(! $item->content->save()) { + if (! $item->content->save()) { Yii::error('Could not set private visibility for cFiles items.', 'api'); return $this->returnError(500, 'Internal error while setting private visibility for cFiles item!'); } diff --git a/libs/ZipExtractor.php b/libs/ZipExtractor.php index 1a47d93..751aaca 100644 --- a/libs/ZipExtractor.php +++ b/libs/ZipExtractor.php @@ -72,7 +72,7 @@ protected function generateModelsFromFilesystem(Folder $targetFolder, $folderPat // remove unwanted parent folder references from the scanned files $files = array_diff(scandir($folderPath), ['..','.']); - if(!$root) { + if (!$root) { $root = $targetFolder; } @@ -81,9 +81,9 @@ protected function generateModelsFromFilesystem(Folder $targetFolder, $folderPat if (is_dir($filePath)) { $folder = $targetFolder->findFolderByName($file); - if(!$folder) { + if (!$folder) { $folder = $targetFolder->newFolder($file); - if(!$folder->save()) { + if (!$folder->save()) { $root->addError('upload', Yii::t('CfilesModule.base', 'An error occurred while creating folder {folder}.', ['folder' => $file])); continue; } @@ -92,7 +92,7 @@ protected function generateModelsFromFilesystem(Folder $targetFolder, $folderPat $this->generateModelsFromFilesystem($folder, $filePath, $root); } else { $result = $this->generateModelFromFile($targetFolder, $folderPath, $file); - if($result->hasErrors()) { + if ($result->hasErrors()) { $root->addError('upload', Yii::t('CfilesModule.base', 'An error occurred while unpacking {filename}.', ['filename' => $file])); } } diff --git a/migrations/m150720_174011_initial.php b/migrations/m150720_174011_initial.php index 11b6a52..aaa3f43 100644 --- a/migrations/m150720_174011_initial.php +++ b/migrations/m150720_174011_initial.php @@ -7,16 +7,16 @@ class m150720_174011_initial extends Migration { public function up() { - $this->createTable('cfiles_file', array( + $this->createTable('cfiles_file', [ 'id' => 'pk', 'parent_folder_id' => 'int(11) NULL', - ), ''); + ], ''); - $this->createTable('cfiles_folder', array( + $this->createTable('cfiles_folder', [ 'id' => 'pk', 'parent_folder_id' => 'int(11) NULL', 'title' => 'varchar(255) NOT NULL', - ), ''); + ], ''); } public function down() diff --git a/migrations/m170830_122439_foreignkeys.php b/migrations/m170830_122439_foreignkeys.php index 9dfda27..867b1fd 100644 --- a/migrations/m170830_122439_foreignkeys.php +++ b/migrations/m170830_122439_foreignkeys.php @@ -15,7 +15,7 @@ public function safeUp() try { $this->addForeignKey('fk_cfiles_file_parent_folder', 'cfiles_file', 'parent_folder_id', 'cfiles_folder', 'id', 'SET NULL'); $this->addForeignKey('fk_cfiles_folder_parent_folder', 'cfiles_folder', 'parent_folder_id', 'cfiles_folder', 'id', 'SET NULL'); - } catch(Exception $e) { + } catch (Exception $e) { Yii::error($e); } } diff --git a/models/File.php b/models/File.php index 0ab6102..4cc9851 100644 --- a/models/File.php +++ b/models/File.php @@ -97,7 +97,7 @@ public function rules() ['hidden', 'boolean'], ]; - if($this->parentFolder && $this->parentFolder->content->isPublic()) { + if ($this->parentFolder && $this->parentFolder->content->isPublic()) { $rules[] = ['visibility', 'integer', 'min' => 0, 'max' => 1]; } @@ -124,11 +124,11 @@ public function getSearchAttributes() 'description' => $this->description, ]; - if($this->getCreator()) { + if ($this->getCreator()) { $attributes['creator'] = $this->getCreator()->getDisplayName(); } - if($this->getEditor()) { + if ($this->getEditor()) { $attributes['editor'] = $this->getEditor()->getDisplayName(); } @@ -206,7 +206,7 @@ public function updateVisibility($visibility) return; } - if(!$this->parentFolder->content->isPrivate() || $visibility == Content::VISIBILITY_PRIVATE) { + if (!$this->parentFolder->content->isPrivate() || $visibility == Content::VISIBILITY_PRIVATE) { // For user profile files we use Content::VISIBILITY_OWNER isntead of private $this->content->visibility = $visibility; } @@ -214,8 +214,8 @@ public function updateVisibility($visibility) public function getVisibilityTitle() { - if(Yii::$app->getModule('friendship')->settings->get('enable') && $this->content->container instanceof User) { - if($this->content->container->isCurrentuser()) { + if (Yii::$app->getModule('friendship')->settings->get('enable') && $this->content->container instanceof User) { + if ($this->content->container->isCurrentuser()) { $privateText = Yii::t('CfilesModule.base', 'This file is only visible for you and your friends.'); } else { $privateText = Yii::t('CfilesModule.base', 'This file is protected.'); diff --git a/models/Folder.php b/models/Folder.php index aa00c74..9700717 100644 --- a/models/Folder.php +++ b/models/Folder.php @@ -154,11 +154,11 @@ public function getSearchAttributes() 'description' => $this->description, ]; - if($this->getCreator()) { + if ($this->getCreator()) { $attributes['creator'] = $this->getCreator()->getDisplayName(); } - if($this->getEditor()) { + if ($this->getEditor()) { $attributes['editor'] = $this->getEditor()->getDisplayName(); } } diff --git a/models/rows/AbstractFileSystemItemRow.php b/models/rows/AbstractFileSystemItemRow.php index 5b489ce..a5d0a97 100644 --- a/models/rows/AbstractFileSystemItemRow.php +++ b/models/rows/AbstractFileSystemItemRow.php @@ -95,7 +95,7 @@ public static function translateOrder($sort = null, $order = 'ASC') { $result = static::DEFAULT_ORDER; - if($sort && array_key_exists($sort, static::ORDER_MAPPING)) { + if ($sort && array_key_exists($sort, static::ORDER_MAPPING)) { $result = static::ORDER_MAPPING[$sort] ? static::ORDER_MAPPING[$sort] . ' ' . $order : $result; } @@ -108,11 +108,11 @@ public static function translateOrder($sort = null, $order = 'ASC') */ public function isRenderColumn($column) { - if($column === self::COLUMN_SELECT && !$this->showSelect) { + if ($column === self::COLUMN_SELECT && !$this->showSelect) { return false; } - if(!$this->_columns) { + if (!$this->_columns) { $this->_columns = $this->getColumns(); } diff --git a/tests/codeception/_support/AcceptanceTester.php b/tests/codeception/_support/AcceptanceTester.php index ca5f7a3..9449c03 100644 --- a/tests/codeception/_support/AcceptanceTester.php +++ b/tests/codeception/_support/AcceptanceTester.php @@ -129,7 +129,7 @@ public function createFolder($title = 'test', $description = 'test description', $this->fillField('Folder[title]', $title); $this->fillField('Folder[description]', $description); - if($isPublic) { + if ($isPublic) { $this->jsClick('input#folder-visibility'); } diff --git a/widgets/FileList.php b/widgets/FileList.php index 803fefc..7d76bf9 100644 --- a/widgets/FileList.php +++ b/widgets/FileList.php @@ -83,11 +83,11 @@ public function initSort() $this->order = Yii::$app->request->get('order', $this->order); // Save sort settings if sorting was used and logged in user is given or try fetching user settings. - if(Yii::$app->request->get('sort') && !Yii::$app->user->isGuest) { + if (Yii::$app->request->get('sort') && !Yii::$app->user->isGuest) { $settings = $module->settings->user(Yii::$app->user->getIdentity()); $settings->set('defaultSort', $this->sort); $settings->set('defaultOrder', $this->order); - } elseif(!Yii::$app->user->isGuest) { + } elseif (!Yii::$app->user->isGuest) { $settings = $module->settings->user(Yii::$app->user->getIdentity()); $this->sort = $settings->get('defaultSort', $this->sort); $this->order = $settings->get('defaultOrder', $this->order); @@ -115,7 +115,7 @@ public function getDefaultOrder() */ public function run() { - if($this->folder->isAllPostedFiles()) { + if ($this->folder->isAllPostedFiles()) { $this->setPostedFilesRows(); } else { $this->setSystemItemRows(); From eef8f2a347ce57acb7d7cb26db5f0bfed64d8746 Mon Sep 17 00:00:00 2001 From: HumHub Translations Date: Sat, 21 Sep 2024 08:24:04 +0000 Subject: [PATCH 3/3] Enh: Updated Translations (translate.humhub.org) --- messages/eu/base.php | 2 +- messages/pt-BR/base.php | 197 +++++++++++------------ messages/pt-BR/models_FileSystemItem.php | 13 +- messages/pt-BR/user.php | 11 +- messages/ru/models_FileSystemItem.php | 13 +- 5 files changed, 116 insertions(+), 120 deletions(-) diff --git a/messages/eu/base.php b/messages/eu/base.php index 15f877f..f5fdbc3 100644 --- a/messages/eu/base.php +++ b/messages/eu/base.php @@ -57,7 +57,7 @@ 'Move to another Space' => '', 'Moving to the same folder is not valid.' => '', 'Moving to this folder is invalid.' => '', - 'Name' => '', + 'Name' => 'izena', 'No file found!' => '', 'Open' => 'Ireki', 'Open file folder' => '', diff --git a/messages/pt-BR/base.php b/messages/pt-BR/base.php index 1e04c69..b020185 100644 --- a/messages/pt-BR/base.php +++ b/messages/pt-BR/base.php @@ -1,100 +1,99 @@ '%filename% possui extensão inválida e foi ignorado.', - '/ (root)' => '/ (raiz)', - 'Confirm delete file' => 'Confirmar exclusão de arquivo', - 'Create folder' => 'Criar pasta', - 'Edit file' => 'Alterar arquivo', - 'Edit folder' => 'Alterar pasta', - 'File download url' => 'Endereço de download do arquivo', - 'File url' => 'Endereço do arquivo', - 'Files module configuration' => 'Configuração do módulo de Arquivos', - 'Folder url' => 'Endereço da pasta', - 'Move files' => 'Mover arquivos', - 'A file with that name already exists in this folder.' => 'Um arquivo com esse nome já existe nessa pasta.', - 'Actions' => 'Ações', - 'Add directory' => 'Adicionar pasta', - 'Add file(s)' => 'Adicionar arquivo(s)', - 'Adds files module to this space.' => 'Adicionar o módulo de arquivos neste espaço.', - 'Adds files module to your profile.' => 'Adicionar o módulo de arquivos no seu perfil.', - 'An error occurred while creating folder {folder}.' => 'Um erro ocorreu na criação da pasta {folder}.', - 'An error occurred while unpacking {filename}.' => 'Um erro ocorreu ao descompactar {filename}', - 'Archive %filename% could not be extracted.' => 'Arquivo %filename% não pôde ser extraído.', - 'Author' => 'Autor', - 'Cannot edit non existing file.' => 'Não é possível editar um arquivo inexistente.', - 'Close' => 'Fechar', - 'Could not find folder with id: %id%' => 'Não foi possível achar a pasta com o id: %id%', - 'Creator' => 'Criador', - 'Delete' => 'Apagar', - 'Destination folder not found!' => 'Pasta de destino não encontrada!', - 'Disable archive (ZIP) support' => 'Desabilitar suporte a arquivos ZIP', - 'Display Url' => 'Exibir endereço', - 'Display a download count column' => 'Exibir uma coluna de contagem de transferência', - 'Do you really want to delete this {number} item(s) with all subcontent?' => 'Você realmente quer apagar {number} item(ns) com todos os seus conteúdos?', - 'Download' => 'Baixar', - 'Download ZIP' => 'Baixar ZIP', - 'Downloads' => 'Transferência', - 'Edit' => 'Alterar', - 'Edit directory' => 'Alterar pasta', - 'File' => 'Arquivo', - 'Files' => 'Arquivos', - 'Files from the stream' => 'Arquivos do mural', - 'Folder' => 'Pasta', - 'Folder should not start or end with blank space.' => 'Nome de pasta não pode iniciar ou terminar com espaço em branco.', - 'Folder {name} can\'t be moved to itself!' => 'Não é possível mover a pasta {name} para dentro dela mesma!', - 'Folder {name} given folder is not editable!' => 'A pasta {name} não é editável!', - 'Import Zip' => 'Importar zip', - 'Likes/Comments' => 'Curtidas/Comentários', - 'Make Private' => 'Tornar privado', - 'Make Public' => 'Tornar público', - 'Move' => 'Mover', - 'Moving to the same folder is not valid.' => 'Não é possível mover para a mesma pasta.', - 'Moving to this folder is invalid.' => 'Não é possível mover para essa pasta.', - 'Name' => 'Nome', - 'Open' => 'Abrir', - 'Open file folder' => 'Abrir essa pasta', - 'Opening archive failed with error code %code%.' => 'Erro ao abrir o arquivo. Código: %code%', - 'Please select a valid destination folder for %title%.' => 'Por favor, selecione uma pasta de destino válida para %title%.', - 'Root' => 'Raiz', - 'Selected items...' => 'Itens selecionados...', - 'Show Post' => 'Exibir Publicação', - 'Size' => 'Tamanho', - 'Size: {size}' => 'Tamanho: {size}', - 'Some files could not be imported: ' => 'Alguns arquivos não puderam ser importados:', - 'Some files could not be moved: ' => 'Alguns arquivos não puderam ser movidos:', - 'The root folder is the entry point that contains all available files.' => 'A pasta raiz é o ponto de entrada que contém todos os arquivos disponíveis.', - 'This file is only visible for you and your friends.' => 'Este arquivo é visível apenas para você e seus amigos.', - 'This file is private.' => 'Esse arquivo é privado.', - 'This file is protected.' => 'Este arquivo está protegido.', - 'This file is public.' => 'Esse arquivo é público.', - 'This folder is empty.' => 'Essa pasta está vazia.', - 'This folder is only visible for you and your friends.' => 'Esta pasta só é visível para você e seus amigos.', - 'This folder is private.' => 'Essa pasta é privada.', - 'This folder is protected.' => 'Esta pasta está protegida.', - 'This folder is public.' => 'Essa pasta é pública.', - 'Unfortunately you have no permission to upload/edit files.' => 'Infelizmente, você não tem permissão para transferir/alterar arquivos.', - 'Updated' => 'Atualizado', - 'Upload files or create a subfolder with the buttons on the top.' => 'Transfira arquivos ou crie uma subpasta usando os botões na parte superior.', - 'Upload files to the stream to fill this folder.' => 'Transfira arquivos para o mural para preencher esta pasta.', - 'You can find all files that have been posted to this stream here.' => 'Você pode encontrar todos os arquivos enviados para esse mural aqui.', - 'ZIP selected' => 'ZIP selecionado', - 'ZIP support is not enabled.' => 'Suporte para arquivos ZIP não habilitado.', - 'File versions' => '', - 'Could not move the item!' => '', - 'Delete this version!' => '', - 'File "{movedItemName}" has been moved into the folder "{targetFolderName}".' => '', - 'File {fileName} has been reverted to version from {fileDateTime}' => '', - 'Folder "{movedItemName}" has been moved into the folder "{targetFolderName}".' => '', - 'Move to another Space' => '', - 'No file found!' => '', - 'Revert to this version' => '', - 'Select what file version you want to switch.' => '', - 'Show older versions' => '', - 'Time' => '', - 'Versions' => '', - 'Wrong moved item!' => '', - 'Wrong target folder!' => '', - 'You cannot move the file "{name}"!' => '', - 'You cannot move the folder "{name}"!' => '', -]; +return array ( + '%filename% has invalid extension and was skipped.' => '%filename% possui extensão inválida e foi ignorado.', + '/ (root)' => '/ (raiz)', + 'Confirm delete file' => 'Confirmar exclusão de arquivo', + 'Create folder' => 'Criar pasta', + 'Edit file' => 'Alterar arquivo', + 'Edit folder' => 'Alterar pasta', + 'File download url' => 'Endereço de download do arquivo', + 'File url' => 'Endereço do arquivo', + 'File versions' => 'Versões do arquivo', + 'Files module configuration' => 'Configuração do módulo de Arquivos', + 'Folder url' => 'Endereço da pasta', + 'Move files' => 'Mover arquivos', + 'A file with that name already exists in this folder.' => 'Um arquivo com esse nome já existe nessa pasta.', + 'Actions' => 'Ações', + 'Add directory' => 'Adicionar pasta', + 'Add file(s)' => 'Adicionar arquivo(s)', + 'Adds files module to this space.' => 'Adicionar o módulo de arquivos neste espaço.', + 'Adds files module to your profile.' => 'Adicionar o módulo de arquivos no seu perfil.', + 'An error occurred while creating folder {folder}.' => 'Um erro ocorreu na criação da pasta {folder}.', + 'An error occurred while unpacking {filename}.' => 'Um erro ocorreu ao descompactar {filename}', + 'Archive %filename% could not be extracted.' => 'Arquivo %filename% não pôde ser extraído.', + 'Author' => 'Autor', + 'Cannot edit non existing file.' => 'Não é possível editar um arquivo inexistente.', + 'Close' => 'Fechar', + 'Could not find folder with id: %id%' => 'Não foi possível achar a pasta com o id: %id%', + 'Could not move the item!' => 'Não foi possível mover o item!', + 'Creator' => 'Criador', + 'Delete' => 'Apagar', + 'Delete this version!' => 'Apague esta versão!', + 'Destination folder not found!' => 'Pasta de destino não encontrada!', + 'Disable archive (ZIP) support' => 'Desabilitar suporte a arquivos ZIP', + 'Display Url' => 'Exibir endereço', + 'Display a download count column' => 'Exibir uma coluna de contagem de transferência', + 'Do you really want to delete this {number} item(s) with all subcontent?' => 'Você realmente quer apagar {number} item(ns) com todos os seus conteúdos?', + 'Download' => 'Baixar', + 'Download ZIP' => 'Baixar ZIP', + 'Downloads' => 'Transferência', + 'Edit' => 'Alterar', + 'Edit directory' => 'Alterar pasta', + 'File' => 'Arquivo', + 'File "{movedItemName}" has been moved into the folder "{targetFolderName}".' => 'O arquivo "{movedItemName}" foi movido para a pasta "{targetFolderName}".', + 'File {fileName} has been reverted to version from {fileDateTime}' => 'O arquivo {fileName} foi revertido para a versão de {fileDateTime}', + 'Files' => 'Arquivos', + 'Files from the stream' => 'Arquivos do fluxo', + 'Folder' => 'Pasta', + 'Folder "{movedItemName}" has been moved into the folder "{targetFolderName}".' => 'A pasta "{movedItemName}" foi movida para a pasta "{targetFolderName}".', + 'Folder should not start or end with blank space.' => 'Nome de pasta não pode iniciar ou terminar com espaço em branco.', + 'Folder {name} can\'t be moved to itself!' => 'Não é possível mover a pasta {name} para dentro dela mesma!', + 'Folder {name} given folder is not editable!' => 'A pasta {name} não é editável!', + 'Import Zip' => 'Importar zip', + 'Likes/Comments' => 'Curtidas/Comentários', + 'Make Private' => 'Tornar privado', + 'Make Public' => 'Tornar público', + 'Move' => 'Mover', + 'Move to another Space' => 'Mover para outro espaço', + 'Moving to the same folder is not valid.' => 'Não é possível mover para a mesma pasta.', + 'Moving to this folder is invalid.' => 'Não é possível mover para essa pasta.', + 'Name' => 'Nome', + 'No file found!' => 'Nenhum arquivo encontrado!', + 'Open' => 'Abrir', + 'Open file folder' => 'Abrir essa pasta', + 'Opening archive failed with error code %code%.' => 'Erro ao abrir o arquivo. Código: %code%', + 'Please select a valid destination folder for %title%.' => 'Por favor, selecione uma pasta de destino válida para %title%.', + 'Revert to this version' => 'Reverter para esta versão', + 'Root' => 'Raiz', + 'Select what file version you want to switch.' => 'Selecione a versão do arquivo que você deseja alternar.', + 'Selected items...' => 'Itens selecionados...', + 'Show Post' => 'Exibir Publicação', + 'Show older versions' => 'Mostrar versões mais antigas', + 'Size' => 'Tamanho', + 'Size: {size}' => 'Tamanho: {size}', + 'Some files could not be imported: ' => 'Alguns arquivos não puderam ser importados:', + 'Some files could not be moved: ' => 'Alguns arquivos não puderam ser movidos:', + 'The root folder is the entry point that contains all available files.' => 'A pasta raiz é o ponto de entrada que contém todos os arquivos disponíveis.', + 'This file is only visible for you and your friends.' => 'Este arquivo é visível apenas para você e seus amigos.', + 'This file is private.' => 'Esse arquivo é privado.', + 'This file is protected.' => 'Este arquivo está protegido.', + 'This file is public.' => 'Esse arquivo é público.', + 'This folder is empty.' => 'Essa pasta está vazia.', + 'This folder is only visible for you and your friends.' => 'Esta pasta só é visível para você e seus amigos.', + 'This folder is private.' => 'Essa pasta é privada.', + 'This folder is protected.' => 'Esta pasta está protegida.', + 'This folder is public.' => 'Essa pasta é pública.', + 'Time' => 'Tempo', + 'Unfortunately you have no permission to upload/edit files.' => 'Infelizmente, você não tem permissão para transferir/alterar arquivos.', + 'Updated' => 'Atualizado', + 'Upload files or create a subfolder with the buttons on the top.' => 'Transfira arquivos ou crie uma subpasta usando os botões na parte superior.', + 'Upload files to the stream to fill this folder.' => 'Transfira arquivos para o mural para preencher esta pasta.', + 'Versions' => 'Versões', + 'Wrong moved item!' => 'Item movido errado!', + 'Wrong target folder!' => 'Pasta de destino errada!', + 'You can find all files that have been posted to this stream here.' => 'Você pode encontrar todos os arquivos enviados para esse mural aqui.', + 'You cannot move the file "{name}"!' => 'Você não pode mover o arquivo "{name}"!', + 'You cannot move the folder "{name}"!' => 'Você não pode mover a pasta "{name}"!', + 'ZIP selected' => 'ZIP selecionado', + 'ZIP support is not enabled.' => 'Suporte para arquivos ZIP não habilitado.', +); diff --git a/messages/pt-BR/models_FileSystemItem.php b/messages/pt-BR/models_FileSystemItem.php index 46333ac..898b0d5 100644 --- a/messages/pt-BR/models_FileSystemItem.php +++ b/messages/pt-BR/models_FileSystemItem.php @@ -1,8 +1,7 @@ 'Transferências', - 'Is Public' => 'É Público', - 'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => 'Nota: Mudanças na visibilidade das pastas serão herdadas por todos os arquivos e pastas contidas nelas.', - 'Hide in Stream' => '', -]; +return array ( + 'Downloads' => 'Transferências', + 'Hide in Stream' => 'Ocultar no Stream', + 'Is Public' => 'É público', + 'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => 'Observação: as alterações na visibilidade das pastas serão herdadas por todos os arquivos e pastas contidos.', +); diff --git a/messages/pt-BR/user.php b/messages/pt-BR/user.php index bcf3217..871c115 100644 --- a/messages/pt-BR/user.php +++ b/messages/pt-BR/user.php @@ -1,7 +1,6 @@ '', - 'The version "{versionDate}" could not be deleted!' => '', - 'The version "{versionDate}" has been deleted.' => '', -]; +return array ( + 'Are you really sure to delete this version?' => 'Tem certeza de que deseja excluir esta versão?', + 'The version "{versionDate}" could not be deleted!' => 'A versão "{versionDate}" não pôde ser excluída!', + 'The version "{versionDate}" has been deleted.' => 'A versão "{versionDate}" foi excluída.', +); diff --git a/messages/ru/models_FileSystemItem.php b/messages/ru/models_FileSystemItem.php index 3fbb99e..1f02ce4 100644 --- a/messages/ru/models_FileSystemItem.php +++ b/messages/ru/models_FileSystemItem.php @@ -1,8 +1,7 @@ '', - 'Hide in Stream' => '', - 'Is Public' => '', - 'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => '', -]; +return array ( + 'Downloads' => 'Скачать', + 'Hide in Stream' => '', + 'Is Public' => 'публичная запись', + 'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => '', +);