Projects - tighten up a few things

Summary:
Fixes T2675, T2676.

 - when the last person leaves a project it is archived.
 - a script to archive all memberless projects
 - better feed stories for the various policy edits you can do
 - phriction pages are also moved as you rename projects

Test Plan: edited some projects and noted reasonable feed stories. ran script against test data and it worked! left a last man standing project and it archived. renamed a project to "a" then "b" then "a" (etc) and it worked including phrictiondocument moves

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2676, T2675

Differential Revision: https://secure.phabricator.com/D6478
This commit is contained in:
Bob Trahan
2013-07-17 16:43:37 -07:00
parent b89affad9d
commit 001f76cbaa
5 changed files with 109 additions and 3 deletions

View File

@@ -0,0 +1,39 @@
<?php
echo "Archiving projects with no members...\n";
$table = new PhabricatorProject();
$table->openTransaction();
foreach (new LiskMigrationIterator($table) as $project) {
$members = PhabricatorEdgeQuery::loadDestinationPHIDs(
$project->getPHID(),
PhabricatorEdgeConfig::TYPE_PROJ_MEMBER);
if (count($members)) {
echo sprintf(
'Project "%s" has %d members; skipping.',
$project->getName(),
count($members)), "\n";
continue;
}
if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ARCHIVED) {
echo sprintf(
'Project "%s" already archived; skipping.',
$project->getName()), "\n";
continue;
}
echo sprintf('Archiving project "%s"...', $project->getName()), "\n";
queryfx(
$table->establishConnection('w'),
'UPDATE %T SET status = %s WHERE id = %d',
$table->getTableName(),
PhabricatorProjectStatus::STATUS_ARCHIVED,
$project->getID());
}
$table->saveTransaction();
echo "\nDone.\n";