@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$conn_w = $project_table->establishConnection('w');
5$conn_w->openTransaction();
6
7$src_table = 'project_legacytransaction';
8$dst_table = 'project_transaction';
9
10echo pht('Migrating Project transactions to new format...')."\n";
11
12$content_source = PhabricatorContentSource::newForSource(
13 PhabricatorOldWorldContentSource::SOURCECONST)->serialize();
14
15$rows = new LiskRawMigrationIterator($conn_w, $src_table);
16foreach ($rows as $row) {
17 $id = $row['id'];
18
19 $project_id = $row['projectID'];
20
21 echo pht('Migrating transaction #%d (Project %d)...', $id, $project_id)."\n";
22
23 $project_row = queryfx_one(
24 $conn_w,
25 'SELECT phid FROM %T WHERE id = %d',
26 $project_table->getTableName(),
27 $project_id);
28 if (!$project_row) {
29 continue;
30 }
31
32 $project_phid = $project_row['phid'];
33
34 $type_map = array(
35 'name' => PhabricatorProjectNameTransaction::TRANSACTIONTYPE,
36 'members' => PhabricatorProjectTransaction::TYPE_MEMBERS,
37 'status' => PhabricatorProjectStatusTransaction::TRANSACTIONTYPE,
38 'canview' => PhabricatorTransactions::TYPE_VIEW_POLICY,
39 'canedit' => PhabricatorTransactions::TYPE_EDIT_POLICY,
40 'canjoin' => PhabricatorTransactions::TYPE_JOIN_POLICY,
41 );
42
43 $new_type = idx($type_map, $row['transactionType']);
44 if (!$new_type) {
45 continue;
46 }
47
48 $xaction_phid = PhabricatorPHID::generateNewPHID(
49 PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST,
50 PhabricatorProjectProjectPHIDType::TYPECONST);
51
52 queryfx(
53 $conn_w,
54 'INSERT IGNORE INTO %T
55 (phid, authorPHID, objectPHID,
56 viewPolicy, editPolicy, commentPHID, commentVersion, transactionType,
57 oldValue, newValue, contentSource, metadata,
58 dateCreated, dateModified)
59 VALUES
60 (%s, %s, %s,
61 %s, %s, %ns, %d, %s,
62 %s, %s, %s, %s,
63 %d, %d)',
64 $dst_table,
65
66 // PHID, Author, Object
67 $xaction_phid,
68 $row['authorPHID'],
69 $project_phid,
70
71 // View, Edit, Comment, Version, Type
72 'public',
73 $row['authorPHID'],
74 null,
75 0,
76 $new_type,
77
78 // Old, New, Source, Meta,
79 $row['oldValue'],
80 $row['newValue'],
81 $content_source,
82 '{}',
83
84 // Created, Modified
85 $row['dateCreated'],
86 $row['dateModified']);
87
88}
89
90$conn_w->saveTransaction();
91echo pht('Done.')."\n";