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

Finished Project Generation

Summary: Progress on T2903

Test Plan: Projects are generating.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin, AnhNhan

Maniphest Tasks: T2903

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

authored by

deedydas and committed by
epriestley
0ecc5dec 977ac2a8

+92
+2
src/__phutil_library_map__.php
··· 1256 1256 'PhabricatorProjectProfileEditController' => 'applications/project/controller/PhabricatorProjectProfileEditController.php', 1257 1257 'PhabricatorProjectQuery' => 'applications/project/query/PhabricatorProjectQuery.php', 1258 1258 'PhabricatorProjectStatus' => 'applications/project/constants/PhabricatorProjectStatus.php', 1259 + 'PhabricatorProjectTestDataGenerator' => 'applications/project/lipsum/PhabricatorProjectTestDataGenerator.php', 1259 1260 'PhabricatorProjectTransaction' => 'applications/project/storage/PhabricatorProjectTransaction.php', 1260 1261 'PhabricatorProjectTransactionType' => 'applications/project/constants/PhabricatorProjectTransactionType.php', 1261 1262 'PhabricatorProjectUpdateController' => 'applications/project/controller/PhabricatorProjectUpdateController.php', ··· 2964 2965 'PhabricatorProjectProfileController' => 'PhabricatorProjectController', 2965 2966 'PhabricatorProjectProfileEditController' => 'PhabricatorProjectController', 2966 2967 'PhabricatorProjectQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 2968 + 'PhabricatorProjectTestDataGenerator' => 'PhabricatorTestDataGenerator', 2967 2969 'PhabricatorProjectTransaction' => 'PhabricatorProjectDAO', 2968 2970 'PhabricatorProjectTransactionType' => 'PhabricatorProjectConstants', 2969 2971 'PhabricatorProjectUpdateController' => 'PhabricatorProjectController',
+1
src/applications/phid/PhabricatorObjectHandle.php
··· 113 113 PhabricatorPHIDConstants::PHID_TYPE_QUES => 'Question', 114 114 PhabricatorPHIDConstants::PHID_TYPE_PVAR => 'Variable', 115 115 PhabricatorPHIDConstants::PHID_TYPE_PSTE => 'Paste', 116 + PhabricatorPHIDConstants::PHID_TYPE_PROJ => 'Project', 116 117 ); 117 118 118 119 return idx($map, $this->getType(), $this->getType());
+89
src/applications/project/lipsum/PhabricatorProjectTestDataGenerator.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectTestDataGenerator 4 + extends PhabricatorTestDataGenerator { 5 + 6 + private $xactions = array(); 7 + 8 + public function generate() { 9 + $title = $this->generateTitle(); 10 + $author = $this->loadAuthorPHID(); 11 + $project = id(new PhabricatorProject()) 12 + ->setName($title) 13 + ->setAuthorPHID($author); 14 + 15 + $this->addTransaction( 16 + PhabricatorProjectTransactionType::TYPE_NAME, 17 + $title); 18 + $this->addTransaction( 19 + PhabricatorProjectTransactionType::TYPE_MEMBERS, 20 + $this->loadMembersWithAuthor($author)); 21 + $this->addTransaction( 22 + PhabricatorProjectTransactionType::TYPE_STATUS, 23 + $this->generateProjectStatus()); 24 + $this->addTransaction( 25 + PhabricatorProjectTransactionType::TYPE_CAN_VIEW, 26 + PhabricatorPolicies::POLICY_PUBLIC); 27 + $this->addTransaction( 28 + PhabricatorProjectTransactionType::TYPE_CAN_EDIT, 29 + PhabricatorPolicies::POLICY_PUBLIC); 30 + $this->addTransaction( 31 + PhabricatorProjectTransactionType::TYPE_CAN_JOIN, 32 + PhabricatorPolicies::POLICY_PUBLIC); 33 + 34 + $editor = id(new PhabricatorProjectEditor($project)) 35 + ->setActor(id(new PhabricatorUser()) 36 + ->loadOneWhere('phid = %s', $author)) 37 + ->applyTransactions($this->xactions); 38 + 39 + $profile = id(new PhabricatorProjectProfile()) 40 + ->setBlurb($this->generateDescription()) 41 + ->setProjectPHID($project->getPHID()) 42 + ->save(); 43 + 44 + return $project->save(); 45 + } 46 + 47 + private function addTransaction($type, $value) { 48 + $this->xactions[] = id(new PhabricatorProjectTransaction()) 49 + ->setTransactionType($type) 50 + ->setNewValue($value); 51 + } 52 + 53 + private function loadPhabrictorUserPHID() { 54 + return $this->loadOneRandom("PhabricatorUser")->getPHID(); 55 + } 56 + 57 + public function loadAuthorPHID() { 58 + return $this->loadPhabrictorUserPHID(); 59 + } 60 + 61 + public function loadMembersWithAuthor($author) { 62 + $members = array($author); 63 + for ($i = 0; $i < rand(10, 20);$i++) { 64 + $members[] = $this->loadPhabrictorUserPHID(); 65 + } 66 + return $members; 67 + } 68 + 69 + public function generateTitle() { 70 + return id(new PhutilLipsumContextFreeGrammar()) 71 + ->generate(); 72 + } 73 + 74 + public function generateDescription() { 75 + return id(new PhutilLipsumContextFreeGrammar()) 76 + ->generateSeveral(rand(30, 40)); 77 + } 78 + 79 + public function generateProjectStatus() { 80 + $statuses = array_keys(PhabricatorProjectStatus::getStatusMap()); 81 + // Make sure 4/5th of all generated Projects are active 82 + $random = rand(0, 4); 83 + if ($random != 0) { 84 + return $statuses[0]; 85 + } else { 86 + return $statuses[1]; 87 + } 88 + } 89 + }