/**
  * {@inheritdoc}.
  */
 public function load($sitemap)
 {
     // todo rewrite query when https://github.com/symfony-cmf/CoreBundle/issues/126 is ready
     $documentsCollection = $this->manager->createQuery('SELECT * FROM [nt:unstructured] WHERE (visible_for_sitemap = true)', QueryInterface::JCR_SQL2)->execute();
     $documents = array();
     // the chain provider does not like collections as we array_merge in there
     foreach ($documentsCollection as $document) {
         $documents[] = $document;
     }
     return $documents;
 }
Ejemplo n.º 2
0
 /**
  * @dataProvider queryStatements
  */
 public function testQuery($statement, $rowCount)
 {
     if ($rowCount == -1) {
         // magic to tell this is an invalid query
         $this->setExpectedException('PHPCR\\Query\\InvalidQueryException');
     }
     $query = $this->dm->createQuery($statement, \PHPCR\Query\QueryInterface::JCR_SQL2);
     $this->assertInstanceOf('Doctrine\\ODM\\PHPCR\\Query\\Query', $query);
     $result = $query->execute();
     $this->assertCount($rowCount, $result);
 }
 /**
  * Connect to Jackrabbit, and filter pages by tags
  *
  * @param $tags array with stanbol references
  * @param $currentUrl string current url
  * @param $lang string language
  *
  * @return array with links to pages
  */
 protected function getPagesByTags($tags, $currentUrl, $lang)
 {
     $this->basePath = $this->basePath . '/' . $lang;
     foreach ($tags as $i => $tag) {
         $tags[$i] = 'referring.tags = ' . $this->dm->quote($tag);
     }
     $sql = 'SELECT routes.* FROM [nt:unstructured] AS routes';
     $sql .= ' INNER JOIN [nt:unstructured] AS referring ON referring.[jcr:uuid] = routes.[routeContent]';
     $sql .= ' WHERE (ISDESCENDANTNODE(routes, ' . $this->dm->quote($this->basePath) . ') OR ISSAMENODE(routes, ' . $this->dm->quote($this->basePath) . '))';
     $sql .= ' AND (' . implode(' OR ', $tags) . ')';
     $query = $this->dm->createQuery($sql, QueryInterface::JCR_SQL2);
     $query->setLimit(-1);
     $pages = $this->dm->getDocumentsByQuery($query);
     $links = array();
     foreach ($pages as $page) {
         if ($page instanceof Route && $page->getRouteContent()) {
             $url = $this->router->generate('', array('_locale' => $lang, 'content' => $page->getRouteContent()), true);
             if (preg_replace('/^\\/|\\/$/', '', $url) !== preg_replace('/^\\/|\\/$/', '', $currentUrl)) {
                 $label = $page->getRouteContent()->title;
                 $links[] = array('url' => $url, 'label' => $label);
             }
         }
     }
     return $links;
 }
 /**
  * Wrapper to fetch the sitemap documents from database.
  *
  * @return object[]
  *
  * @throws QueryException
  */
 protected function fetchSitemapDocuments()
 {
     // todo rewrite query when https://github.com/symfony-cmf/CoreBundle/issues/126 is ready
     return $this->manager->createQuery("SELECT * FROM [nt:unstructured] WHERE (visible_for_sitemap = true)", QueryInterface::JCR_SQL2)->execute();
 }