Page MenuHomePhabricator

D10888.id26146.diff
No OneTemporary

D10888.id26146.diff

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',
@@ -5312,6 +5314,7 @@
'PhabricatorRepositoryDAO',
'PhabricatorPolicyInterface',
'PhabricatorFlaggableInterface',
+ 'PhabricatorProjectInterface',
'PhabricatorTokenReceiverInterface',
'PhabricatorSubscribableInterface',
'PhabricatorMentionableInterface',
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
@@ -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<id>[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 @@
+<?php
+
+final class FilesDefaultViewCapability
+ extends PhabricatorPolicyCapability {
+
+ const CAPABILITY = 'files.default.view';
+
+ public function getCapabilityName() {
+ return pht('Default View Policy');
+ }
+
+ public function shouldAllowPublicPolicySetting() {
+ return true;
+ }
+
+}
diff --git a/src/applications/files/conduit/FileUploadHashConduitAPIMethod.php b/src/applications/files/conduit/FileUploadHashConduitAPIMethod.php
--- a/src/applications/files/conduit/FileUploadHashConduitAPIMethod.php
+++ b/src/applications/files/conduit/FileUploadHashConduitAPIMethod.php
@@ -33,6 +33,7 @@
$file = PhabricatorFile::newFileFromContentHash(
$hash,
+ $user,
array(
'name' => $name,
'authorPHID' => $user->getPHID(),
diff --git a/src/applications/files/controller/PhabricatorFileUploadController.php b/src/applications/files/controller/PhabricatorFileUploadController.php
--- a/src/applications/files/controller/PhabricatorFileUploadController.php
+++ b/src/applications/files/controller/PhabricatorFileUploadController.php
@@ -6,7 +6,7 @@
$request = $this->getRequest();
$viewer = $request->getUser();
- $file = new PhabricatorFile();
+ $file = PhabricatorFile::initializeNewFile($viewer);
$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
@@ -52,8 +52,17 @@
private $objectPHIDs = self::ATTACHABLE;
private $originalFile = self::ATTACHABLE;
- public static function initializeNewFile() {
+ public static function initializeNewFile(PhabricatorUser $actor) {
+ $app = id(new PhabricatorApplicationQuery())
+ ->setViewer($actor)
+ ->withClasses(array('PhabricatorFilesApplication'))
+ ->executeOne();
+
+ $view_policy = $app->getPolicy(
+ FilesDefaultViewCapability::CAPABILITY);
+
return id(new PhabricatorFile())
+ ->setViewPolicy($view_policy)
->attachOriginalFile(null)
->attachObjects(array())
->attachObjectPHIDs(array());
@@ -267,7 +276,7 @@
throw new Exception('No valid storage engines are available!');
}
- $file = PhabricatorFile::initializeNewFile();
+ $file = PhabricatorFile::initializeNewFile($viewer);
$data_handle = null;
$engine_identifier = null;

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 16, 3:56 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7229958
Default Alt Text
D10888.id26146.diff (4 KB)

Event Timeline