@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<?php
2
3$project_table = new PhabricatorProject();
4$table_name = $project_table->getTableName();
5$conn_w = $project_table->establishConnection('w');
6$slug_table_name = id(new PhabricatorProjectSlug())->getTableName();
7$time = PhabricatorTime::getNow();
8
9echo pht('Migrating projects to slugs...')."\n";
10foreach (new LiskMigrationIterator($project_table) as $project) {
11 $id = $project->getID();
12
13 echo pht('Migrating project %d...', $id)."\n";
14
15 $slug_text = PhabricatorSlug::normalizeProjectSlug($project->getName());
16 $slug = id(new PhabricatorProjectSlug())
17 ->loadOneWhere('slug = %s', $slug_text);
18
19 if ($slug) {
20 echo pht('Already migrated %d... Continuing.', $id)."\n";
21 continue;
22 }
23
24 queryfx(
25 $conn_w,
26 'INSERT INTO %T (projectPHID, slug, dateCreated, dateModified) '.
27 'VALUES (%s, %s, %d, %d)',
28 $slug_table_name,
29 $project->getPHID(),
30 $slug_text,
31 $time,
32 $time);
33 echo pht('Migrated %d.', $id)."\n";
34}
35
36echo pht('Done.')."\n";