private function addAllChangesets(DOMElement $artifact_node, $tracker_id, $artifact_id, array $artifact) { $this->initial_changeset = $this->getBareChangeset($artifact['submitted_by'], 0, $artifact['open_date']); $artifact_node->appendChild($this->initial_changeset); $previous_changeset = $this->initial_changeset; $history = $this->dao->searchHistory($artifact_id); foreach ($history as $row) { try { if (!$this->comment_exporter->updateComment($row)) { $node = $this->getChangeset($previous_changeset, $tracker_id, $artifact_id, $row); $artifact_node->appendChild($node); $previous_changeset = $node; } } catch (Exception_TV3XMLException $exception) { $this->logger->warn("Artifact {$artifact_id}: skip changeset (" . $row['field_name'] . ", " . $row['submitted_by'] . ", " . date('c', $row['date']) . "): " . $exception->getMessage()); } catch (Exception $exception) { $this->logger->error("Artifact {$artifact_id}: skip changeset (" . $row['field_name'] . ", " . $row['submitted_by'] . ", " . date('c', $row['date']) . "): " . $exception->getMessage()); } } try { $current_fields_values = $this->getCurrentFieldsValues($tracker_id, $artifact_id, $artifact); $this->updateInitialChangesetVersusCurrentStatus($tracker_id, $artifact_id, $current_fields_values); } catch (Exception_TV3XMLException $exception) { $this->logger->warn("Artifact {$artifact_id}: skip update of first changeset: " . $exception->getMessage()); } catch (Exception $exception) { $this->logger->error("Artifact {$artifact_id}: skip update of first changeset: " . $exception->getMessage()); } try { $this->addLastChangesetIfNoHistoryRecorded($artifact_node, $tracker_id, $artifact_id, $current_fields_values); } catch (Exception_TV3XMLException $exception) { $this->logger->warn("Artifact {$artifact_id}: skip last changeset if no history: " . $exception->getMessage()); } catch (Exception $exception) { $this->logger->error("Artifact {$artifact_id}: skip last changeset if no history: " . $exception->getMessage()); } try { $this->addPermissionOnArtifactAtTheVeryEnd($artifact_node, $artifact_id); } catch (Exception_TV3XMLException $exception) { $this->logger->warn("Artifact {$artifact_id}: skip permissions on artifact: " . $exception->getMessage()); } catch (Exception $exception) { $this->logger->error("Artifact {$artifact_id}: skip permissions on artifact: " . $exception->getMessage()); } }