diff --git a/resources/sql/autopatches/20160122.project.1.boarddefault.php b/resources/sql/autopatches/20160122.project.1.boarddefault.php new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20160122.project.1.boarddefault.php @@ -0,0 +1,60 @@ +establishConnection('w'); + +$panel_table = id(new PhabricatorProfilePanelConfiguration()); +$panel_conn = $panel_table->establishConnection('w'); + +foreach (new LiskMigrationIterator($project_table) as $project) { + $columns = queryfx_all( + $conn_w, + 'SELECT * FROM %T WHERE projectPHID = %s', + id(new PhabricatorProjectColumn())->getTableName(), + $project->getPHID()); + + // This project has no columns, so we don't need to change anything. + if (!$columns) { + continue; + } + + // This project has columns, so set its workboard flag. + queryfx( + $conn_w, + 'UPDATE %T SET hasWorkboard = 1 WHERE id = %d', + $project->getTableName(), + $project->getID()); + + // Try to set the default menu item to "Workboard". + $config = queryfx_all( + $panel_conn, + 'SELECT * FROM %T WHERE profilePHID = %s', + $panel_table->getTableName(), + $project->getPHID()); + + // There are already some settings, so don't touch them. + if ($config) { + continue; + } + + queryfx( + $panel_conn, + 'INSERT INTO %T + (phid, profilePHID, panelKey, builtinKey, visibility, panelProperties, + panelOrder, dateCreated, dateModified) + VALUES (%s, %s, %s, %s, %s, %s, %d, %d, %d)', + $panel_table->getTableName(), + $panel_table->generatePHID(), + $project->getPHID(), + PhabricatorProjectWorkboardProfilePanel::PANELKEY, + PhabricatorProject::PANEL_WORKBOARD, + PhabricatorProfilePanelConfiguration::VISIBILITY_DEFAULT, + '{}', + 2, + PhabricatorTime::getNow(), + PhabricatorTime::getNow()); +} diff --git a/src/applications/project/controller/PhabricatorProjectBoardImportController.php b/src/applications/project/controller/PhabricatorProjectBoardImportController.php --- a/src/applications/project/controller/PhabricatorProjectBoardImportController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardImportController.php @@ -57,6 +57,9 @@ ->setProperties($import_column->getProperties()) ->save(); } + + $project->setHasWorkboard(1)->save(); + $table->saveTransaction(); return id(new AphrontRedirectResponse())->setURI($board_uri); diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php --- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php @@ -776,6 +776,8 @@ ->setProjectPHID($project->getPHID()) ->save(); + $project->setHasWorkboard(1)->save(); + return id(new AphrontRedirectResponse()) ->setURI($board_uri); } else {