* Convert process into configuration for upgrade.

This commit is contained in:
wangyidong
2023-11-25 14:57:22 +08:00
parent 622757815d
commit 3608679b9d
6 changed files with 374 additions and 687 deletions
+12
View File
@@ -292,6 +292,18 @@ class baseDAO
$this->dbh->beginTransaction();
}
/**
* 检查是否在事务内。
* Check in transaction.
*
* @access public
* @return bool
*/
public function inTransaction()
{
$this->dbh->inTransaction();
}
/**
* 事务回滚。
* Roll back
+2
View File
@@ -976,3 +976,5 @@ $config->upgrade->recoveryActions->testcase->review['open'] = 'normal';
$config->upgrade->recoveryActions->testcase->review['position'] = 'browseandview';
$config->upgrade->missedFlowFieldVersions = array('max4_4_alpha1', 'max4_4_beta1', 'max4_4', 'max4_5', 'biz8_4_alpha1', 'biz8_4_beta1', 'biz8_4', 'biz8_5');
include dirname(__FILE__) . DS . 'config' . DS . 'upgradeflow.php';
+160
View File
@@ -0,0 +1,160 @@
<?php
global $app;
$appRoot = str_replace(DS, '/', $app->getAppRoot());
$config->upgrade->execFlow = array();
$config->upgrade->execFlow['1_0beta'] = array('functions' => 'updateCompany');
$config->upgrade->execFlow['1_2'] = array('functions' => 'updateUBB,updateNL1_2');
$config->upgrade->execFlow['1_3'] = array('functions' => 'updateNL1_3,updateTasks');
$config->upgrade->execFlow['2_2'] = array('functions' => 'updateCases,updateActivatedCountOfBug');
$config->upgrade->execFlow['3_0_beta1'] = array('functions' => 'updateAction,setOrderData');
$config->upgrade->execFlow['3_3'] = array('functions' => 'updateTaskAssignedTo');
$config->upgrade->execFlow['4_0_beta2'] = array('functions' => 'updateProjectType,updateEstimatePriv');
$config->upgrade->execFlow['4_0_1'] = array('functions' => 'addPriv4_0_1');
$config->upgrade->execFlow['4_1'] = array('functions' => 'addPriv4_1,processTaskFinish,deleteCompany');
$config->upgrade->execFlow['5_2_1'] = array('functions' => 'mergeProjectGoalAndDesc');
$config->upgrade->execFlow['6_0_beta1'] = array('functions' => 'toLowerTable,fixBugOSInfo,fixTaskFinishedBy');
$config->upgrade->execFlow['6_0'] = array('functions' => 'fixDataIndex');
$config->upgrade->execFlow['7_1'] = array('functions' => 'initOrder');
$config->upgrade->execFlow['7_3'] = array('functions' => 'adjustPriv7_4_beta');
$config->upgrade->execFlow['8_0_1'] = array('functions' => 'addPriv8_1');
$config->upgrade->execFlow['8_1_3'] = array('functions' => 'addPriv8_2_beta,adjustConfigSectionAndKey');
$config->upgrade->execFlow['8_2_6'] = array('functions' => 'adjustDocModule,moveDocContent,adjustPriv8_3');
$config->upgrade->execFlow['8_3_1'] = array('functions' => 'renameMainLib,adjustPriv8_4');
$config->upgrade->execFlow['9_0_beta'] = array('functions' => 'adjustPriv9_0');
$config->upgrade->execFlow['9_0'] = array('functions' => 'fixProjectProductData');
$config->upgrade->execFlow['9_0_1'] = array('functions' => 'addBugDeadlineToCustomFields,adjustPriv9_0_1');
$config->upgrade->execFlow['9_1_2'] = array('functions' => 'processCustomMenus,adjustPriv9_2');
$config->upgrade->execFlow['9_4'] = array('functions' => 'adjustPriv9_4');
$config->upgrade->execFlow['9_5_1'] = array('functions' => 'initProjectStoryOrder');
$config->upgrade->execFlow['9_6'] = array('functions' => 'fixDatatableColsConfig');
$config->upgrade->execFlow['9_6_1'] = array('functions' => 'addLimitedGroup');
$config->upgrade->execFlow['9_6_3'] = array('functions' => 'changeLimitedName,adjustPriv9_7,changeStoryWidth');
$config->upgrade->execFlow['9_7'] = array('functions' => 'changeTeamFields,moveData2Notify');
$config->upgrade->execFlow['9_8'] = array('functions' => 'fixTaskFinishedInfo');
$config->upgrade->execFlow['9_8_1'] = array('functions' => 'fixTaskAssignedTo,fixProjectClosedInfo,resetProductLine');
$config->upgrade->execFlow['9_8_2'] = array('functions' => 'addUniqueKeyToTeam');
$config->upgrade->execFlow['9_8_3'] = array('functions' => 'adjustPriv10_0_alpha');
$config->upgrade->execFlow['10_0_alpha'] = array('functions' => 'fixProjectStatisticBlock');
$config->upgrade->execFlow['10_0'] = array('functions' => 'fixStorySpecTitle,removeUnlinkPriv');
$config->upgrade->execFlow['10_1'] = array('xxsqls' => "$appRoot/db/xuanxuan.sql");
$config->upgrade->execFlow['10_3_1'] = array('functions' => 'removeCustomMenu');
$config->upgrade->execFlow['10_4'] = array('functions' => 'changeTaskParentValue');
$config->upgrade->execFlow['10_4'] = array('functions' => 'initXuanxuan', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.1.0.sql,$appRoot/db/upgradexuanxuan2.2.0.sql");
$config->upgrade->execFlow['11_1'] = array('functions' => 'syncXXHttpsConfig', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.3.0.sql");
$config->upgrade->execFlow['11_2'] = array('functions' => 'processDocLibAcl');
$config->upgrade->execFlow['11_3'] = array('functions' => 'addPriv11_4');
$config->upgrade->execFlow['11_4_1'] = array('functions' => 'addPriv11_5,updateXX_11_5', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.4.0.sql,$appRoot/db/upgradexuanxuan2.5.0.sql");
$config->upgrade->execFlow['11_6_1'] = array('functions' => 'adjustWebhookType,adjustPriv11_6_2');
$config->upgrade->execFlow['11_6_3'] = array('functions' => 'adjustPriv11_6_4');
$config->upgrade->execFlow['11_6_5'] = array('functions' => 'fixGroupAcl,fixBugTypeList,adjustPriv11_7,rmEditorAndTranslateDir,setConceptSetted', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.5.7.sql,$appRoot/db/upgradexuanxuan3.0.0-beta.1.sql,$appRoot/db/upgradexuanxuan3.0-beta3.sql");
$config->upgrade->execFlow['11_7'] = array('functions' => 'adjustPriv12_0');
$config->upgrade->execFlow['12_0_1'] = array('functions' => 'importRepoFromConfig');
$config->upgrade->execFlow['12_1'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan3.1.1.sql");
$config->upgrade->execFlow['12_3_3'] = array('functions' => 'addPriv12_3_3,processImport2TaskBugs');
$config->upgrade->execFlow['12_4_2'] = array('functions' => 'fixFromCaseVersion,initStoryOfPlan');
$config->upgrade->execFlow['12_4_4'] = array('functions' => 'adjustPriv12_5');
$config->upgrade->execFlow['12_5_3'] = array('functions' => 'adjustWhitelistOfProject,adjustWhitelistOfProduct,adjustPriv15_0');
$config->upgrade->execFlow['15_0_rc1'] = array('functions' => 'adjustUserView');
$config->upgrade->execFlow['15_0_rc3'] = array('functions' => 'updateLibType,updateRunCaseStatus,fix4TaskLinkProject,fixExecutionTeam', 'xxsqls' => "$appRoot/db/upgradexuanxuan3.3.sql,$appRoot/db/upgradexuanxuan4.0.sql,$appRoot/db/upgradexuanxuan4.0.beta2.sql,$appRoot/db/upgradexuanxuan4.0.beta3.sql");
$config->upgrade->execFlow['15_0'] = array('functions' => 'adjustBugOfProject,processBuildTable,updateProductVersion');
$config->upgrade->execFlow['15_0_2'] = array('functions' => 'uniqueProjectAdmin');
$config->upgrade->execFlow['15_2'] = array('functions' => 'processGitlabRepo,processStoryFileType,processProductDoc,adjustPriv15_3');
$config->upgrade->execFlow['15_3'] = array('functions' => 'adjustBugRequired,processTesttaskDate,processDocTempContent');
$config->upgrade->execFlow['15_4'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan4.2.sql,$appRoot/db/upgradexuanxuan4.4.sql");
$config->upgrade->execFlow['15_5'] = array('functions' => 'addDefaultKanbanPri');
$config->upgrade->execFlow['15_7_1'] = array('functions' => 'updateObjectBranch,updateProjectStories,updateProjectLinkedBranch');
$config->upgrade->execFlow['16_0_beta1'] = array('functions' => 'createDemoAPI');
$config->upgrade->execFlow['16_1'] = array('functions' => 'moveKanbanData');
$config->upgrade->execFlow['16_2'] = array('functions' => 'updateSpaceTeam,updateDocField');
$config->upgrade->execFlow['16_4'] = array('functions' => 'updateActivatedDate,completionAllSQL,updateGroup4Lite', 'xxsqls' => "$appRoot/db/upgradexuanxuan4.6.sql,$appRoot/db/upgradexuanxuan5.1.sql");
$config->upgrade->execFlow['16_5'] = array('functions' => 'updateProjectStatus,updateStoryReviewer');
$config->upgrade->execFlow['17_0_beta1'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan5.5.sql");
$config->upgrade->execFlow['17_0_beta2'] = array('functions' => 'changeStoryNeedReview');
$config->upgrade->execFlow['17_0'] = array('functions' => 'replaceSetLanePriv,updateProjectData');
$config->upgrade->execFlow['17_1'] = array('functions' => 'moveProjectAdmins,addStoryViewPriv', 'xxsqls' => "$appRoot/db/upgradexuanxuan5.6.sql", 'xxfunctions' => 'xuanAddMessageIndexColumns,xuanReindexMessages,xuanUpdateLastReadMessageIndex,xuanFixChatsWithoutLastRead');
$config->upgrade->execFlow['17_3'] = array('functions' => 'processBugLinkBug');
$config->upgrade->execFlow['17_4'] = array('functions' => 'rebuildFULLTEXT,updateSearchIndex', 'xxfunctions' => 'addAdminInviteField');
$config->upgrade->execFlow['17_5'] = array('functions' => 'updateOSAndBrowserOfBug,addURPriv,updateStoryStatus,syncCase2Project');
$config->upgrade->execFlow['17_6'] = array('functions' => 'updateStoryFile,convertTaskteam,convertEstToEffort,fixWeeklyReport,xuanSetOwnedByForGroups,xuanRecoverCreatedDates,xuanSetPartitionedMessageIndex');
$config->upgrade->execFlow['17_6_1'] = array('functions' => 'updateProductView');
$config->upgrade->execFlow['17_6_2'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan6.4.sql");
$config->upgrade->execFlow['17_8'] = array('functions' => 'xuanSetMuteForHiddenGroups,xuanNotifyGroupHiddenUsers,initShadowBuilds', 'xxsqls' => "$appRoot/db/upgradexuanxuan6.5.sql");
$config->upgrade->execFlow['18_0_beta1'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan6.6.sql");
$config->upgrade->execFlow['18_0_beta3'] = array('functions' => 'updateMyBlocks');
$config->upgrade->execFlow['18_1'] = array('functions' => 'insertMixStage');
$config->upgrade->execFlow['18_2'] = array('functions' => 'setting-setSN');
$config->upgrade->execFlow['18_3'] = array('functions' => 'changeBookToCustomLib,createDefaultDimension,convertDocCollect,addBIUpdateMark');
$config->upgrade->execFlow['18_4_alpha1'] = array('functions' => 'setURSwitchStatus');
$config->upgrade->execFlow['18_4'] = array('functions' => 'fixMissedFlowField', 'xxsqls' => "$appRoot/db/upgradexuanxuan7.1.sql,$appRoot/db/upgradexuanxuan7.2.beta.sql");
$config->upgrade->execFlow['18_5'] = array('functions' => 'installIPD,updatePivotFieldsType,addCreateAction4Story');
$config->upgrade->execFlow['18_6'] = array('functions' => 'removeProductLineRequired');
$config->upgrade->execFlow['18_7'] = array('functions' => 'processHistoryDataForMetric,metric-updateMetricDate');
$config->upgrade->execFlow['18_8'] = array('functions' => 'upgradeTesttaskMembers,deleteGeneralReportBlock,stopOldCron');
if(!empty($config->isINT))
{
unset($config->upgrade->execFlow['11_1']);
unset($config->upgrade->execFlow['12_1']);
unset($config->upgrade->execFlow['15_4']);
unset($config->upgrade->execFlow['11_4_1']['xxsqls']);
unset($config->upgrade->execFlow['11_6_5']['xxsqls']);
unset($config->upgrade->execFlow['15_0_rc3']['xxsqls']);
$config->upgrade->execFlow['11_4_1']['functions'] = 'addPriv11_5';
$config->upgrade->execFlow['16_4']['xxsqls'] = "$appRoot/db/xuanxuan.sql";
}
if($config->edition == 'max')
{
$config->upgrade->execFlow['16_5']['functions'] .= ',moveResult2Node';
$config->upgrade->execFlow['17_2']['functions'] = 'addReviewIssusApprovalData';
$config->upgrade->execFlow['18_0_beta1']['functions'] = 'initReviewEfforts';
}
if($config->edition != 'open')
{
$config->upgrade->execFlow['17_0_beta1']['functions'] = 'processViewFields';
$config->upgrade->execFlow['17_0']['functions'] .= ',processFlowPosition';
$config->upgrade->execFlow['17_4']['functions'] .= ',processCreatedInfo,processCreatedBy,updateApproval,addDefaultRuleToWorkflow,processReviewLinkages,addFlowActions,addFlowFields';
$config->upgrade->execFlow['17_4']['params']['addFlowActions'] = array('biz7.4');
$config->upgrade->execFlow['17_4']['params']['addFlowFields'] = array('biz7.4');
$config->upgrade->execFlow['17_6_2']['functions'] = 'processFeedbackModule';
$config->upgrade->execFlow['18_3']['functions'] .= ',processDataset,processChart,processReport,processDashboard';
$config->upgrade->execFlow['18_4_beta1']['functions'] = 'processDeployStepAction,updateBISQL,checkPivotSQL';
}
if(in_array($this->config->edition, array('max', 'ipd'))) $config->upgrade->execFlow['18_7']['functions'] = 'processOldMetrics,processHistoryDataForMetric,metric-updateMetricDate';
$config->upgrade->execFlow['pro3_2_1'] = array('functions' => 'recordFinished');
$config->upgrade->execFlow['pro3_3'] = array('functions' => 'toLowerTable', 'params' => array('toLowerTable' => array('pro')));
$config->upgrade->execFlow['pro4_0'] = array('functions' => 'fixRepo');
$config->upgrade->execFlow['pro7_0_beta'] = array('functions' => 'fixReport');
$config->upgrade->execFlow['pro8_8'] = array('functions' => 'checkURAndSR');
$config->upgrade->execFlow['pro10_0_2'] = array('functions' => 'fixReportLang');
$config->upgrade->execFlow['pro10_2'] = array('functions' => 'addDefaultKanbanPri');
$config->upgrade->execFlow['biz2_3_1'] = array('functions' => 'adjustFeedbackViewData');
$config->upgrade->execFlow['biz3_4'] = array('functions' => 'importBuildinModules');
$config->upgrade->execFlow['biz3_5_alpha'] = array('functions' => 'addSubStatus');
$config->upgrade->execFlow['biz3_5_beta'] = array('functions' => 'processSubTables');
$config->upgrade->execFlow['biz3_6'] = array('functions' => 'addDefaultActions,importCaseLibModule,deleteBuildinFields');
$config->upgrade->execFlow['biz3_6_1'] = array('functions' => 'addWorkflowActions,processWorkflowLayout,processWorkflowLabel,processWorkflowCondition');
$config->upgrade->execFlow['biz3_7'] = array('functions' => 'processWorkflowFields');
$config->upgrade->execFlow['biz3_7_2'] = array('functions' => 'processFlowStatus');
$config->upgrade->execFlow['biz4_0_1'] = array('functions' => 'addMailtoFields');
$config->upgrade->execFlow['biz4_0_3'] = array('functions' => 'updateAttendStatus,initView4WorkflowDatasource');
$config->upgrade->execFlow['biz5_0'] = array('functions' => 'adjustPrivBiz5_0_1');
$config->upgrade->execFlow['biz5_0_1'] = array('functions' => 'updateWorkflow4Execution');
$config->upgrade->execFlow['biz5_2'] = array('functions' => 'addDefaultKanbanPri');
$config->upgrade->execFlow['biz5_3_1'] = array('functions' => 'processFeedbackField,addFileFields,addReportActions');
$config->upgrade->execFlow['biz6_4'] = array('functions' => 'importLiteModules');
if(!empty($config->isINT))
{
$config->upgrade->execFlow['biz3_0'] = array('xxfunctions' => 'syncXXHttpsConfig', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.3.0.sql");
$config->upgrade->execFlow['biz3_2_1'] = array('functions' => 'updateXX_11_5', 'xxsqls' => "$appRoot/db/upgradexuanxuan2.4.0.sql,$appRoot/db/upgradexuanxuan2.5.0.sql");
$config->upgrade->execFlow['biz3_6_1']['xxsqls'] = "$appRoot/db/upgradexuanxuan3.1.1.sql";
}
$config->upgrade->execFlow['max2_2'] = array('functions' => 'addDefaultKanbanPri');
+2 -2
View File
@@ -122,7 +122,6 @@ class upgrade extends control
if (!is_writable($this->app->getTmpRoot())) $writable = false;
if(file_exists($this->app->getTmpRoot() . 'upgradeSqlLines')) @unlink($this->app->getTmpRoot() . 'upgradeSqlLines');
$confirmSql = $this->upgrade->getConfirm($fromVersion);
$confirmSql = str_replace('ENGINE=InnoDB', 'ENGINE=MyISAM', $confirmSql);
$this->session->set('step', '');
$this->view->title = $this->lang->upgrade->confirm;
@@ -164,6 +163,7 @@ class upgrade extends control
$rawFromVersion = isset($_POST['fromVersion']) ? $this->post->fromVersion : $fromVersion;
if(strpos($fromVersion, 'lite') !== false) $rawFromVersion = $this->config->upgrade->liteVersion[$fromVersion];
if(strpos($fromVersion, 'ipd') !== false) $rawFromVersion = $this->config->upgrade->ipdVersion[$fromVersion];
$this->dao->begin();
$this->upgrade->execute($rawFromVersion);
if(!$this->upgrade->isError())
@@ -920,7 +920,7 @@ class upgrade extends control
{
set_time_limit(0);
$alterSQL = $this->upgrade->checkConsistency();
$alterSQL = str_replace('ENGINE=InnoDB', 'ENGINE=MyISAM', $alterSQL);
$alterSQL = str_replace('ENGINE=MyISAM', 'ENGINE=InnoDB', $alterSQL);
if(empty($alterSQL))
{
if(!$netConnect) $this->locate(inlink('selectVersion'));
+197 -684
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -63,7 +63,7 @@ $app->setDebug();
/* Check the installed version is the latest or not. */
$config->installedVersion = $common->loadModel('setting')->getVersion();
if(($config->version[0] == $config->installedVersion[0] or (is_numeric($config->version[0]) and is_numeric($config->installedVersion[0]))) and version_compare($config->version, $config->installedVersion) <= 0) die(header('location: index.php'));
if(!$app->session->upgrading && ($config->version[0] == $config->installedVersion[0] or (is_numeric($config->version[0]) and is_numeric($config->installedVersion[0]))) and version_compare($config->version, $config->installedVersion) <= 0) die(header('location: index.php'));
/* If run in container, upgrade automatically. */
if($app->isContainer())