コード例 #1
0
 protected function refreshTerms(AdapterInterface $console, $percentile)
 {
     $filter = new NotTrashedCollectionFilter();
     $terms = $this->taxonomyManager->findAllTerms(true);
     $terms = $filter->filter($terms);
     foreach ($terms as $term) {
         if (rand(0, 100) > $percentile) {
             continue;
         }
         $instance = $term->getInstance();
         $normalizer = $this->normalizer->normalize($term);
         $routeName = $normalizer->getRouteName();
         $routeParams = $normalizer->getRouteParams();
         $router = $this->aliasManager->getRouter();
         $url = $router->assemble($routeParams, ['name' => $routeName]);
         $alias = $this->aliasManager->autoAlias('taxonomyTerm', $url, $term, $instance);
         $console->writeLine('Updated taxonomy term ' . $term->getName() . ' (' . $term->getId() . '): ' . $alias->getAlias());
     }
 }
コード例 #2
0
 protected function process(TaxonomyTermInterface $term)
 {
     if (!$term->hasParent()) {
         return;
     }
     if ($term->getId() === null) {
         $this->getAliasManager()->flush($term);
     }
     $instance = $term->getInstance();
     $normalizer = $this->normalizer->normalize($term);
     $routeName = $normalizer->getRouteName();
     $routeParams = $normalizer->getRouteParams();
     $router = $this->getAliasManager()->getRouter();
     $url = $router->assemble($routeParams, ['name' => $routeName]);
     $this->getAliasManager()->autoAlias('taxonomyTerm', $url, $term, $instance);
     foreach ($term->getChildren() as $child) {
         $this->process($child);
     }
 }
コード例 #3
0
 protected function normalize(Collection $collection)
 {
     $data = [];
     foreach ($collection as $entity) {
         $normalized = $this->normalizer->normalize($entity);
         $description = $normalized->getMetadata()->getDescription();
         try {
             $description = $this->renderService->render($description);
         } catch (RuntimeException $e) {
             // nothing to do
         }
         $authors = $entity->getRevisions()->map(function ($revision) {
             return $revision->getAuthor()->getId();
         });
         $description = $this->descriptionFilter->filter($description);
         $item = ['title' => $normalized->getTitle(), 'description' => $description, 'guid' => (string) $entity->getId(), 'keywords' => $normalized->getMetadata()->getKeywords(), 'categories' => $this->getCategories($entity), 'link' => $this->url()->fromRoute($normalized->getRouteName(), $normalized->getRouteParams()), 'lastModified' => $normalized->getMetadata()->getLastModified(), 'authorsCount' => count(array_unique($authors->toArray())), 'revisionsCount' => $entity->getRevisions()->count()];
         $data[] = $item;
     }
     return $data;
 }
コード例 #4
0
 /**
  * {@inheritDoc}
  */
 public function toDocument($object)
 {
     if (!$object instanceof EntityInterface) {
         throw new InvalidArgumentException(sprintf('Expected TaxonomyTermInterface but got %s', is_object($object) ? get_class($object) : gettype($object)));
     }
     $normalized = $this->normalizer->normalize($object);
     $id = $object->getId();
     $instance = $object->getInstance()->getId();
     $title = $normalized->getTitle();
     $content = $normalized->getContent();
     $keywords = $normalized->getMetadata()->getKeywords();
     $type = $object->getType()->getName();
     $link = $this->router->assemble($normalized->getRouteParams(), ['name' => $normalized->getRouteName()]);
     try {
         $content = $this->renderService->render($content);
     } catch (RuntimeException $e) {
         // Could not render -> nothing to do.
     }
     $content = $this->stripTags->filter($content);
     return new Document($id, $title, $content, $type, $link, $keywords, $instance);
 }