/** * Writes the contents of this SourceDescription to an XML writer. The startElement is expected to be already provided. * * @param \XMLWriter $writer The XML writer. */ public function writeXmlContents(\XMLWriter $writer) { if ($this->about) { $writer->writeAttribute('about', $this->about); } if ($this->mediaType) { $writer->writeAttribute('mediaType', $this->mediaType); } if ($this->resourceType) { $writer->writeAttribute('resourceType', $this->resourceType); } parent::writeXmlContents($writer); if ($this->citations) { foreach ($this->citations as $i => $x) { $writer->startElementNs('gx', 'citation', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->mediator) { $writer->startElementNs('gx', 'mediator', null); $this->mediator->writeXmlContents($writer); $writer->endElement(); } if ($this->sources) { foreach ($this->sources as $i => $x) { $writer->startElementNs('gx', 'source', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->analysis) { $writer->startElementNs('gx', 'analysis', null); $this->analysis->writeXmlContents($writer); $writer->endElement(); } if ($this->componentOf) { $writer->startElementNs('gx', 'componentOf', null); $this->componentOf->writeXmlContents($writer); $writer->endElement(); } if ($this->titles) { foreach ($this->titles as $i => $x) { $writer->startElementNs('gx', 'title', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->titleLabel) { $writer->startElementNs('gx', 'titleLabel', null); $this->titleLabel->writeXmlContents($writer); $writer->endElement(); } if ($this->notes) { foreach ($this->notes as $i => $x) { $writer->startElementNs('gx', 'note', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->attribution) { $writer->startElementNs('gx', 'attribution', null); $this->attribution->writeXmlContents($writer); $writer->endElement(); } if ($this->sortKey) { $writer->startElementNs('gx', 'sortKey', null); $writer->text($this->sortKey); $writer->endElement(); } if ($this->descriptions) { foreach ($this->descriptions as $i => $x) { $writer->startElementNs('gx', 'description', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->identifiers) { foreach ($this->identifiers as $i => $x) { $writer->startElementNs('gx', 'identifier', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->created) { $writer->startElementNs('gx', 'created', null); $writer->text($this->created); $writer->endElement(); } if ($this->modified) { $writer->startElementNs('gx', 'modified', null); $writer->text($this->modified); $writer->endElement(); } if ($this->coverage) { foreach ($this->coverage as $i => $x) { $writer->startElementNs('gx', 'coverage', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->rights) { foreach ($this->rights as $i => $x) { $writer->startElementNs('gx', 'rights', null); $writer->text($x); $writer->endElement(); } } if ($this->fields) { foreach ($this->fields as $i => $x) { $writer->startElementNs('gx', 'field', null); $x->writeXmlContents($writer); $writer->endElement(); } } if ($this->repository) { $writer->startElementNs('gx', 'repository', null); $this->repository->writeXmlContents($writer); $writer->endElement(); } if ($this->descriptorRef) { $writer->startElementNs('gx', 'descriptor', null); $this->descriptorRef->writeXmlContents($writer); $writer->endElement(); } }
/** * Deletes the specified media reference from the current person. * * @param \Gedcomx\Source\SourceReference $mediaReference * @param \Gedcomx\Rs\Client\Options\StateTransitionOption $option,... * * @return \Gedcomx\Rs\Client\PersonState * @throws \Gedcomx\Rs\Client\Exception\GedcomxApplicationException */ public function deleteMediaReference(SourceReference $mediaReference, StateTransitionOption $option = null) { $link = $mediaReference->getLink(Rel::MEDIA_REFERENCE); $link = $link == null ? $mediaReference->getLink(Rel::SELF) : $link; if ($link == null || $link->getHref() == null) { throw new GedcomxApplicationException("Media reference cannot be deleted: missing link."); } $request = $this->createAuthenticatedGedcomxRequest('DELETE', $link->getHref()); return $this->stateFactory->createState('PersonState', $this->client, $request, $this->passOptionsTo('invoke', array($request), func_get_args()), $this->accessToken); }
/** * @link https://familysearch.org/developers/docs/api/tree/Delete_Couple_Relationship_Source_Reference_usecase */ public function testDeleteCoupleRelationshipSourceReference() { $factory = new FamilyTreeStateFactory(); $this->collectionState($factory); /** @var FamilyTreePersonState $husband */ $husband = $this->createPerson('male'); $this->assertEquals(HttpStatus::CREATED, $husband->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $husband)); $husband = $husband->get(); $this->assertEquals(HttpStatus::OK, $husband->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $husband)); /** @var FamilyTreePersonState $wife */ $wife = $this->createPerson('female'); $this->assertEquals(HttpStatus::CREATED, $wife->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $wife)); /** @var FamilyTreeRelationshipState $relationship */ $relationship = $husband->addSpouse($wife); $this->assertEquals(HttpStatus::CREATED, $relationship->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $relationship)); $this->queueForDelete($relationship); $relationship = $relationship->get(); $this->assertEquals(HttpStatus::OK, $relationship->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $relationship)); $sourceState = $this->createSource(); $reference = new SourceReference(); $reference->setDescriptionRef($sourceState->getSelfUri()); $reference->setAttribution(new Attribution(array("changeMessage" => $this->faker->sentence(6)))); $sourceRef = $relationship->addSourceReference($reference); $this->assertEquals(HttpStatus::CREATED, $sourceRef->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . ':' . __LINE__, $sourceRef)); $relationship->loadSourceReferences(); $this->assertNotEmpty($relationship->getRelationship()->getSources()); $state = $relationship->deleteSourceReference($relationship->getSourceReference()); $this->AssertNotNull($state->ifSuccessful()); $this->assertEquals(HttpStatus::NO_CONTENT, $state->getResponse()->getStatusCode()); $relationship = $relationship->get(); $relationship->loadSourceReferences(); $this->assertEmpty($relationship->getRelationship()->getSources()); }