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

move repository arcanist projects over to new phid stuff

Summary: also submit casual entry for longest class name award with new query class. Ref T2715

Test Plan: phid.query and saw the right arcanist project

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2715

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

+148 -27
+9 -1
src/__phutil_library_map__.php
··· 1445 1445 'PhabricatorRepositoryArcanistProject' => 'applications/repository/storage/PhabricatorRepositoryArcanistProject.php', 1446 1446 'PhabricatorRepositoryArcanistProjectDeleteController' => 'applications/repository/controller/PhabricatorRepositoryArcanistProjectDeleteController.php', 1447 1447 'PhabricatorRepositoryArcanistProjectEditController' => 'applications/repository/controller/PhabricatorRepositoryArcanistProjectEditController.php', 1448 + 'PhabricatorRepositoryArcanistProjectQuery' => 'applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php', 1448 1449 'PhabricatorRepositoryAuditRequest' => 'applications/repository/storage/PhabricatorRepositoryAuditRequest.php', 1449 1450 'PhabricatorRepositoryBranch' => 'applications/repository/storage/PhabricatorRepositoryBranch.php', 1450 1451 'PhabricatorRepositoryCommit' => 'applications/repository/storage/PhabricatorRepositoryCommit.php', ··· 1475 1476 'PhabricatorRepositoryManagementWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementWorkflow.php', 1476 1477 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/PhabricatorRepositoryMercurialCommitChangeParserWorker.php', 1477 1478 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/PhabricatorRepositoryMercurialCommitMessageParserWorker.php', 1479 + 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeArcanistProject.php', 1478 1480 'PhabricatorRepositoryPHIDTypeCommit' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeCommit.php', 1479 1481 'PhabricatorRepositoryPHIDTypeRepository' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php', 1480 1482 'PhabricatorRepositoryPullEngine' => 'applications/repository/engine/PhabricatorRepositoryPullEngine.php', ··· 3484 3486 1 => 'PhabricatorPolicyInterface', 3485 3487 2 => 'PhabricatorMarkupInterface', 3486 3488 ), 3487 - 'PhabricatorRepositoryArcanistProject' => 'PhabricatorRepositoryDAO', 3489 + 'PhabricatorRepositoryArcanistProject' => 3490 + array( 3491 + 0 => 'PhabricatorRepositoryDAO', 3492 + 1 => 'PhabricatorPolicyInterface', 3493 + ), 3488 3494 'PhabricatorRepositoryArcanistProjectDeleteController' => 'PhabricatorRepositoryController', 3489 3495 'PhabricatorRepositoryArcanistProjectEditController' => 'PhabricatorRepositoryController', 3496 + 'PhabricatorRepositoryArcanistProjectQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 3490 3497 'PhabricatorRepositoryAuditRequest' => 'PhabricatorRepositoryDAO', 3491 3498 'PhabricatorRepositoryBranch' => 'PhabricatorRepositoryDAO', 3492 3499 'PhabricatorRepositoryCommit' => ··· 3520 3527 'PhabricatorRepositoryManagementWorkflow' => 'PhutilArgumentWorkflow', 3521 3528 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker', 3522 3529 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 3530 + 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'PhabricatorPHIDType', 3523 3531 'PhabricatorRepositoryPHIDTypeCommit' => 'PhabricatorPHIDType', 3524 3532 'PhabricatorRepositoryPHIDTypeRepository' => 'PhabricatorPHIDType', 3525 3533 'PhabricatorRepositoryPullEngine' => 'PhabricatorRepositoryEngine',
-1
src/applications/phid/PhabricatorPHIDConstants.php
··· 6 6 const PHID_TYPE_UNKNOWN = '????'; 7 7 const PHID_TYPE_MAGIC = '!!!!'; 8 8 const PHID_TYPE_STRY = 'STRY'; 9 - const PHID_TYPE_APRJ = 'APRJ'; 10 9 const PHID_TYPE_ACMT = 'ACMT'; 11 10 const PHID_TYPE_DRYR = 'DRYR'; 12 11 const PHID_TYPE_DRYL = 'DRYL';
-23
src/applications/phid/handle/PhabricatorObjectHandleData.php
··· 48 48 49 49 switch ($type) { 50 50 51 - case PhabricatorPHIDConstants::PHID_TYPE_APRJ: 52 - $project_dao = new PhabricatorRepositoryArcanistProject(); 53 - $projects = $project_dao->loadAllWhere( 54 - 'phid IN (%Ls)', 55 - $phids); 56 - return mpull($projects, null, 'getPHID'); 57 - 58 51 case PhabricatorPHIDConstants::PHID_TYPE_XACT: 59 52 $subtypes = array(); 60 53 foreach ($phids as $phid) { ··· 132 125 default: 133 126 $handle->setName('Foul Magicks'); 134 127 break; 135 - } 136 - $handles[$phid] = $handle; 137 - } 138 - break; 139 - 140 - case PhabricatorPHIDConstants::PHID_TYPE_APRJ: 141 - foreach ($phids as $phid) { 142 - $handle = new PhabricatorObjectHandle(); 143 - $handle->setPHID($phid); 144 - $handle->setType($type); 145 - if (empty($objects[$phid])) { 146 - $handle->setName('Unknown Arcanist Project'); 147 - } else { 148 - $project = $objects[$phid]; 149 - $handle->setName($project->getName()); 150 - $handle->setComplete(true); 151 128 } 152 129 $handles[$phid] = $handle; 153 130 }
+3
src/applications/repository/PhabricatorRepositoryConfigOptions.php
··· 1 1 <?php 2 2 3 + /** 4 + * @group repository 5 + */ 3 6 final class PhabricatorRepositoryConfigOptions 4 7 extends PhabricatorApplicationConfigOptions { 5 8
+3
src/applications/repository/application/PhabricatorApplicationRepositories.php
··· 1 1 <?php 2 2 3 + /** 4 + * @group repository 5 + */ 3 6 final class PhabricatorApplicationRepositories extends PhabricatorApplication { 4 7 5 8 public function getBaseURI() {
+43
src/applications/repository/phid/PhabricatorRepositoryPHIDTypeArcanistProject.php
··· 1 + <?php 2 + 3 + /** 4 + * @group repository 5 + */ 6 + final class PhabricatorRepositoryPHIDTypeArcanistProject 7 + extends PhabricatorPHIDType { 8 + 9 + const TYPECONST = 'APRJ'; 10 + 11 + public function getTypeConstant() { 12 + return self::TYPECONST; 13 + } 14 + 15 + public function getTypeName() { 16 + return pht('Arcanist Project'); 17 + } 18 + 19 + public function newObject() { 20 + return new PhabricatorRepositoryArcanistProject(); 21 + } 22 + 23 + public function loadObjects( 24 + PhabricatorObjectQuery $query, 25 + array $phids) { 26 + return id(new PhabricatorRepositoryArcanistProjectQuery()) 27 + ->setViewer($query->getViewer()) 28 + ->withPHIDs($phids) 29 + ->execute(); 30 + } 31 + 32 + public function loadHandles( 33 + PhabricatorHandleQuery $query, 34 + array $handles, 35 + array $objects) { 36 + 37 + foreach ($handles as $phid => $handle) { 38 + $project = $objects[$phid]; 39 + $handle->setName($project->getName()); 40 + } 41 + } 42 + 43 + }
+59
src/applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php
··· 1 + <?php 2 + 3 + /** 4 + * @group repository 5 + */ 6 + final class PhabricatorRepositoryArcanistProjectQuery 7 + extends PhabricatorCursorPagedPolicyAwareQuery { 8 + 9 + private $ids; 10 + private $phids; 11 + 12 + public function withIDs(array $ids) { 13 + $this->ids = $ids; 14 + return $this; 15 + } 16 + 17 + public function withPHIDs(array $phids) { 18 + $this->phids = $phids; 19 + return $this; 20 + } 21 + 22 + protected function loadPage() { 23 + $table = new PhabricatorRepositoryArcanistProject(); 24 + $conn_r = $table->establishConnection('r'); 25 + 26 + $data = queryfx_all( 27 + $conn_r, 28 + 'SELECT * FROM %T %Q %Q %Q', 29 + $table->getTableName(), 30 + $this->buildWhereClause($conn_r), 31 + $this->buildOrderClause($conn_r), 32 + $this->buildLimitClause($conn_r)); 33 + 34 + return $table->loadAllFromArray($data); 35 + } 36 + 37 + private function buildWhereClause(AphrontDatabaseConnection $conn_r) { 38 + $where = array(); 39 + 40 + if ($this->ids) { 41 + $where[] = qsprintf( 42 + $conn_r, 43 + 'id IN (%Ld)', 44 + $this->ids); 45 + } 46 + 47 + if ($this->phids) { 48 + $where[] = qsprintf( 49 + $conn_r, 50 + 'phid IN (%Ls)', 51 + $this->phids); 52 + } 53 + 54 + $where[] = $this->buildPagingClause($conn_r); 55 + 56 + return $this->formatWhereClause($where); 57 + } 58 + 59 + }
+31 -2
src/applications/repository/storage/PhabricatorRepositoryArcanistProject.php
··· 1 1 <?php 2 2 3 + /** 4 + * @group repository 5 + */ 3 6 final class PhabricatorRepositoryArcanistProject 4 - extends PhabricatorRepositoryDAO { 7 + extends PhabricatorRepositoryDAO 8 + implements PhabricatorPolicyInterface { 5 9 6 10 protected $name; 7 11 protected $phid; ··· 22 26 } 23 27 24 28 public function generatePHID() { 25 - return PhabricatorPHID::generateNewPHID('APRJ'); 29 + return PhabricatorPHID::generateNewPHID( 30 + PhabricatorRepositoryPHIDTypeArcanistProject::TYPECONST); 26 31 } 27 32 28 33 public function loadRepository() { ··· 44 49 $result = parent::delete(); 45 50 $this->saveTransaction(); 46 51 return $result; 52 + } 53 + 54 + 55 + 56 + /* -( PhabricatorPolicyInterface )----------------------------------------- */ 57 + 58 + public function getCapabilities() { 59 + return array( 60 + PhabricatorPolicyCapability::CAN_VIEW, 61 + PhabricatorPolicyCapability::CAN_EDIT, 62 + ); 63 + } 64 + 65 + public function getPolicy($capability) { 66 + switch ($capability) { 67 + case PhabricatorPolicyCapability::CAN_VIEW: 68 + return PhabricatorPolicies::POLICY_USER; 69 + case PhabricatorPolicyCapability::CAN_EDIT: 70 + return PhabricatorPolicies::POLICY_ADMIN; 71 + } 72 + } 73 + 74 + public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { 75 + return false; 47 76 } 48 77 49 78 }