/** * {@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; }
/** * @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(); }