Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13974003
D14775.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
D14775.diff
View Options
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
@@ -2616,6 +2616,7 @@
'PhabricatorOwnersPackageTransactionQuery' => 'applications/owners/query/PhabricatorOwnersPackageTransactionQuery.php',
'PhabricatorOwnersPath' => 'applications/owners/storage/PhabricatorOwnersPath.php',
'PhabricatorOwnersPathsController' => 'applications/owners/controller/PhabricatorOwnersPathsController.php',
+ 'PhabricatorOwnersPathsSearchEngineAttachment' => 'applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php',
'PhabricatorOwnersSchemaSpec' => 'applications/owners/storage/PhabricatorOwnersSchemaSpec.php',
'PhabricatorOwnersSearchField' => 'applications/owners/searchfield/PhabricatorOwnersSearchField.php',
'PhabricatorPHDConfigOptions' => 'applications/config/option/PhabricatorPHDConfigOptions.php',
@@ -6846,6 +6847,7 @@
'PhabricatorOwnersPackageTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorOwnersPath' => 'PhabricatorOwnersDAO',
'PhabricatorOwnersPathsController' => 'PhabricatorOwnersController',
+ 'PhabricatorOwnersPathsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
'PhabricatorOwnersSchemaSpec' => 'PhabricatorConfigSchemaSpec',
'PhabricatorOwnersSearchField' => 'PhabricatorSearchTokenizerField',
'PhabricatorPHDConfigOptions' => 'PhabricatorApplicationConfigOptions',
diff --git a/src/applications/owners/controller/PhabricatorOwnersDetailController.php b/src/applications/owners/controller/PhabricatorOwnersDetailController.php
--- a/src/applications/owners/controller/PhabricatorOwnersDetailController.php
+++ b/src/applications/owners/controller/PhabricatorOwnersDetailController.php
@@ -14,7 +14,6 @@
->setViewer($viewer)
->withIDs(array($request->getURIData('id')))
->needPaths(true)
- ->needOwners(true)
->executeOne();
if (!$package) {
return new Aphront404Response();
diff --git a/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php b/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php
--- a/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php
+++ b/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php
@@ -18,8 +18,7 @@
}
protected function newObjectQuery() {
- return id(new PhabricatorOwnersPackageQuery())
- ->needOwners(true);
+ return id(new PhabricatorOwnersPackageQuery());
}
protected function getObjectCreateTitleText($object) {
diff --git a/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php b/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
--- a/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
+++ b/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
@@ -32,8 +32,7 @@
case PhabricatorOwnersPackageTransaction::TYPE_NAME:
return $object->getName();
case PhabricatorOwnersPackageTransaction::TYPE_OWNERS:
- // TODO: needOwners() this on the Query.
- $phids = mpull($object->loadOwners(), 'getUserPHID');
+ $phids = mpull($object->getOwners(), 'getUserPHID');
$phids = array_values($phids);
return $phids;
case PhabricatorOwnersPackageTransaction::TYPE_AUDITING:
@@ -125,8 +124,7 @@
$old = $xaction->getOldValue();
$new = $xaction->getNewValue();
- // TODO: needOwners this
- $owners = $object->loadOwners();
+ $owners = $object->getOwners();
$owners = mpull($owners, null, 'getUserPHID');
$rem = array_diff($old, $new);
@@ -222,8 +220,7 @@
}
protected function getMailCC(PhabricatorLiskDAO $object) {
- // TODO: needOwners() this
- return mpull($object->loadOwners(), 'getUserPHID');
+ return mpull($object->getOwners(), 'getUserPHID');
}
protected function buildReplyHandler(PhabricatorLiskDAO $object) {
diff --git a/src/applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php b/src/applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php
new file mode 100644
--- /dev/null
+++ b/src/applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php
@@ -0,0 +1,35 @@
+<?php
+
+final class PhabricatorOwnersPathsSearchEngineAttachment
+ extends PhabricatorSearchEngineAttachment {
+
+ public function getAttachmentName() {
+ return pht('Included Paths');
+ }
+
+ public function getAttachmentDescription() {
+ return pht('Get the paths for each package.');
+ }
+
+ public function willLoadAttachmentData($query, $spec) {
+ $query->needPaths(true);
+ }
+
+ public function getAttachmentForObject($object, $data, $spec) {
+ $paths = $object->getPaths();
+
+ $list = array();
+ foreach ($paths as $path) {
+ $list[] = array(
+ 'repositoryPHID' => $path->getRepositoryPHID(),
+ 'path' => $path->getPath(),
+ 'isExcluded' => (bool)$path->getExcluded(),
+ );
+ }
+
+ return array(
+ 'paths' => $list,
+ );
+ }
+
+}
diff --git a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
--- a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
+++ b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
@@ -16,7 +16,6 @@
private $controlResults;
private $needPaths;
- private $needOwners;
/**
@@ -89,11 +88,6 @@
return $this;
}
- public function needOwners($need_owners) {
- $this->needOwners = $need_owners;
- return $this;
- }
-
public function newResultObject() {
return new PhabricatorOwnersPackage();
}
@@ -103,13 +97,27 @@
}
protected function loadPage() {
- return $this->loadStandardPage(new PhabricatorOwnersPackage());
+ return $this->loadStandardPage($this->newResultObject());
+ }
+
+ protected function willFilterPage(array $packages) {
+ $package_ids = mpull($packages, 'getID');
+
+ $owners = id(new PhabricatorOwnersOwner())->loadAllWhere(
+ 'packageID IN (%Ld)',
+ $package_ids);
+ $owners = mgroup($owners, 'getPackageID');
+ foreach ($packages as $package) {
+ $package->attachOwners(idx($owners, $package->getID(), array()));
+ }
+
+ return $packages;
}
protected function didFilterPage(array $packages) {
- if ($this->needPaths) {
- $package_ids = mpull($packages, 'getID');
+ $package_ids = mpull($packages, 'getID');
+ if ($this->needPaths) {
$paths = id(new PhabricatorOwnersPath())->loadAllWhere(
'packageID IN (%Ld)',
$package_ids);
@@ -120,19 +128,6 @@
}
}
- if ($this->needOwners) {
- $package_ids = mpull($packages, 'getID');
-
- $owners = id(new PhabricatorOwnersOwner())->loadAllWhere(
- 'packageID IN (%Ld)',
- $package_ids);
- $owners = mgroup($owners, 'getPackageID');
-
- foreach ($packages as $package) {
- $package->attachOwners(idx($owners, $package->getID(), array()));
- }
- }
-
if ($this->controlMap) {
$this->controlResults += mpull($packages, null, 'getID');
}
diff --git a/src/applications/owners/storage/PhabricatorOwnersPackage.php b/src/applications/owners/storage/PhabricatorOwnersPackage.php
--- a/src/applications/owners/storage/PhabricatorOwnersPackage.php
+++ b/src/applications/owners/storage/PhabricatorOwnersPackage.php
@@ -273,6 +273,17 @@
return mpull($this->getOwners(), 'getUserPHID');
}
+ public function isOwnerPHID($phid) {
+ if (!$phid) {
+ return false;
+ }
+
+ $owner_phids = $this->getOwnerPHIDs();
+ $owner_phids = array_fuse($owner_phids);
+
+ return isset($owner_phids[$phid]);
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
@@ -290,11 +301,19 @@
}
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ switch ($capability) {
+ case PhabricatorPolicyCapability::CAN_VIEW:
+ if ($this->isOwnerPHID($viewer->getPHID())) {
+ return true;
+ }
+ break;
+ }
+
return false;
}
public function describeAutomaticCapability($capability) {
- return null;
+ return pht('Owners of a package may always view it.');
}
@@ -384,19 +403,34 @@
'type' => 'string',
'description' => pht('Active or archived status of the package.'),
),
+ 'owners' => array(
+ 'type' => 'list<map<string, wild>>',
+ 'description' => pht('List of package owners.'),
+ ),
);
}
public function getFieldValuesForConduit() {
+ $owner_list = array();
+ foreach ($this->getOwners() as $owner) {
+ $owner_list[] = array(
+ 'ownerPHID' => $owner->getUserPHID(),
+ );
+ }
+
return array(
'name' => $this->getName(),
'description' => $this->getDescription(),
'status' => $this->getStatus(),
+ 'owners' => $owner_list,
);
}
public function getConduitSearchAttachments() {
- return array();
+ return array(
+ id(new PhabricatorOwnersPathsSearchEngineAttachment())
+ ->setAttachmentKey('paths'),
+ );
}
}
diff --git a/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php b/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php
--- a/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php
+++ b/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php
@@ -17,7 +17,7 @@
public function getAttachmentForObject($object, $data, $spec) {
return array(
- 'data' => $object->getRawContent(),
+ 'content' => $object->getRawContent(),
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Oct 19, 3:37 AM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6722089
Default Alt Text
D14775.diff (9 KB)
Attached To
Mode
D14775: Give "owners.search" a "paths" attachment and a default "owners" value
Attached
Detach File
Event Timeline
Log In to Comment