30 if (!$dbManager->existsTable(
'license_ref')) {
36 $row = $dbManager->getSingleRow(
38 (SELECT rf_pk FROM license_ref WHERE rf_shortname='CMU' LIMIT 1) AS cmu_id,
39 (SELECT rf_pk FROM license_ref WHERE rf_shortname='CMU-Mach' LIMIT 1) AS cmu_mach_id",
41 __METHOD__ .
'.getIds'
44 $cmuId = (!empty($row) && !empty($row[
'cmu_id'])) ? intval($row[
'cmu_id']) : 0;
45 $cmuMachId = (!empty($row) && !empty($row[
'cmu_mach_id'])) ? intval($row[
'cmu_mach_id']) : 0;
48 if ($cmuId > 0 && $cmuMachId === 0) {
49 $dbManager->queryOnce(
51 SET rf_shortname='CMU-Mach',
52 rf_fullname='CMU Mach License',
53 rf_url='https://www.cs.cmu.edu/~410/licenses.html'
55 __METHOD__ .
'.renameOnlyCmu'
62 if ($cmuId > 0 && $cmuMachId > 0 && $cmuId !== $cmuMachId) {
65 "UPDATE clearing_event SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
66 "UPDATE license_file SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
67 "UPDATE license_map SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
68 "UPDATE license_set_bulk SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
69 "UPDATE obligation_map SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
70 "UPDATE upload_clearing_license SET rf_fk=$cmuMachId WHERE rf_fk=$cmuId",
72 "UPDATE comp_result SET first_rf_fk=$cmuMachId WHERE first_rf_fk=$cmuId",
73 "UPDATE comp_result SET second_rf_fk=$cmuMachId WHERE second_rf_fk=$cmuId",
74 "UPDATE license_rules SET first_rf_fk=$cmuMachId WHERE first_rf_fk=$cmuId",
75 "UPDATE license_rules SET second_rf_fk=$cmuMachId WHERE second_rf_fk=$cmuId",
78 foreach ($updates as $sql) {
79 $dbManager->queryOnce($sql, __METHOD__ .
'.moveRefs');
83 $dbManager->queryOnce(
84 "DELETE FROM license_ref WHERE rf_pk=$cmuId",
85 __METHOD__ .
'.deleteLegacyCmu'
89 if ($dbManager->existsTable(
'report_info')) {
90 $pattern =
'(^|[^A-Za-z0-9-])CMU([^A-Za-z0-9-]|$)';
91 $replacement =
'\\1CMU-Mach\\2';
93 $stmtName = __METHOD__ .
'.updateReportInfoExcludedObligations';
94 $sql =
"UPDATE report_info
95 SET ri_excluded_obligations = regexp_replace(COALESCE(ri_excluded_obligations::text, ''), $1, $2, 'g')::json
96 WHERE ri_excluded_obligations IS NOT NULL
97 AND ri_excluded_obligations::text ~ $1";
98 $dbManager->prepare($stmtName, $sql);
99 $res = $dbManager->execute($stmtName, array($pattern, $replacement));
100 $dbManager->freeResult($res);
103 $dbManager->commit();
Migrate_Cmu_Mach(DbManager $dbManager, $verbose=false)