From e253dea35d597dbb8d38b9f5b35715f832ff4fa7 Mon Sep 17 00:00:00 2001 From: wangyuting Date: Mon, 7 Apr 2025 13:11:27 +0800 Subject: [PATCH] * [bug#60998,doing,2h,0h] Fix import jira file larger than 10MB error. --- module/convert/model.php | 20 ++++++++++++++++++-- module/convert/tao.php | 8 ++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/module/convert/model.php b/module/convert/model.php index 324435c7ba..9d1db2aa39 100644 --- a/module/convert/model.php +++ b/module/convert/model.php @@ -224,10 +224,19 @@ class convertModel extends model $xmlContent = file_get_contents($filePath); $xmlContent = preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $xmlContent); - $parsedXML = simplexml_load_string($xmlContent, 'SimpleXMLElement', LIBXML_NOCDATA); + + $reader = new XMLReader(); + $dom = new DOMDocument(); + $reader->XML($xmlContent); + while($reader->read() && $reader->nodeType != XMLReader::ELEMENT) continue; + + $domNode = $reader->expand($dom); + $reader->close(); + + $parsedXML = simplexml_import_dom($domNode); + $parsedXML = $this->object2Array($parsedXML); $dataList = array(); - $parsedXML = $this->object2Array($parsedXML); foreach($parsedXML as $key => $xmlArray) { if(strtolower($key) != strtolower($fileName)) continue; @@ -245,6 +254,7 @@ class convertModel extends model $dataID = 0; foreach($attributes as $k => $value) { + if(empty($value)) continue; if(is_array($value)) { if(isset($value['status']) && $value['status'] == 'deleted') break; @@ -316,6 +326,7 @@ class convertModel extends model while(!feof($handle)) { $itemStr = fgets($handle); + if(empty($itemStr)) continue; foreach($tagList as $startName => $endName) { $startName .= ' '; @@ -974,6 +985,11 @@ EOT; { foreach($parsedXML as $key => $value) { + if(is_object($value) && empty($value)) + { + $parsedXML[$key] = (string)$value; + continue; + } if(!is_object($value) && !is_array($value)) continue; $parsedXML[$key] = $this->object2Array($value); } diff --git a/module/convert/tao.php b/module/convert/tao.php index 6d2c6bd714..0785cd94bd 100644 --- a/module/convert/tao.php +++ b/module/convert/tao.php @@ -838,7 +838,7 @@ class convertTao extends convertModel $data->{$fieldValue->customfield} = $fieldValue->stringvalue; } - $fieldKey = $customFields[$fieldValue->customfield]->customfieldtypekey; + $fieldKey = !empty($customFields[$fieldValue->customfield]) ? $customFields[$fieldValue->customfield]->customfieldtypekey : ''; if($fieldKey == 'com.pyxis.greenhopper.jira:gh-sprint' && !empty($sprintRelation[$fieldValue->stringvalue])) $data->execution = $sprintRelation[$fieldValue->stringvalue]; } } @@ -950,6 +950,7 @@ class convertTao extends convertModel if(!empty($versionRelation[$data->id])) continue; $buildProject = $data->project; + if(empty($projectRelation[$buildProject])) continue; $projectID = $projectRelation[$buildProject]; $productID = $projectProduct[$projectID]; $system = !empty($productSystem[$productID]) ? $productSystem[$productID]->id : 0; @@ -1961,6 +1962,7 @@ class convertTao extends convertModel foreach($versionGroup[$versionid] as $issue) { $issueID = $issue->issueid; + if(empty($issueList[$issueID])) continue; $objectID = zget($issueList[$issueID], 'BID', ''); $issueType = zget($issueList[$issueID], 'BType', ''); if(!$issueType || ($issueType != 'zstory' && $issueType != 'zbug')) continue; @@ -2015,7 +2017,7 @@ class convertTao extends convertModel $release->date = helper::isZeroDate($data->startdate) ? NULL : substr($data->startdate, 0, 10); $release->desc = isset($data->description) ? $data->description : ''; $release->status = $status; - $release->releasedDate = !empty($data->released) ? substr($data->releasedate, 0, 10) : null; + $release->releasedDate = !empty($data->released) && !empty($data->releasedDate) ? substr($data->releasedate, 0, 10) : null; $release->createdBy = $this->app->user->account; $release->createdDate = helper::now(); $this->dao->dbh($this->dbh)->insert(TABLE_RELEASE)->data($release)->exec(); @@ -2026,6 +2028,8 @@ class convertTao extends convertModel foreach($releaseIssue as $issue) { $issueID = $issue->issueid; + if(empty($issueList[$issueID])) continue; + $objectID = zget($issueList[$issueID], 'BID', ''); $issueType = zget($issueList[$issueID], 'BType', ''); if(!$issueType || ($issueType != 'zstory' && $issueType != 'zbug')) continue;