From f01c89f8de74be045784e48ebb98b2a2af50c6ed Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 7 Aug 2012 11:57:27 -0700 Subject: [PATCH] Remove subprojects from the Projects UI and API Summary: These are currently useless and confusing (they have no application impact), and should be migrated to edges if we want to restore them in some form. I left the actual storage so this doesn't destroy any data, it just removes all traces of this feature from the UI. Test Plan: Looked at and edited projects. Reviewers: vrana, btrahan Reviewed By: vrana CC: aran Maniphest Tasks: T603 Differential Revision: https://secure.phabricator.com/D3183 --- src/__phutil_library_map__.php | 2 - .../PhabricatorProjectProfileController.php | 57 +--------------- ...habricatorProjectProfileEditController.php | 16 ----- .../project/storage/PhabricatorProject.php | 20 ------ .../storage/PhabricatorProjectSubproject.php | 66 ------------------- 5 files changed, 1 insertion(+), 160 deletions(-) delete mode 100644 src/applications/project/storage/PhabricatorProjectSubproject.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index ede3deb000..5d8cf0c34d 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -906,7 +906,6 @@ phutil_register_library_map(array( 'PhabricatorProjectProfileEditController' => 'applications/project/controller/PhabricatorProjectProfileEditController.php', 'PhabricatorProjectQuery' => 'applications/project/query/PhabricatorProjectQuery.php', 'PhabricatorProjectStatus' => 'applications/project/constants/PhabricatorProjectStatus.php', - 'PhabricatorProjectSubproject' => 'applications/project/storage/PhabricatorProjectSubproject.php', 'PhabricatorProjectTransaction' => 'applications/project/storage/PhabricatorProjectTransaction.php', 'PhabricatorProjectTransactionType' => 'applications/project/constants/PhabricatorProjectTransactionType.php', 'PhabricatorProjectUpdateController' => 'applications/project/controller/PhabricatorProjectUpdateController.php', @@ -1941,7 +1940,6 @@ phutil_register_library_map(array( 'PhabricatorProjectProfileController' => 'PhabricatorProjectController', 'PhabricatorProjectProfileEditController' => 'PhabricatorProjectController', 'PhabricatorProjectQuery' => 'PhabricatorOffsetPagedQuery', - 'PhabricatorProjectSubproject' => 'PhabricatorProjectDAO', 'PhabricatorProjectTransaction' => 'PhabricatorProjectDAO', 'PhabricatorProjectTransactionType' => 'PhabricatorProjectConstants', 'PhabricatorProjectUpdateController' => 'PhabricatorProjectController', diff --git a/src/applications/project/controller/PhabricatorProjectProfileController.php b/src/applications/project/controller/PhabricatorProjectProfileController.php index 9bdcd97a72..2a5ac7fab9 100644 --- a/src/applications/project/controller/PhabricatorProjectProfileController.php +++ b/src/applications/project/controller/PhabricatorProjectProfileController.php @@ -152,10 +152,7 @@ final class PhabricatorProjectProfileController $blurb = phutil_escape_html($blurb); $blurb = str_replace("\n", '
', $blurb); - $phids = array_merge( - array($project->getAuthorPHID()), - $project->getSubprojectPHIDs() - ); + $phids = array($project->getAuthorPHID()); $phids = array_unique($phids); $handles = id(new PhabricatorObjectHandleData($phids)) ->loadHandles(); @@ -187,23 +184,6 @@ final class PhabricatorProjectProfileController '; - if ($project->getSubprojectPHIDs()) { - $table = $this->renderSubprojectTable( - $handles, - $project->getSubprojectPHIDs()); - $subproject_list = $table->render(); - } else { - $subproject_list = '

No subprojects.

'; - } - - $about .= - '
'. - '

Subprojects

'. - '
'. - $subproject_list. - '
'. - '
'; - return $about; } @@ -327,39 +307,4 @@ final class PhabricatorProjectProfileController return $content; } - private function renderSubprojectTable( - array $handles, - array $subprojects_phids) { - assert_instances_of($handles, 'PhabricatorObjectHandle'); - - $rows = array(); - foreach ($subprojects_phids as $subproject_phid) { - $phid = $handles[$subproject_phid]->getPHID(); - - $rows[] = array( - phutil_escape_html($handles[$phid]->getFullName()), - phutil_render_tag( - 'a', - array( - 'class' => 'small grey button', - 'href' => $handles[$phid]->getURI(), - ), - 'View Project Profile'), - ); - } - - $table = new AphrontTableView($rows); - $table->setHeaders( - array( - 'Name', - '', - )); - $table->setColumnClasses( - array( - 'pri', - 'action right', - )); - - return $table; - } } diff --git a/src/applications/project/controller/PhabricatorProjectProfileEditController.php b/src/applications/project/controller/PhabricatorProjectProfileEditController.php index b6e5e123b9..6495aa005a 100644 --- a/src/applications/project/controller/PhabricatorProjectProfileEditController.php +++ b/src/applications/project/controller/PhabricatorProjectProfileEditController.php @@ -39,15 +39,6 @@ final class PhabricatorProjectProfileEditController $img_src = $profile->loadProfileImageURI(); - if ($project->getSubprojectPHIDs()) { - $phids = $project->getSubprojectPHIDs(); - $handles = id(new PhabricatorObjectHandleData($phids)) - ->loadHandles(); - $subprojects = mpull($handles, 'getFullName', 'getPHID'); - } else { - $subprojects = array(); - } - $options = PhabricatorProjectStatus::getStatusMap(); $affiliations = $project->loadAffiliations(); @@ -84,7 +75,6 @@ final class PhabricatorProjectProfileEditController $errors[] = $ex->getMessage(); } - $project->setSubprojectPHIDs($request->getArr('set_subprojects')); $profile->setBlurb($request->getStr('blurb')); if (!strlen($project->getName())) { @@ -249,12 +239,6 @@ final class PhabricatorProjectProfileEditController ->setLabel('Blurb') ->setName('blurb') ->setValue($profile->getBlurb())) - ->appendChild( - id(new AphrontFormTokenizerControl()) - ->setDatasource('/typeahead/common/projects/') - ->setLabel('Subprojects') - ->setName('set_subprojects') - ->setValue($subprojects)) ->appendChild( id(new AphrontFormMarkupControl()) ->setLabel('Profile Image') diff --git a/src/applications/project/storage/PhabricatorProject.php b/src/applications/project/storage/PhabricatorProject.php index 47a44ccc4b..92269a86a5 100644 --- a/src/applications/project/storage/PhabricatorProject.php +++ b/src/applications/project/storage/PhabricatorProject.php @@ -25,7 +25,6 @@ final class PhabricatorProject extends PhabricatorProjectDAO { protected $subprojectPHIDs = array(); protected $phrictionSlug; - private $subprojectsNeedUpdate; private $affiliations; public function getConfiguration() { @@ -42,12 +41,6 @@ final class PhabricatorProject extends PhabricatorProjectDAO { PhabricatorPHIDConstants::PHID_TYPE_PROJ); } - public function setSubprojectPHIDs(array $phids) { - $this->subprojectPHIDs = $phids; - $this->subprojectsNeedUpdate = true; - return $this; - } - public function loadProfile() { $profile = id(new PhabricatorProjectProfile())->loadOneWhere( 'projectPHID = %s', @@ -95,17 +88,4 @@ final class PhabricatorProject extends PhabricatorProjectDAO { return $this; } - public function save() { - $result = parent::save(); - - if ($this->subprojectsNeedUpdate) { - // If we've changed the project PHIDs for this task, update the link - // table. - PhabricatorProjectSubproject::updateProjectSubproject($this); - $this->subprojectsNeedUpdate = false; - } - - return $result; - } - } diff --git a/src/applications/project/storage/PhabricatorProjectSubproject.php b/src/applications/project/storage/PhabricatorProjectSubproject.php deleted file mode 100644 index 2f0c62a9db..0000000000 --- a/src/applications/project/storage/PhabricatorProjectSubproject.php +++ /dev/null @@ -1,66 +0,0 @@ - subproject table, which - * denormalizes the relationship between projects and subprojects into - * a link table so it can be efficiently queried. This table is not - * authoritative; the subprojectPHIDs field of PhabricatorProject is. - * The rows in this table are regenerated when subprojects of a project - * are updated. - */ -final class PhabricatorProjectSubproject extends PhabricatorProjectDAO { - - protected $projectPHID; - protected $subprojectPHID; - - public function getConfiguration() { - return array( - self::CONFIG_IDS => self::IDS_MANUAL, - self::CONFIG_TIMESTAMPS => false, - ); - } - - public static function updateProjectSubproject(PhabricatorProject $project) { - $dao = new PhabricatorProjectSubproject(); - $conn = $dao->establishConnection('w'); - - $sql = array(); - foreach ($project->getSubprojectPHIDs() as $subproject_phid) { - $sql[] = qsprintf( - $conn, - '(%s, %s)', - $project->getPHID(), - $subproject_phid); - } - - queryfx( - $conn, - 'DELETE FROM %T WHERE projectPHID = %s', - $dao->getTableName(), - $project->getPHID()); - if ($sql) { - queryfx( - $conn, - 'INSERT INTO %T (projectPHID, subprojectPHID) VALUES %Q', - $dao->getTableName(), - implode(', ', $sql)); - } - } - -}