Ejemplo n.º 1
0
 /**
  * @param Document $doc
  * @return \stdClass
  */
 private function getNodeData(Document $doc)
 {
     $node = new \stdClass();
     $node->{'jcr:primaryType'} = 'prismic:' . $doc->getType();
     $node->{':jcr:primaryType'} = PropertyType::STRING;
     $node->{'jcr:mixinTypes'} = array('mix:referenceable');
     $node->{':jcr:mixinTypes'} = PropertyType::STRING;
     $node->{'jcr:uuid'} = $doc->getId();
     $node->{':jcr:uuid'} = PropertyType::NAME;
     $node->slug = $doc->getSlug();
     $node->{':slug'} = PropertyType::STRING;
     $node->slugs = (array) $doc->getSlugs();
     $node->{':slugs'} = PropertyType::STRING;
     $node->tags = (array) $doc->getTags();
     $node->{':tags'} = PropertyType::STRING;
     foreach ($doc->getFragments() as $name => $fragment) {
         // TODO model StructuredText/ImageView/Embed/Group etc. as children
         switch (get_class($fragment)) {
             case 'Prismic\\Fragment\\Date':
                 $node->{$name} = $fragment->asText();
                 $node->{":{$name}"} = PropertyType::DATE;
                 break;
             case 'Prismic\\Fragment\\Number':
                 $node->{$name} = $fragment->asText();
                 $node->{":{$name}"} = PropertyType::LONG;
                 break;
             case 'Prismic\\Fragment\\Image':
                 $node->{$name} = $fragment->asText();
                 $node->{":{$name}"} = PropertyType::BINARY;
                 break;
             case 'Prismic\\Fragment\\ImageView':
                 $node->{":{$name}"} = PropertyType::URI;
                 $node->{$name} = $fragment->getUrl();
                 break;
             default:
                 $node->{$name} = $fragment->asText();
                 $node->{":{$name}"} = PropertyType::STRING;
         }
     }
     return $node;
 }
 /**
  * @param Document $doc
  *
  * @return string
  */
 public function resolveLink(Document $doc)
 {
     $link = new DocumentLink($doc->getId(), $doc->getType(), $doc->getTags(), $doc->getSlug(), false);
     return $this->getLinkResolver()->resolve($link);
 }
Ejemplo n.º 3
0
 /**
  * This method convert a document into document link
  *
  * @param Document $document The document
  *
  * @return DocumentLink The document link
  */
 private function asLink($document)
 {
     return new DocumentLink($document->getId(), $document->getUid(), $document->getType(), $document->getTags(), $document->getSlug(), $document->getFragments(), false);
 }
 /**
  * Given a Prismic document, return an array suitable for generating a sitemap entry or null
  * @param  Document   $document
  * @return array|null
  */
 protected function documentToArray(Document $document)
 {
     $type = $document->getType();
     $data = array();
     /**
      * If we can't work out the href from the link resolver, we're screwed
      */
     $link = $this->linkGenerator->generate($document);
     $url = null;
     try {
         $url = $this->linkResolver->resolve($link);
     } catch (RoutingException $e) {
         // Likely, this URL needs additional parameters to be assembled
     }
     if (!$url) {
         return null;
     }
     $data['uri'] = $url;
     foreach ($this->propertyMap as $property => $fragment) {
         if (empty($fragment)) {
             continue;
         }
         $fragment = sprintf('%s.%s', $type, $fragment);
         $frag = $document->get($fragment);
         if ($frag) {
             $data[$property] = $frag->asText();
         }
     }
     return $data;
 }
Ejemplo n.º 5
0
 /**
  * Return a new link instance to the given Document
  * @param Document $doc
  * @return DocumentLink
  */
 public function getDocumentLink(Document $doc)
 {
     return new DocumentLink($doc->getId(), $doc->getUid(), $doc->getType(), $doc->getTags(), $doc->getSlug(), array(), false);
 }