1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 16:22:43 +01:00
phorge-phorge/resources/sql/patches/20131020.pxactionmig.php
Austin McKinley f92059d84c Migrate Project status to modular transactions
Test Plan: Unit tests pass. Archived/activated some projects a couple times; observed expected transactions on timeline.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D17953
2017-05-18 11:36:13 -07:00

91 lines
2.3 KiB
PHP

<?php
$project_table = new PhabricatorProject();
$conn_w = $project_table->establishConnection('w');
$conn_w->openTransaction();
$src_table = 'project_legacytransaction';
$dst_table = 'project_transaction';
echo pht('Migrating Project transactions to new format...')."\n";
$content_source = PhabricatorContentSource::newForSource(
PhabricatorOldWorldContentSource::SOURCECONST)->serialize();
$rows = new LiskRawMigrationIterator($conn_w, $src_table);
foreach ($rows as $row) {
$id = $row['id'];
$project_id = $row['projectID'];
echo pht('Migrating transaction #%d (Project %d)...', $id, $project_id)."\n";
$project_row = queryfx_one(
$conn_w,
'SELECT phid FROM %T WHERE id = %d',
$project_table->getTableName(),
$project_id);
if (!$project_row) {
continue;
}
$project_phid = $project_row['phid'];
$type_map = array(
'name' => PhabricatorProjectNameTransaction::TRANSACTIONTYPE,
'members' => PhabricatorProjectTransaction::TYPE_MEMBERS,
'status' => PhabricatorProjectStatusTransaction::TRANSACTIONTYPE,
'canview' => PhabricatorTransactions::TYPE_VIEW_POLICY,
'canedit' => PhabricatorTransactions::TYPE_EDIT_POLICY,
'canjoin' => PhabricatorTransactions::TYPE_JOIN_POLICY,
);
$new_type = idx($type_map, $row['transactionType']);
if (!$new_type) {
continue;
}
$xaction_phid = PhabricatorPHID::generateNewPHID(
PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST,
PhabricatorProjectProjectPHIDType::TYPECONST);
queryfx(
$conn_w,
'INSERT IGNORE INTO %T
(phid, authorPHID, objectPHID,
viewPolicy, editPolicy, commentPHID, commentVersion, transactionType,
oldValue, newValue, contentSource, metadata,
dateCreated, dateModified)
VALUES
(%s, %s, %s,
%s, %s, %ns, %d, %s,
%s, %s, %s, %s,
%d, %d)',
$dst_table,
// PHID, Author, Object
$xaction_phid,
$row['authorPHID'],
$project_phid,
// View, Edit, Comment, Version, Type
'public',
$row['authorPHID'],
null,
0,
$new_type,
// Old, New, Source, Meta,
$row['oldValue'],
$row['newValue'],
$content_source,
'{}',
// Created, Modified
$row['dateCreated'],
$row['dateModified']);
}
$conn_w->saveTransaction();
echo pht('Done.')."\n";