@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.

Remove dedicated storage for NuanceRequestor

Summary:
Ref T10537. Currently, Nuance has a `NuanceRequestor` object, intended to represent the external user who created content (e.g., a GitHub account or a Twitter account or whatever).

This object is currently almost unused, and its design predates Doorkeeper. In D15541, I chose to use doorkeeper objects instead of NuanceRequestor objects to represent requestors.

I don't currently anticipate a need for such an object, given that we have Doorkeeper. If we do need it in the future for some reason, it would be fairly easy to restore it, create a requestor type which wraps a Doorkeeper object, and then migrate. Not super thrilling to do that, but not a huge mess.

`NuanceItem` still has a `requestorPHID`, but this is now a less formal object PHID instead of a more formal Requestor-object PHID, and holds a doorkeeper exeternal object PHID for GitHub events.

Test Plan:
- Grepped for `nuancerequestor`.
- Ran `bin/storage upgrade -f`.
- Grepped for `requestor`, remaining uses of this term seem reasonable/correct.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10537

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

+4 -481
+1
resources/sql/autopatches/20160329.nuance.01.requestor.sql
··· 1 + DROP TABLE IF EXISTS {$NAMESPACE}_nuance.nuance_requestor;
+1
resources/sql/autopatches/20160329.nuance.02.requestorsource.sql
··· 1 + DROP TABLE IF EXISTS {$NAMESPACE}_nuance.nuance_requestorsource;
+1
resources/sql/autopatches/20160329.nuance.03.requestorxaction.sql
··· 1 + DROP TABLE IF EXISTS {$NAMESPACE}_nuance.nuance_requestortransaction;
+1
resources/sql/autopatches/20160329.nuance.04.requestorcomment.sql
··· 1 + DROP TABLE IF EXISTS {$NAMESPACE}_nuance.nuance_requestortransaction_comment;
-24
src/__phutil_library_map__.php
··· 1479 1479 'NuanceQueueTransactionComment' => 'applications/nuance/storage/NuanceQueueTransactionComment.php', 1480 1480 'NuanceQueueTransactionQuery' => 'applications/nuance/query/NuanceQueueTransactionQuery.php', 1481 1481 'NuanceQueueViewController' => 'applications/nuance/controller/NuanceQueueViewController.php', 1482 - 'NuanceRequestor' => 'applications/nuance/storage/NuanceRequestor.php', 1483 - 'NuanceRequestorEditController' => 'applications/nuance/controller/NuanceRequestorEditController.php', 1484 - 'NuanceRequestorEditor' => 'applications/nuance/editor/NuanceRequestorEditor.php', 1485 - 'NuanceRequestorPHIDType' => 'applications/nuance/phid/NuanceRequestorPHIDType.php', 1486 - 'NuanceRequestorQuery' => 'applications/nuance/query/NuanceRequestorQuery.php', 1487 - 'NuanceRequestorSource' => 'applications/nuance/storage/NuanceRequestorSource.php', 1488 - 'NuanceRequestorTransaction' => 'applications/nuance/storage/NuanceRequestorTransaction.php', 1489 - 'NuanceRequestorTransactionComment' => 'applications/nuance/storage/NuanceRequestorTransactionComment.php', 1490 - 'NuanceRequestorTransactionQuery' => 'applications/nuance/query/NuanceRequestorTransactionQuery.php', 1491 - 'NuanceRequestorViewController' => 'applications/nuance/controller/NuanceRequestorViewController.php', 1492 1482 'NuanceSchemaSpec' => 'applications/nuance/storage/NuanceSchemaSpec.php', 1493 1483 'NuanceSource' => 'applications/nuance/storage/NuanceSource.php', 1494 1484 'NuanceSourceActionController' => 'applications/nuance/controller/NuanceSourceActionController.php', ··· 5797 5787 'NuanceQueueTransactionComment' => 'PhabricatorApplicationTransactionComment', 5798 5788 'NuanceQueueTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 5799 5789 'NuanceQueueViewController' => 'NuanceQueueController', 5800 - 'NuanceRequestor' => array( 5801 - 'NuanceDAO', 5802 - 'PhabricatorPolicyInterface', 5803 - 'PhabricatorApplicationTransactionInterface', 5804 - ), 5805 - 'NuanceRequestorEditController' => 'NuanceController', 5806 - 'NuanceRequestorEditor' => 'PhabricatorApplicationTransactionEditor', 5807 - 'NuanceRequestorPHIDType' => 'PhabricatorPHIDType', 5808 - 'NuanceRequestorQuery' => 'NuanceQuery', 5809 - 'NuanceRequestorSource' => 'NuanceDAO', 5810 - 'NuanceRequestorTransaction' => 'NuanceTransaction', 5811 - 'NuanceRequestorTransactionComment' => 'PhabricatorApplicationTransactionComment', 5812 - 'NuanceRequestorTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 5813 - 'NuanceRequestorViewController' => 'NuanceController', 5814 5790 'NuanceSchemaSpec' => 'PhabricatorConfigSchemaSpec', 5815 5791 'NuanceSource' => array( 5816 5792 'NuanceDAO',
-5
src/applications/nuance/application/PhabricatorNuanceApplication.php
··· 56 56 $this->getEditRoutePattern('edit/') => 'NuanceQueueEditController', 57 57 'view/(?P<id>[1-9]\d*)/' => 'NuanceQueueViewController', 58 58 ), 59 - 'requestor/' => array( 60 - 'view/(?P<id>[1-9]\d*)/' => 'NuanceRequestorViewController', 61 - 'edit/(?P<id>[1-9]\d*)/' => 'NuanceRequestorEditController', 62 - 'new/' => 'NuanceRequestorEditController', 63 - ), 64 59 ), 65 60 '/action/' => array( 66 61 '(?P<id>[1-9]\d*)/(?P<path>.*)' => 'NuanceSourceActionController',
-33
src/applications/nuance/controller/NuanceRequestorEditController.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorEditController extends NuanceController { 4 - 5 - public function handleRequest(AphrontRequest $request) { 6 - $viewer = $request->getViewer(); 7 - $id = $request->getURIData('id'); 8 - 9 - if (!$id) { 10 - $requestor = new NuanceRequestor(); 11 - 12 - } else { 13 - $requestor = id(new NuanceRequestorQuery()) 14 - ->setViewer($viewer) 15 - ->withIDs(array($id)) 16 - ->executeOne(); 17 - } 18 - 19 - if (!$requestor) { 20 - return new Aphront404Response(); 21 - } 22 - 23 - $crumbs = $this->buildApplicationCrumbs(); 24 - $title = pht('TODO'); 25 - 26 - return $this->buildApplicationPage( 27 - $crumbs, 28 - array( 29 - 'title' => $title, 30 - )); 31 - } 32 - 33 - }
-27
src/applications/nuance/controller/NuanceRequestorViewController.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorViewController extends NuanceController { 4 - 5 - public function handleRequest(AphrontRequest $request) { 6 - $viewer = $request->getViewer(); 7 - $id = $request->getURIData('id'); 8 - 9 - $requestor = id(new NuanceRequestorQuery()) 10 - ->setViewer($viewer) 11 - ->withIDs(array($id)) 12 - ->executeOne(); 13 - 14 - if (!$requestor) { 15 - return new Aphront404Response(); 16 - } 17 - 18 - $crumbs = $this->buildApplicationCrumbs(); 19 - $title = 'TODO'; 20 - 21 - return $this->buildApplicationPage( 22 - $crumbs, 23 - array( 24 - 'title' => $title, 25 - )); 26 - } 27 - }
-75
src/applications/nuance/editor/NuanceRequestorEditor.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorEditor 4 - extends PhabricatorApplicationTransactionEditor { 5 - 6 - public function getEditorApplicationClass() { 7 - return 'PhabricatorNuanceApplication'; 8 - } 9 - 10 - public function getEditorObjectsDescription() { 11 - return pht('Nuance Requestors'); 12 - } 13 - 14 - public function getTransactionTypes() { 15 - $types = parent::getTransactionTypes(); 16 - 17 - $types[] = NuanceRequestorTransaction::TYPE_PROPERTY; 18 - 19 - $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 20 - $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 21 - 22 - return $types; 23 - } 24 - 25 - protected function getCustomTransactionOldValue( 26 - PhabricatorLiskDAO $object, 27 - PhabricatorApplicationTransaction $xaction) { 28 - 29 - switch ($xaction->getTransactionType()) { 30 - case NuanceRequestorTransaction::TYPE_PROPERTY: 31 - $key = $xaction->getMetadataValue( 32 - NuanceRequestorTransaction::PROPERTY_KEY); 33 - return $object->getNuanceProperty($key); 34 - } 35 - 36 - return parent::getCustomTransactionOldValue($object, $xaction); 37 - } 38 - 39 - protected function getCustomTransactionNewValue( 40 - PhabricatorLiskDAO $object, 41 - PhabricatorApplicationTransaction $xaction) { 42 - 43 - switch ($xaction->getTransactionType()) { 44 - case NuanceRequestorTransaction::TYPE_PROPERTY: 45 - return $xaction->getNewValue(); 46 - } 47 - 48 - return parent::getCustomTransactionNewValue($object, $xaction); 49 - } 50 - 51 - protected function applyCustomInternalTransaction( 52 - PhabricatorLiskDAO $object, 53 - PhabricatorApplicationTransaction $xaction) { 54 - 55 - switch ($xaction->getTransactionType()) { 56 - case NuanceRequestorTransaction::TYPE_PROPERTY: 57 - $key = $xaction->getMetadataValue( 58 - NuanceRequestorTransaction::PROPERTY_KEY); 59 - $object->setNuanceProperty($key, $xaction->getNewValue()); 60 - break; 61 - } 62 - } 63 - 64 - protected function applyCustomExternalTransaction( 65 - PhabricatorLiskDAO $object, 66 - PhabricatorApplicationTransaction $xaction) { 67 - 68 - switch ($xaction->getTransactionType()) { 69 - case NuanceRequestorTransaction::TYPE_PROPERTY: 70 - return; 71 - } 72 - 73 - return parent::applyCustomExternalTransaction($object, $xaction); 74 - } 75 - }
-43
src/applications/nuance/phid/NuanceRequestorPHIDType.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorPHIDType extends PhabricatorPHIDType { 4 - 5 - const TYPECONST = 'NUAR'; 6 - 7 - public function getTypeName() { 8 - return pht('Requestor'); 9 - } 10 - 11 - public function newObject() { 12 - return new NuanceRequestor(); 13 - } 14 - 15 - public function getPHIDTypeApplicationClass() { 16 - return 'PhabricatorNuanceApplication'; 17 - } 18 - 19 - protected function buildQueryForObjects( 20 - PhabricatorObjectQuery $query, 21 - array $phids) { 22 - 23 - return id(new NuanceRequestorQuery()) 24 - ->withPHIDs($phids); 25 - } 26 - 27 - public function loadHandles( 28 - PhabricatorHandleQuery $query, 29 - array $handles, 30 - array $objects) { 31 - 32 - $viewer = $query->getViewer(); 33 - foreach ($handles as $phid => $handle) { 34 - $requestor = $objects[$phid]; 35 - 36 - // TODO: This is currently useless and should be far more informative. 37 - $handle->setName(pht('Requestor %d', $requestor->getID())); 38 - 39 - $handle->setURI($requestor->getURI()); 40 - } 41 - } 42 - 43 - }
-47
src/applications/nuance/query/NuanceRequestorQuery.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorQuery 4 - extends NuanceQuery { 5 - 6 - private $ids; 7 - private $phids; 8 - 9 - public function withIDs(array $ids) { 10 - $this->ids = $ids; 11 - return $this; 12 - } 13 - 14 - public function withPHIDs(array $phids) { 15 - $this->phids = $phids; 16 - return $this; 17 - } 18 - 19 - public function newObject() { 20 - return new NuanceRequestor(); 21 - } 22 - 23 - protected function loadPage() { 24 - return $this->loadStandardPage($this->newObject()); 25 - } 26 - 27 - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { 28 - $where = parent::buildWhereClauseParts($conn); 29 - 30 - if ($this->ids !== null) { 31 - $where[] = qsprintf( 32 - $conn, 33 - 'id IN (%Ld)', 34 - $this->ids); 35 - } 36 - 37 - if ($this->phids !== null) { 38 - $where[] = qsprintf( 39 - $conn, 40 - 'phid IN (%Ls)', 41 - $this->phids); 42 - } 43 - 44 - return $where; 45 - } 46 - 47 - }
-10
src/applications/nuance/query/NuanceRequestorTransactionQuery.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorTransactionQuery 4 - extends PhabricatorApplicationTransactionQuery { 5 - 6 - public function getTemplateApplicationTransaction() { 7 - return new NuanceRequestorTransaction(); 8 - } 9 - 10 - }
-5
src/applications/nuance/source/NuancePhabricatorFormSourceDefinition.php
··· 38 38 39 39 $content_source = PhabricatorContentSource::newFromRequest($request); 40 40 41 - $requestor = NuanceRequestor::newFromPhabricatorUser( 42 - $viewer, 43 - $content_source); 44 - 45 41 $item = $this->newItemFromProperties( 46 - $requestor, 47 42 $properties, 48 43 $content_source); 49 44
-6
src/applications/nuance/source/NuanceSourceDefinition.php
··· 149 149 } 150 150 151 151 protected function newItemFromProperties( 152 - NuanceRequestor $requestor, 153 152 array $properties, 154 153 PhabricatorContentSource $content_source) { 155 154 ··· 166 165 ->setTransactionType(NuanceItemTransaction::TYPE_SOURCE) 167 166 ->setNewValue($source->getPHID()); 168 167 169 - $xactions[] = id(new NuanceItemTransaction()) 170 - ->setTransactionType(NuanceItemTransaction::TYPE_REQUESTOR) 171 - ->setNewValue($requestor->getPHID()); 172 - 173 168 // TODO: Eventually, apply real routing rules. For now, just put everything 174 169 // in the default queue for the source. 175 170 $xactions[] = id(new NuanceItemTransaction()) ··· 185 180 186 181 $editor = id(new NuanceItemEditor()) 187 182 ->setActor($actor) 188 - ->setActingAsPHID($requestor->getActingAsPHID()) 189 183 ->setContentSource($content_source); 190 184 191 185 $editor->applyTransactions($item, $xactions);
-8
src/applications/nuance/storage/NuanceItem.php
··· 87 87 return '/nuance/item/view/'.$this->getID().'/'; 88 88 } 89 89 90 - public function getRequestor() { 91 - return $this->assertAttached($this->requestor); 92 - } 93 - 94 - public function attachRequestor(NuanceRequestor $requestor) { 95 - return $this->requestor = $requestor; 96 - } 97 - 98 90 public function getSource() { 99 91 return $this->assertAttached($this->source); 100 92 }
-137
src/applications/nuance/storage/NuanceRequestor.php
··· 1 - <?php 2 - 3 - final class NuanceRequestor 4 - extends NuanceDAO 5 - implements 6 - PhabricatorPolicyInterface, 7 - PhabricatorApplicationTransactionInterface { 8 - 9 - protected $data = array(); 10 - 11 - protected function getConfiguration() { 12 - return array( 13 - self::CONFIG_AUX_PHID => true, 14 - self::CONFIG_SERIALIZATION => array( 15 - 'data' => self::SERIALIZATION_JSON, 16 - ), 17 - ) + parent::getConfiguration(); 18 - } 19 - 20 - public function generatePHID() { 21 - return PhabricatorPHID::generateNewPHID( 22 - NuanceRequestorPHIDType::TYPECONST); 23 - } 24 - 25 - public static function initializeNewRequestor() { 26 - return new NuanceRequestor(); 27 - } 28 - 29 - public function getURI() { 30 - return '/nuance/requestor/view/'.$this->getID().'/'; 31 - } 32 - 33 - public function getPhabricatorUserPHID() { 34 - return idx($this->getData(), 'phabricatorUserPHID'); 35 - } 36 - 37 - public function getActingAsPHID() { 38 - $user_phid = $this->getPhabricatorUserPHID(); 39 - if ($user_phid) { 40 - return $user_phid; 41 - } 42 - 43 - return id(new PhabricatorNuanceApplication())->getPHID(); 44 - } 45 - 46 - public static function newFromPhabricatorUser( 47 - PhabricatorUser $viewer, 48 - PhabricatorContentSource $content_source) { 49 - 50 - // TODO: This is real sketchy and creates a new requestor every time. It 51 - // shouldn't do that. 52 - 53 - $requestor = self::initializeNewRequestor(); 54 - 55 - $xactions = array(); 56 - 57 - $properties = array( 58 - 'phabricatorUserPHID' => $viewer->getPHID(), 59 - ); 60 - 61 - foreach ($properties as $key => $value) { 62 - $xactions[] = id(new NuanceRequestorTransaction()) 63 - ->setTransactionType(NuanceRequestorTransaction::TYPE_PROPERTY) 64 - ->setMetadataValue(NuanceRequestorTransaction::PROPERTY_KEY, $key) 65 - ->setNewValue($value); 66 - } 67 - 68 - $editor = id(new NuanceRequestorEditor()) 69 - ->setActor($viewer) 70 - ->setContentSource($content_source); 71 - 72 - $editor->applyTransactions($requestor, $xactions); 73 - 74 - return $requestor; 75 - } 76 - 77 - public function getNuanceProperty($key, $default = null) { 78 - return idx($this->data, $key, $default); 79 - } 80 - 81 - public function setNuanceProperty($key, $value) { 82 - $this->data[$key] = $value; 83 - return $this; 84 - } 85 - 86 - 87 - /* -( PhabricatorPolicyInterface )----------------------------------------- */ 88 - 89 - 90 - public function getCapabilities() { 91 - return array( 92 - PhabricatorPolicyCapability::CAN_VIEW, 93 - PhabricatorPolicyCapability::CAN_EDIT, 94 - ); 95 - } 96 - 97 - public function getPolicy($capability) { 98 - switch ($capability) { 99 - case PhabricatorPolicyCapability::CAN_VIEW: 100 - return PhabricatorPolicies::POLICY_USER; 101 - case PhabricatorPolicyCapability::CAN_EDIT: 102 - return PhabricatorPolicies::POLICY_USER; 103 - } 104 - } 105 - 106 - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { 107 - return false; 108 - } 109 - 110 - public function describeAutomaticCapability($capability) { 111 - return null; 112 - } 113 - 114 - 115 - /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 116 - 117 - 118 - public function getApplicationTransactionEditor() { 119 - return new NuanceRequestorEditor(); 120 - } 121 - 122 - public function getApplicationTransactionObject() { 123 - return $this; 124 - } 125 - 126 - public function getApplicationTransactionTemplate() { 127 - return new NuanceRequestorTransaction(); 128 - } 129 - 130 - public function willRenderTimeline( 131 - PhabricatorApplicationTransactionView $timeline, 132 - AphrontRequest $request) { 133 - 134 - return $timeline; 135 - } 136 - 137 - }
-34
src/applications/nuance/storage/NuanceRequestorSource.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorSource 4 - extends NuanceDAO { 5 - 6 - protected $requestorPHID; 7 - protected $sourcePHID; 8 - protected $sourceKey; 9 - protected $data; 10 - 11 - protected function getConfiguration() { 12 - return array( 13 - self::CONFIG_SERIALIZATION => array( 14 - 'data' => self::SERIALIZATION_JSON, 15 - ), 16 - self::CONFIG_COLUMN_SCHEMA => array( 17 - 'sourceKey' => 'text128', 18 - ), 19 - self::CONFIG_KEY_SCHEMA => array( 20 - 'key_source_key' => array( 21 - 'columns' => array('sourcePHID', 'sourceKey'), 22 - 'unique' => true, 23 - ), 24 - 'key_requestor' => array( 25 - 'columns' => array('requestorPHID', 'id'), 26 - ), 27 - 'key_source' => array( 28 - 'columns' => array('sourcePHID', 'id'), 29 - ), 30 - ), 31 - ) + parent::getConfiguration(); 32 - } 33 - 34 - }
-17
src/applications/nuance/storage/NuanceRequestorTransaction.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorTransaction 4 - extends NuanceTransaction { 5 - 6 - const PROPERTY_KEY = 'property.key'; 7 - 8 - const TYPE_PROPERTY = 'nuance.requestor.property'; 9 - 10 - public function getApplicationTransactionType() { 11 - return NuanceRequestorPHIDType::TYPECONST; 12 - } 13 - 14 - public function getApplicationTransactionCommentObject() { 15 - return new NuanceRequestorTransactionComment(); 16 - } 17 - }
-10
src/applications/nuance/storage/NuanceRequestorTransactionComment.php
··· 1 - <?php 2 - 3 - final class NuanceRequestorTransactionComment 4 - extends PhabricatorApplicationTransactionComment { 5 - 6 - public function getApplicationTransactionObject() { 7 - return new NuanceRequestorTransaction(); 8 - } 9 - 10 - }