setSubject() public method

public setSubject ( $subject = null )
示例#1
0
文件: Feed.php 项目: carew/carew
 public function onDocuments(CarewEvent $event)
 {
     $document = new Document();
     $document->setLayout('index.atom.twig')->setPath('feed/atom.xml')->setFilePath('feed/atom');
     $documents = $event->getSubject();
     $documents[$document->getFilePath()] = $document;
     $event->setSubject($documents);
     $globals = $event['globals'];
     $globals->documents = array_replace($globals->documents, $documents);
 }
示例#2
0
文件: TagsFeed.php 项目: carew/carew
 public function onDocuments(CarewEvent $event)
 {
     $documents = $event->getSubject();
     $globals = $event['globals'];
     foreach ($globals->tags as $tagName => $documentList) {
         $documentList = array_filter($documentList, function (Document $document) {
             return $document->isTypePost();
         });
         $document = new Document();
         $document->setLayout('index.atom.twig')->setPath(sprintf('tags/%s/feed/atom.xml', $this->inflector->urlize($tagName)))->setFilePath(sprintf('tags/%s/feed/atom', $tagName))->setVar('post', $documentList);
         $documents[$document->getFilePath()] = $document;
     }
     $event->setSubject($documents);
     $globals->documents = array_replace($globals->documents, $documents);
 }
示例#3
0
文件: Tags.php 项目: carew/carew
 public function onDocuments(CarewEvent $event)
 {
     $documents = $event->getSubject();
     $globals = $event['globals'];
     $tags = array();
     foreach ($globals->tags as $tagName => $documentList) {
         $tagDocument = new Document();
         $tagDocument->setLayout('default.html.twig')->setBody('{{ render_documents(carew.documents) }}')->setPath(sprintf('tags/%s.html', $this->inflector->urlize($tagName)))->setTitle('Tag #' . $tagName)->setFilePath('tags/' . $tagName)->setNavigations(array('tags', 'sub-tags'))->setVar('documents', $documentList);
         $documents[$tagDocument->getFilePath()] = $tagDocument;
         $tags[$tagDocument->getFilePath()] = $tagDocument;
     }
     $tagsDocument = new Document();
     $tagsDocument->setLayout('default.html.twig')->setBody('{{ render_documents(carew.tags) }}')->setPath('tags/index.html')->setTitle('Tags')->setFilePath('tags')->setNavigations('tags')->setVar('tags', $tags);
     $documents[$tagsDocument->getFilePath()] = $tagsDocument;
     $globals->documents = array_replace($globals->documents, $documents);
     $event->setSubject($documents);
 }
 /**
  * @param CarewEvent $event
  */
 public function onIndexes(CarewEvent $event)
 {
     /** @var array|Document[] $index */
     $indexes = $event->getSubject();
     $docs = $this->getDocumentsFromIndexes($indexes);
     foreach ($docs as $doc) {
         $data = $doc->getMetadatas();
         if (isset($data['author'])) {
             $author = $this->authors->getAuthor($data['author']);
             $author->addDocument($doc);
             $data['author'] = $author;
             $doc->setMetadatas($data);
         }
     }
     $authorsEvent = new CarewEvent(array());
     $event->getDispatcher()->dispatch(AuthorEvents::AUTHORS, $authorsEvent);
     $event->setSubject(array_merge($indexes, $authorsEvent->getSubject()));
 }
示例#5
0
文件: Twig.php 项目: carew/carew
 public function postRender(CarewEvent $event)
 {
     $documents = $event->getSubject();
     foreach ($documents as $document) {
         if (false === $document->getLayout()) {
             $document->setBodyDecorated($document->getBody());
             continue;
         }
         $this->setTwigGlobals($document);
         $layout = $document->getLayout();
         if (false === strpos($layout, '.twig')) {
             $layout .= '.html.twig';
         }
         $document->setBodyDecorated($this->twig->render($layout));
     }
     $event->setSubject($documents);
 }