diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -725,6 +725,7 @@ 'FileReplyHandler' => 'applications/files/mail/FileReplyHandler.php', 'FileUploadConduitAPIMethod' => 'applications/files/conduit/FileUploadConduitAPIMethod.php', 'FileUploadHashConduitAPIMethod' => 'applications/files/conduit/FileUploadHashConduitAPIMethod.php', + 'FilesDefaultViewCapability' => 'applications/files/capability/FilesDefaultViewCapability.php', 'FlagConduitAPIMethod' => 'applications/flag/conduit/FlagConduitAPIMethod.php', 'FlagDeleteConduitAPIMethod' => 'applications/flag/conduit/FlagDeleteConduitAPIMethod.php', 'FlagEditConduitAPIMethod' => 'applications/flag/conduit/FlagEditConduitAPIMethod.php', @@ -3726,6 +3727,7 @@ 'FileReplyHandler' => 'PhabricatorMailReplyHandler', 'FileUploadConduitAPIMethod' => 'FileConduitAPIMethod', 'FileUploadHashConduitAPIMethod' => 'FileConduitAPIMethod', + 'FilesDefaultViewCapability' => 'PhabricatorPolicyCapability', 'FlagConduitAPIMethod' => 'ConduitAPIMethod', 'FlagDeleteConduitAPIMethod' => 'FlagConduitAPIMethod', 'FlagEditConduitAPIMethod' => 'FlagConduitAPIMethod', diff --git a/src/applications/files/application/PhabricatorFilesApplication.php b/src/applications/files/application/PhabricatorFilesApplication.php --- a/src/applications/files/application/PhabricatorFilesApplication.php +++ b/src/applications/files/application/PhabricatorFilesApplication.php @@ -11,7 +11,7 @@ } public function getShortDescription() { - return 'Store and Share Files'; + return pht('Store and Share Files'); } public function getIconName() { @@ -40,6 +40,15 @@ ); } + protected function getCustomCapabilities() { + return array( + FilesDefaultViewCapability::CAPABILITY => array( + 'caption' => pht( + 'Default view policy for newly created files.'), + ), + ); + } + public function getRoutes() { return array( '/F(?P[1-9]\d*)' => 'PhabricatorFileInfoController', diff --git a/src/applications/files/capability/FilesDefaultViewCapability.php b/src/applications/files/capability/FilesDefaultViewCapability.php new file mode 100644 --- /dev/null +++ b/src/applications/files/capability/FilesDefaultViewCapability.php @@ -0,0 +1,16 @@ +getRequest(); $viewer = $request->getUser(); - $file = new PhabricatorFile(); + $file = PhabricatorFile::initializeNewFile(); $e_file = true; $errors = array(); diff --git a/src/applications/files/storage/PhabricatorFile.php b/src/applications/files/storage/PhabricatorFile.php --- a/src/applications/files/storage/PhabricatorFile.php +++ b/src/applications/files/storage/PhabricatorFile.php @@ -53,7 +53,16 @@ private $originalFile = self::ATTACHABLE; public static function initializeNewFile() { + $app = id(new PhabricatorApplicationQuery()) + ->setViewer(PhabricatorUser::getOmnipotentUser()) + ->withClasses(array('PhabricatorFilesApplication')) + ->executeOne(); + + $view_policy = $app->getPolicy( + FilesDefaultViewCapability::CAPABILITY); + return id(new PhabricatorFile()) + ->setViewPolicy($view_policy) ->attachOriginalFile(null) ->attachObjects(array()) ->attachObjectPHIDs(array());