Page MenuHomePhabricator

D19491.id.diff
No OneTemporary

D19491.id.diff

diff --git a/src/applications/diffusion/query/DiffusionCommitQuery.php b/src/applications/diffusion/query/DiffusionCommitQuery.php
--- a/src/applications/diffusion/query/DiffusionCommitQuery.php
+++ b/src/applications/diffusion/query/DiffusionCommitQuery.php
@@ -26,6 +26,7 @@
private $needCommitData;
private $needDrafts;
+ private $needIdentities;
private $mustFilterRefs = false;
private $refRepository;
@@ -110,6 +111,11 @@
return $this;
}
+ public function needIdentities($need) {
+ $this->needIdentities = $need;
+ return $this;
+ }
+
public function needAuditRequests($need) {
$this->needAuditRequests = $need;
return $this;
@@ -393,6 +399,24 @@
}
}
+ if ($this->needIdentities) {
+ $identity_phids = array_merge(
+ mpull($commits, 'getAuthorIdentityPHID'),
+ mpull($commits, 'getCommitterIdentityPHID'));
+
+ $data = id(new PhabricatorRepositoryIdentityQuery())
+ ->withPHIDs($identity_phids)
+ ->setViewer($this->getViewer())
+ ->execute();
+ $data = mpull($data, null, 'getPHID');
+
+ foreach ($commits as $commit) {
+ $author_identity = idx($data, $commit->getAuthorIdentityPHID());
+ $committer_identity = idx($data, $commit->getCommitterIdentityPHID());
+ $commit->attachIdentities($author_identity, $committer_identity);
+ }
+ }
+
if ($this->needDrafts) {
PhabricatorDraftEngine::attachDrafts(
$viewer,
diff --git a/src/applications/repository/phid/PhabricatorRepositoryIdentityPHIDType.php b/src/applications/repository/phid/PhabricatorRepositoryIdentityPHIDType.php
--- a/src/applications/repository/phid/PhabricatorRepositoryIdentityPHIDType.php
+++ b/src/applications/repository/phid/PhabricatorRepositoryIdentityPHIDType.php
@@ -28,6 +28,18 @@
public function loadHandles(
PhabricatorHandleQuery $query,
array $handles,
- array $objects) {}
+ array $objects) {
+
+ foreach ($handles as $phid => $handle) {
+ $identity = $objects[$phid];
+
+ $id = $identity->getID();
+ $name = $identity->getIdentityNameRaw();
+
+ $handle->setObjectName(pht('Identity %d', $id));
+ $handle->setName($name);
+ $handle->setURI($identity->getURI());
+ }
+ }
}
diff --git a/src/applications/repository/query/PhabricatorRepositoryIdentityQuery.php b/src/applications/repository/query/PhabricatorRepositoryIdentityQuery.php
--- a/src/applications/repository/query/PhabricatorRepositoryIdentityQuery.php
+++ b/src/applications/repository/query/PhabricatorRepositoryIdentityQuery.php
@@ -131,8 +131,10 @@
return $identities;
}
- $users = id(new PhabricatorUser())->loadAllWhere(
- 'phid IN (%Ls)', $user_ids);
+ $users = id(new PhabricatorPeopleQuery())
+ ->withPHIDs($user_ids)
+ ->setViewer($this->getViewer())
+ ->execute();
$users = mpull($users, null, 'getPHID');
foreach ($identities as $identity) {
diff --git a/src/applications/repository/storage/PhabricatorRepositoryCommit.php b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
--- a/src/applications/repository/storage/PhabricatorRepositoryCommit.php
+++ b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
@@ -44,6 +44,9 @@
private $audits = self::ATTACHABLE;
private $repository = self::ATTACHABLE;
private $customFields = self::ATTACHABLE;
+ private $authorIdentity = self::ATTACHABLE;
+ private $committerIdentity = self::ATTACHABLE;
+
private $drafts = array();
private $auditAuthorityPHIDs = array();
@@ -191,6 +194,21 @@
return ($this->audits !== self::ATTACHABLE);
}
+ public function attachIdentities(
+ PhabricatorRepositoryIdentity $author,
+ $committer = null) {
+ $this->authorIdentity = $author;
+ $this->committerIdentity = $committer;
+ }
+
+ public function getAuthorIdentity() {
+ return $this->assertAttached($this->authorIdentity);
+ }
+
+ public function getCommiterIdentity() {
+ return $this->assertAttached($this->committerIdentity);
+ }
+
public function loadAndAttachAuditAuthority(
PhabricatorUser $viewer,
$actor_phid = null) {
diff --git a/src/applications/repository/storage/PhabricatorRepositoryIdentity.php b/src/applications/repository/storage/PhabricatorRepositoryIdentity.php
--- a/src/applications/repository/storage/PhabricatorRepositoryIdentity.php
+++ b/src/applications/repository/storage/PhabricatorRepositoryIdentity.php
@@ -14,6 +14,17 @@
protected $manuallySetUserPHID;
protected $currentEffectiveUserPHID;
+ private $effectiveUser = self::ATTACHABLE;
+
+ public function attachEffectiveUser(PhabricatorUser $user) {
+ $this->effectiveUser = $user;
+ return $this;
+ }
+
+ public function getEffectiveUser() {
+ return $this->assertAttached($this->effectiveUser);
+ }
+
protected function getConfiguration() {
return array(
self::CONFIG_AUX_PHID => true,
@@ -63,6 +74,10 @@
return '/diffusion/identity/view/'.$this->getID().'/';
}
+ public function hasEffectiveUser() {
+ return ($this->currentEffectiveUserPHID != null);
+ }
+
public function save() {
if ($this->manuallySetUserPHID) {
$this->currentEffectiveUserPHID = $this->manuallySetUserPHID;

File Metadata

Mime Type
text/plain
Expires
Fri, Oct 25, 6:46 AM (21 h, 35 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6748107
Default Alt Text
D19491.id.diff (5 KB)

Event Timeline