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

Modernize Project/Object edges

Summary: Ref T5245. Updates the project/object edge to use a modern class definition. Moves further toward real edges.

Test Plan: Added projects to some objects, viewed transactions in transaction record.

Reviewers: chad, btrahan, joshuaspence

Reviewed By: joshuaspence

Subscribers: epriestley

Maniphest Tasks: T5245

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

+138 -32
+4
src/__phutil_library_map__.php
··· 2008 2008 'PhabricatorProjectMembersRemoveController' => 'applications/project/controller/PhabricatorProjectMembersRemoveController.php', 2009 2009 'PhabricatorProjectMoveController' => 'applications/project/controller/PhabricatorProjectMoveController.php', 2010 2010 'PhabricatorProjectNameCollisionException' => 'applications/project/exception/PhabricatorProjectNameCollisionException.php', 2011 + 'PhabricatorProjectObjectHasProjectEdgeType' => 'applications/project/edge/PhabricatorProjectObjectHasProjectEdgeType.php', 2011 2012 'PhabricatorProjectPHIDTypeColumn' => 'applications/project/phid/PhabricatorProjectPHIDTypeColumn.php', 2012 2013 'PhabricatorProjectPHIDTypeProject' => 'applications/project/phid/PhabricatorProjectPHIDTypeProject.php', 2013 2014 'PhabricatorProjectProfileController' => 'applications/project/controller/PhabricatorProjectProfileController.php', 2015 + 'PhabricatorProjectProjectHasObjectEdgeType' => 'applications/project/edge/PhabricatorProjectProjectHasObjectEdgeType.php', 2014 2016 'PhabricatorProjectQuery' => 'applications/project/query/PhabricatorProjectQuery.php', 2015 2017 'PhabricatorProjectSearchEngine' => 'applications/project/query/PhabricatorProjectSearchEngine.php', 2016 2018 'PhabricatorProjectSearchIndexer' => 'applications/project/search/PhabricatorProjectSearchIndexer.php', ··· 4820 4822 'PhabricatorProjectMembersRemoveController' => 'PhabricatorProjectController', 4821 4823 'PhabricatorProjectMoveController' => 'PhabricatorProjectController', 4822 4824 'PhabricatorProjectNameCollisionException' => 'Exception', 4825 + 'PhabricatorProjectObjectHasProjectEdgeType' => 'PhabricatorEdgeType', 4823 4826 'PhabricatorProjectPHIDTypeColumn' => 'PhabricatorPHIDType', 4824 4827 'PhabricatorProjectPHIDTypeProject' => 'PhabricatorPHIDType', 4825 4828 'PhabricatorProjectProfileController' => 'PhabricatorProjectController', 4829 + 'PhabricatorProjectProjectHasObjectEdgeType' => 'PhabricatorEdgeType', 4826 4830 'PhabricatorProjectQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 4827 4831 'PhabricatorProjectSearchEngine' => 'PhabricatorApplicationSearchEngine', 4828 4832 'PhabricatorProjectSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
+4 -2
src/applications/differential/customfield/DifferentialProjectsField.php
··· 35 35 36 36 $projects = PhabricatorEdgeQuery::loadDestinationPHIDs( 37 37 $revision->getPHID(), 38 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 38 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 39 39 $projects = array_reverse($projects); 40 40 41 41 return $projects; ··· 97 97 } 98 98 99 99 public function getApplicationTransactionMetadata() { 100 - return array('edge:type' => PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 100 + return array( 101 + 'edge:type' => PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, 102 + ); 101 103 } 102 104 103 105 public function parseValueFromCommitMessage($value) {
+1 -1
src/applications/diffusion/controller/DiffusionRepositoryController.php
··· 231 231 232 232 $project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 233 233 $repository->getPHID(), 234 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 234 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 235 235 if ($project_phids) { 236 236 $this->loadHandles($project_phids); 237 237 $view->addProperty(
+1 -1
src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php
··· 73 73 ->setTransactionType($type_edge) 74 74 ->setMetadataValue( 75 75 'edge:type', 76 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT) 76 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST) 77 77 ->setNewValue( 78 78 array( 79 79 '=' => array_fuse($v_projects),
+1 -1
src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
··· 265 265 266 266 $project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 267 267 $repository->getPHID(), 268 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 268 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 269 269 if ($project_phids) { 270 270 $this->loadHandles($project_phids); 271 271 $project_text = $this->renderHandlesForPHIDs($project_phids);
+1 -1
src/applications/herald/adapter/HeraldPholioMockAdapter.php
··· 103 103 case self::FIELD_PROJECTS: 104 104 return PhabricatorEdgeQuery::loadDestinationPHIDs( 105 105 $this->getMock()->getPHID(), 106 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 106 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 107 107 } 108 108 109 109 return parent::getHeraldField($field);
+2 -2
src/applications/paste/controller/PhabricatorPasteEditController.php
··· 76 76 } else { 77 77 $v_projects = PhabricatorEdgeQuery::loadDestinationPHIDs( 78 78 $paste->getPHID(), 79 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 79 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 80 80 $v_projects = array_reverse($v_projects); 81 81 } 82 82 ··· 121 121 ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) 122 122 ->setNewValue($v_policy); 123 123 124 - $proj_edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 124 + $proj_edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 125 125 $xactions[] = id(new PhabricatorPasteTransaction()) 126 126 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 127 127 ->setMetadataValue('edge:type', $proj_edge_type)
+2 -2
src/applications/pholio/controller/PholioMockEditController.php
··· 49 49 } else { 50 50 $v_projects = PhabricatorEdgeQuery::loadDestinationPHIDs( 51 51 $mock->getPHID(), 52 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 52 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 53 53 $v_projects = array_reverse($v_projects); 54 54 } 55 55 ··· 205 205 } 206 206 207 207 if (!$errors) { 208 - $proj_edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 208 + $proj_edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 209 209 $xactions[] = id(new PholioTransaction()) 210 210 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 211 211 ->setMetadataValue('edge:type', $proj_edge_type)
+2 -2
src/applications/ponder/controller/PonderQuestionEditController.php
··· 27 27 } 28 28 $v_projects = PhabricatorEdgeQuery::loadDestinationPHIDs( 29 29 $question->getPHID(), 30 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 30 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 31 31 $v_projects = array_reverse($v_projects); 32 32 } else { 33 33 $question = id(new PonderQuestion()) ··· 70 70 ->setTransactionType(PonderQuestionTransaction::TYPE_CONTENT) 71 71 ->setNewValue($v_content); 72 72 73 - $proj_edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 73 + $proj_edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 74 74 $xactions[] = id(new PonderQuestionTransaction()) 75 75 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 76 76 ->setMetadataValue('edge:type', $proj_edge_type)
+102
src/applications/project/edge/PhabricatorProjectObjectHasProjectEdgeType.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectObjectHasProjectEdgeType 4 + extends PhabricatorEdgeType { 5 + 6 + const EDGECONST = 41; 7 + 8 + public function getInverseEdgeConstant() { 9 + return PhabricatorProjectProjectHasObjectEdgeType::EDGECONST; 10 + } 11 + 12 + public function getTransactionAddString( 13 + $actor, 14 + $add_count, 15 + $add_edges) { 16 + 17 + return pht( 18 + '%s added %s project(s): %s.', 19 + $actor, 20 + $add_count, 21 + $add_edges); 22 + } 23 + 24 + public function getTransactionRemoveString( 25 + $actor, 26 + $rem_count, 27 + $rem_edges) { 28 + 29 + return pht( 30 + '%s removed %s project(s): %s.', 31 + $actor, 32 + $rem_count, 33 + $rem_edges); 34 + } 35 + 36 + public function getTransactionEditString( 37 + $actor, 38 + $total_count, 39 + $add_count, 40 + $add_edges, 41 + $rem_count, 42 + $rem_edges) { 43 + 44 + return pht( 45 + '%s edited %s project(s), added %s: %s; removed %s: %s.', 46 + $actor, 47 + $total_count, 48 + $add_count, 49 + $add_edges, 50 + $rem_count, 51 + $rem_edges); 52 + } 53 + 54 + public function getFeedAddString( 55 + $actor, 56 + $object, 57 + $add_count, 58 + $add_edges) { 59 + 60 + return pht( 61 + '%s added %s project(s) to %s: %s.', 62 + $actor, 63 + $add_count, 64 + $object, 65 + $add_edges); 66 + } 67 + 68 + public function getFeedRemoveString( 69 + $actor, 70 + $object, 71 + $rem_count, 72 + $rem_edges) { 73 + 74 + return pht( 75 + '%s removed %s project(s) from %s: %s.', 76 + $actor, 77 + $rem_count, 78 + $object, 79 + $rem_edges); 80 + } 81 + 82 + public function getFeedEditString( 83 + $actor, 84 + $object, 85 + $total_count, 86 + $add_count, 87 + $add_edges, 88 + $rem_count, 89 + $rem_edges) { 90 + 91 + return pht( 92 + '%s edited %s project(s) for %s, added %s: %s; removed %s: %s.', 93 + $actor, 94 + $total_count, 95 + $object, 96 + $add_count, 97 + $add_edges, 98 + $rem_count, 99 + $rem_edges); 100 + } 101 + 102 + }
+12
src/applications/project/edge/PhabricatorProjectProjectHasObjectEdgeType.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectProjectHasObjectEdgeType 4 + extends PhabricatorEdgeType { 5 + 6 + const EDGECONST = 42; 7 + 8 + public function getInverseEdgeConstant() { 9 + return PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 10 + } 11 + 12 + }
+1 -1
src/applications/project/events/PhabricatorProjectUIEventListener.php
··· 31 31 32 32 $project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 33 33 $object->getPHID(), 34 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 34 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 35 35 if ($project_phids) { 36 36 $project_phids = array_reverse($project_phids); 37 37 $handles = id(new PhabricatorHandleQuery())
+1 -1
src/applications/repository/query/PhabricatorRepositoryQuery.php
··· 208 208 209 209 public function didFilterPage(array $repositories) { 210 210 if ($this->needProjectPHIDs) { 211 - $type_project = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 211 + $type_project = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 212 212 213 213 $edge_query = id(new PhabricatorEdgeQuery()) 214 214 ->withSourcePHIDs(mpull($repositories, 'getPHID'))
+2 -2
src/applications/slowvote/controller/PhabricatorSlowvoteEditController.php
··· 38 38 } else { 39 39 $v_projects = PhabricatorEdgeQuery::loadDestinationPHIDs( 40 40 $poll->getPHID(), 41 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 41 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 42 42 $v_projects = array_reverse($v_projects); 43 43 } 44 44 ··· 105 105 ->setNewValue($v_view_policy); 106 106 107 107 if (empty($errors)) { 108 - $proj_edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 108 + $proj_edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 109 109 $xactions[] = id(new PhabricatorSlowvoteTransaction()) 110 110 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 111 111 ->setMetadataValue('edge:type', $proj_edge_type)
+2 -2
src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
··· 1153 1153 } 1154 1154 1155 1155 if ($phids) { 1156 - $edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT; 1156 + $edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 1157 1157 $block_xactions[] = newv(get_class(head($xactions)), array()) 1158 1158 ->setIgnoreOnNoEffect(true) 1159 1159 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) ··· 1967 1967 if ($object instanceof PhabricatorProjectInterface) { 1968 1968 $project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 1969 1969 $object->getPHID(), 1970 - PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); 1970 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 1971 1971 } else { 1972 1972 $project_phids = $object->getProjectPHIDs(); 1973 1973 }
-14
src/infrastructure/edges/constants/PhabricatorEdgeConfig.php
··· 57 57 const TYPE_OBJECT_USES_CREDENTIAL = 39; 58 58 const TYPE_CREDENTIAL_USED_BY_OBJECT = 40; 59 59 60 - const TYPE_OBJECT_HAS_PROJECT = 41; 61 - const TYPE_PROJECT_HAS_OBJECT = 42; 62 - 63 60 const TYPE_OBJECT_HAS_COLUMN = 43; 64 61 const TYPE_COLUMN_HAS_OBJECT = 44; 65 62 ··· 193 190 self::TYPE_OBJECT_USES_CREDENTIAL => self::TYPE_CREDENTIAL_USED_BY_OBJECT, 194 191 self::TYPE_CREDENTIAL_USED_BY_OBJECT => self::TYPE_OBJECT_USES_CREDENTIAL, 195 192 196 - self::TYPE_OBJECT_HAS_PROJECT => self::TYPE_PROJECT_HAS_OBJECT, 197 - self::TYPE_PROJECT_HAS_OBJECT => self::TYPE_OBJECT_HAS_PROJECT, 198 - 199 193 self::TYPE_OBJECT_HAS_COLUMN => self::TYPE_COLUMN_HAS_OBJECT, 200 194 self::TYPE_COLUMN_HAS_OBJECT => self::TYPE_OBJECT_HAS_COLUMN, 201 195 ··· 276 270 return '%s edited member(s), added %d: %s; removed %d: %s.'; 277 271 case self::TYPE_MEMBER_OF_PROJ: 278 272 case self::TYPE_COMMIT_HAS_PROJECT: 279 - case self::TYPE_OBJECT_HAS_PROJECT: 280 273 return '%s edited project(s), added %d: %s; removed %d: %s.'; 281 274 case self::TYPE_QUESTION_HAS_VOTING_USER: 282 275 case self::TYPE_ANSWER_HAS_VOTING_USER: ··· 291 284 case self::TYPE_UNSUBSCRIBED_FROM_OBJECT: 292 285 case self::TYPE_FILE_HAS_OBJECT: 293 286 case self::TYPE_CONTRIBUTED_TO_OBJECT: 294 - case self::TYPE_PROJECT_HAS_OBJECT: 295 287 return '%s edited object(s), added %d: %s; removed %d: %s.'; 296 288 case self::TYPE_OBJECT_HAS_UNSUBSCRIBER: 297 289 return '%s edited unsubcriber(s), added %d: %s; removed %d: %s.'; ··· 353 345 return '%s added %d member(s): %s.'; 354 346 case self::TYPE_MEMBER_OF_PROJ: 355 347 case self::TYPE_COMMIT_HAS_PROJECT: 356 - case self::TYPE_OBJECT_HAS_PROJECT: 357 348 return '%s added %d project(s): %s.'; 358 349 case self::TYPE_QUESTION_HAS_VOTING_USER: 359 350 case self::TYPE_ANSWER_HAS_VOTING_USER: ··· 394 385 case self::TYPE_UNSUBSCRIBED_FROM_OBJECT: 395 386 case self::TYPE_FILE_HAS_OBJECT: 396 387 case self::TYPE_CONTRIBUTED_TO_OBJECT: 397 - case self::TYPE_PROJECT_HAS_OBJECT: 398 388 default: 399 389 return '%s added %d object(s): %s.'; 400 390 ··· 428 418 return '%s removed %d member(s): %s.'; 429 419 case self::TYPE_MEMBER_OF_PROJ: 430 420 case self::TYPE_COMMIT_HAS_PROJECT: 431 - case self::TYPE_OBJECT_HAS_PROJECT: 432 421 return '%s removed %d project(s): %s.'; 433 422 case self::TYPE_QUESTION_HAS_VOTING_USER: 434 423 case self::TYPE_ANSWER_HAS_VOTING_USER: ··· 467 456 case self::TYPE_UNSUBSCRIBED_FROM_OBJECT: 468 457 case self::TYPE_FILE_HAS_OBJECT: 469 458 case self::TYPE_CONTRIBUTED_TO_OBJECT: 470 - case self::TYPE_PROJECT_HAS_OBJECT: 471 459 default: 472 460 return '%s removed %d object(s): %s.'; 473 461 ··· 499 487 return '%s updated members of %s.'; 500 488 case self::TYPE_MEMBER_OF_PROJ: 501 489 case self::TYPE_COMMIT_HAS_PROJECT: 502 - case self::TYPE_OBJECT_HAS_PROJECT: 503 490 return '%s updated projects of %s.'; 504 491 case self::TYPE_QUESTION_HAS_VOTING_USER: 505 492 case self::TYPE_ANSWER_HAS_VOTING_USER: ··· 538 525 case self::TYPE_UNSUBSCRIBED_FROM_OBJECT: 539 526 case self::TYPE_FILE_HAS_OBJECT: 540 527 case self::TYPE_CONTRIBUTED_TO_OBJECT: 541 - case self::TYPE_PROJECT_HAS_OBJECT: 542 528 default: 543 529 return '%s updated objects of %s.'; 544 530