@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add a PHID to Changesets

Summary:
Ref T13605. Changesets currently have no PHID, which limits their ability to use standard API infrastructure.

Give them a PHID, since there's no reason they don't have one other than their age.

Test Plan:
- Ran migrations, saw PHIDs populated.
- Created new changesets, saw PHIDs.

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T13605

Differential Revision: https://secure.phabricator.com/D21557

+76
+2
resources/sql/autopatches/20210215.changeset.01.phid.sql
··· 1 + ALTER TABLE {$NAMESPACE}_differential.differential_changeset 2 + ADD phid VARBINARY(64) NOT NULL;
+26
resources/sql/autopatches/20210215.changeset.02.phid-populate.php
··· 1 + <?php 2 + 3 + $phid_type = DifferentialChangesetPHIDType::TYPECONST; 4 + 5 + $changeset_table = new DifferentialChangeset(); 6 + 7 + $conn = $changeset_table->establishConnection('w'); 8 + $table_name = $changeset_table->getTableName(); 9 + 10 + $iterator = new LiskRawMigrationIterator($conn, $table_name); 11 + foreach ($iterator as $changeset_row) { 12 + $phid = $changeset_row['phid']; 13 + 14 + if (strlen($phid)) { 15 + continue; 16 + } 17 + 18 + $phid = PhabricatorPHID::generateNewPHID($phid_type); 19 + 20 + queryfx( 21 + $conn, 22 + 'UPDATE %T SET phid = %s WHERE id = %d', 23 + $table_name, 24 + $phid, 25 + $changeset_row['id']); 26 + }
+2
src/__phutil_library_map__.php
··· 472 472 'DifferentialChangesetOneUpMailRenderer' => 'applications/differential/render/DifferentialChangesetOneUpMailRenderer.php', 473 473 'DifferentialChangesetOneUpRenderer' => 'applications/differential/render/DifferentialChangesetOneUpRenderer.php', 474 474 'DifferentialChangesetOneUpTestRenderer' => 'applications/differential/render/DifferentialChangesetOneUpTestRenderer.php', 475 + 'DifferentialChangesetPHIDType' => 'applications/differential/phid/DifferentialChangesetPHIDType.php', 475 476 'DifferentialChangesetParser' => 'applications/differential/parser/DifferentialChangesetParser.php', 476 477 'DifferentialChangesetParserTestCase' => 'applications/differential/parser/__tests__/DifferentialChangesetParserTestCase.php', 477 478 'DifferentialChangesetQuery' => 'applications/differential/query/DifferentialChangesetQuery.php', ··· 6541 6542 'DifferentialChangesetOneUpMailRenderer' => 'DifferentialChangesetRenderer', 6542 6543 'DifferentialChangesetOneUpRenderer' => 'DifferentialChangesetHTMLRenderer', 6543 6544 'DifferentialChangesetOneUpTestRenderer' => 'DifferentialChangesetTestRenderer', 6545 + 'DifferentialChangesetPHIDType' => 'PhabricatorPHIDType', 6544 6546 'DifferentialChangesetParser' => 'Phobject', 6545 6547 'DifferentialChangesetParserTestCase' => 'PhabricatorTestCase', 6546 6548 'DifferentialChangesetQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+41
src/applications/differential/phid/DifferentialChangesetPHIDType.php
··· 1 + <?php 2 + 3 + final class DifferentialChangesetPHIDType extends PhabricatorPHIDType { 4 + 5 + const TYPECONST = 'DCNG'; 6 + 7 + public function getTypeName() { 8 + return pht('Differential Changeset'); 9 + } 10 + 11 + public function newObject() { 12 + return new DifferentialChangeset(); 13 + } 14 + 15 + public function getPHIDTypeApplicationClass() { 16 + return 'PhabricatorDifferentialApplication'; 17 + } 18 + 19 + protected function buildQueryForObjects( 20 + PhabricatorObjectQuery $query, 21 + array $phids) { 22 + 23 + return id(new DifferentialChangesetQuery()) 24 + ->withPHIDs($phids); 25 + } 26 + 27 + public function loadHandles( 28 + PhabricatorHandleQuery $query, 29 + array $handles, 30 + array $objects) { 31 + 32 + foreach ($handles as $phid => $handle) { 33 + $changeset = $objects[$phid]; 34 + 35 + $id = $changeset->getID(); 36 + 37 + $handle->setName(pht('Changeset %d', $id)); 38 + } 39 + } 40 + 41 + }
+5
src/applications/differential/storage/DifferentialChangeset.php
··· 45 45 46 46 protected function getConfiguration() { 47 47 return array( 48 + self::CONFIG_AUX_PHID => true, 48 49 self::CONFIG_SERIALIZATION => array( 49 50 'metadata' => self::SERIALIZATION_JSON, 50 51 'oldProperties' => self::SERIALIZATION_JSON, ··· 73 74 ), 74 75 ), 75 76 ) + parent::getConfiguration(); 77 + } 78 + 79 + public function getPHIDType() { 80 + return DifferentialChangesetPHIDType::TYPECONST; 76 81 } 77 82 78 83 public function getAffectedLineCount() {