Пример #1
0
 private function processCopy(Tracker_Artifact_Changeset $from_changeset, PFUser $current_user, array $submitted_values)
 {
     $xml_artifacts = $this->getXMLRootNode();
     $this->xml_exporter->exportSnapshotWithoutComments($xml_artifacts, $from_changeset);
     $this->file_updater->update($xml_artifacts->artifact);
     $this->xml_updater->update($this->tracker, $xml_artifacts->artifact, $submitted_values, $current_user, $_SERVER['REQUEST_TIME']);
     $this->children_xml_exporter->exportChildren($xml_artifacts);
     $extraction_path = '';
     $artifact = $this->xml_importer->importOneArtifactFromXML($this->tracker, $xml_artifacts->artifact[0], $extraction_path);
     if ($artifact) {
         $this->artifacts_imported_mapping->add($from_changeset->getArtifact()->getId(), $artifact->getId());
         $this->children_xml_importer->importChildren($this->artifacts_imported_mapping, $xml_artifacts, $extraction_path, $artifact, $current_user);
         $this->addSummaryCommentChangeset($artifact, $current_user, $from_changeset);
         $this->redirectToArtifact($artifact);
     } else {
         $this->logsErrorAndRedirectToTracker('plugin_tracker', 'error_create_copy', $from_changeset->getArtifact()->getId());
     }
 }
Пример #2
0
 private function createLinksBetweenArtifacts(PFUser $user, Tracker_XML_Importer_ArtifactImportedMapping $artifacts_imported_mapping, Tracker_Artifact $root_artifact)
 {
     $comment_message = '';
     $send_notifications = false;
     $original_id = $artifacts_imported_mapping->getOriginal($root_artifact->getId());
     $children = $this->children_collector->getChildrenForParent($original_id);
     if (!$children) {
         return;
     }
     foreach ($children as $key => $original_child_id) {
         $children[$key] = $artifacts_imported_mapping->get($original_child_id);
     }
     $field_id = $root_artifact->getAnArtifactLinkField($user)->getId();
     $fields_data = array($field_id => array(Tracker_FormElement_Field_ArtifactLink::NEW_VALUES_KEY => implode(',', $children)));
     $root_artifact->createNewChangeset($fields_data, $comment_message, $user, $send_notifications, Tracker_Artifact_Changeset_Comment::TEXT_COMMENT);
     foreach ($children as $child_id) {
         $artifact = $this->artifact_factory->getArtifactById($child_id);
         $this->createLinksBetweenArtifacts($user, $artifacts_imported_mapping, $artifact);
     }
 }