mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-22 13:30:55 +01:00
922e5c0849
Summary: Fixes T4021. Chooses to keep a "primary" slug based off the name - including all that lovely logic - and allow the user to specify "additional" slugs. Expose these as "hashtags" to the user. Sets us up for a fun diff where we can delete all the Project => Phriction automagicalness. In terms of this diff, see the TODOs i added. Test Plan: added a primary slug as an additional slug - got an error. added a slug in use on another project - got an error. added multiple good slugs and they worked. removed slugs and it worked. made some remark using multiple new slugs and they all linked to the correct project ran epriestley's case - Create project "A". - Give it additional slug "B". - Try to create project "B". and i got a nice error about hashtag collision Reviewers: epriestley Reviewed By: epriestley Subscribers: epriestley, Korvin Maniphest Tasks: T4021 Differential Revision: https://secure.phabricator.com/D9250
33 lines
917 B
PHP
33 lines
917 B
PHP
<?php
|
|
|
|
$project_table = new PhabricatorProject();
|
|
$table_name = $project_table->getTableName();
|
|
$conn_w = $project_table->establishConnection('w');
|
|
$slug_table_name = id(new PhabricatorProjectSlug())->getTableName();
|
|
$time = time();
|
|
|
|
echo "Migrating project phriction slugs...\n";
|
|
foreach (new LiskMigrationIterator($project_table) as $project) {
|
|
$id = $project->getID();
|
|
|
|
echo "Migrating project {$id}...\n";
|
|
$phriction_slug = rtrim($project->getPhrictionSlug(), '/');
|
|
$slug = id(new PhabricatorProjectSlug())
|
|
->loadOneWhere('slug = %s', $phriction_slug);
|
|
if ($slug) {
|
|
echo "Already migrated {$id}... Continuing.\n";
|
|
continue;
|
|
}
|
|
queryfx(
|
|
$conn_w,
|
|
'INSERT INTO %T (projectPHID, slug, dateCreated, dateModified) '.
|
|
'VALUES (%s, %s, %d, %d)',
|
|
$slug_table_name,
|
|
$project->getPHID(),
|
|
$phriction_slug,
|
|
$time,
|
|
$time);
|
|
echo "Migrated {$id}.\n";
|
|
}
|
|
|
|
echo "Done.\n";
|