/**
  * 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();
     }
 }
Exemple #2
0
 /**
  * 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);
 }
Exemple #3
0
 /**
  * @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());
 }