@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// Was PhabricatorEdgeConfig::TYPE_COLUMN_HAS_OBJECT
4$type_has_object = 44;
5
6$column = new PhabricatorProjectColumn();
7$conn_w = $column->establishConnection('w');
8
9$rows = queryfx_all(
10 $conn_w,
11 'SELECT src, dst FROM %T WHERE type = %d',
12 PhabricatorEdgeConfig::TABLE_NAME_EDGE,
13 $type_has_object);
14
15$cols = array();
16foreach ($rows as $row) {
17 $cols[$row['src']][] = $row['dst'];
18}
19
20$sql = array();
21foreach ($cols as $col_phid => $obj_phids) {
22 echo pht("Migrating column '%s'...", $col_phid)."\n";
23 $column = id(new PhabricatorProjectColumn())->loadOneWhere(
24 'phid = %s',
25 $col_phid);
26 if (!$column) {
27 echo pht("Column '%s' does not exist.", $col_phid)."\n";
28 continue;
29 }
30
31 $sequence = 0;
32 foreach ($obj_phids as $obj_phid) {
33 $sql[] = qsprintf(
34 $conn_w,
35 '(%s, %s, %s, %d)',
36 $column->getProjectPHID(),
37 $column->getPHID(),
38 $obj_phid,
39 $sequence++);
40 }
41}
42
43echo pht('Inserting rows...')."\n";
44foreach (PhabricatorLiskDAO::chunkSQL($sql) as $chunk) {
45 queryfx(
46 $conn_w,
47 'INSERT INTO %T (boardPHID, columnPHID, objectPHID, sequence)
48 VALUES %LQ',
49 id(new PhabricatorProjectColumnPosition())->getTableName(),
50 $chunk);
51}
52
53echo pht('Done.')."\n";